本篇主要讲述linux系统下软路由的配置过程,不限于All in One 主机,单纯的制作软路由也适用。
在客户机上使用ssh工具连接All in One 主机,并以root账号登录
1.安装软路由需要的工具
apt install -y net-tools
2.查看网卡信息
ifconfig -a
可以看到,All in One 主机上是两个网口,分别是enp160和enp192,我想把enp160改为eth0作为wan口,把enp192改为eth1作为lan口
3.修改网卡名enp160,enp192(每台电脑都不一样,看清楚自己的)为 eth0,eth1 方便下面设置
修改 /etc/default/grub文件
修改GRUB_CMDLINE_LINUX=""为GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
ssh工具输入:
grub-mkconfig -o /boot/grub/grub.cfg
更新系统内核
在/etc/netplan/目录下添加00-installer-config.yaml文件。
文件为以下内容:
network: ethernets: eth0: dhcp4: true eth1: dhcp4: false addresses: - 192.168.99.1/24 version: 2
执行:
netplan apply
使配置文件生效
关闭All in One 主机,把原来插在eth1口的网线换到eth0口继续设置
启动All in One 主机,使用root账号登录All in One 主机查看网络信息。
会发现eth0口还是自动获取,不过ip改了(eth0口是以后接光猫的,只是目前暂时接路由上网)
下面看下作为lan口的网卡信息
可以看到eth1口已经被设置成了静态ip,192.168.99.1以后将作为All in One 主机的ip地址,同样也是网关,内网网段为192.168.99.0/24
下面继续配置路由的dhcp
注意,这里使用ssh工具连接的时候,ip已经换了,不是原来的ip,也不是分配的192.168.99.1,是eth0口自动获取的ip。
ssh工具输入:
apt install -y isc-dhcp-server
安装dhcp
修改配置文件/etc/default/isc-dhcp-server
把
INTERFACESv4=""
INTERFACESv6=""
修改成
INTERFACESv4="eth1"
INTERFACESv6="eth1"
修改/etc/dhcp/dhcpd.conf
把
option domain-name-servers ns1.example.org, ns2.example.org;
修改成
option domain-name-servers 119.29.29.29,114.114.114.114;
并末尾增加以下内容
subnet 192.168.99.0 netmask 255.255.255.0 { range 192.168.99.2 192.168.99.254; option domain-name-servers 192.168.99.1; option subnet-mask 255.255.255.0; option broadcast-address 192.168.99.255; option routers 192.168.99.1; }
修改/etc/dhcp/dhcpd6.conf
末尾增加以下内容
subnet6 2001:db8:0:1::/64 { # Range for clients range6 2001:db8:0:1::129 2001:db8:0:1::254; # Range for clients requesting a temporary address range6 2001:db8:0:1::/64 temporary; # Additional options option dhcp6.name-servers fec0:0:0:1::1; option dhcp6.domain-search "domain.example"; # Prefix range for delegation to sub-routers prefix6 2001:db8:0:100:: 2001:db8:0:f00:: /56; # Example for a fixed host address host specialclient { host-identifier option dhcp6.client-id 00:01:00:01:4a:1f:ba:e3:60:b9:1f:01:23:45; fixed-address6 2001:db8:0:1::127; } }
重启dhcp server
ssh输入:
systemctl start isc-dhcp-server
配置防火墙
ufw allow 22 ufw logging on
修改/etc/default/ufw
把
DEFAULT_FORWARD_POLICY="DROP"
修改为
DEFAULT_FORWARD_POLICY="ACCEPT"
修改/etc/sysctl.conf
把
#net.ipv4.ip_forward=1
修改为
net.ipv4.ip_forward=1
ssh输入:
sysctl -p
让以上配置生效
修改/etc/ufw/before.rules文件,
在“# Don't delete these required lines, otherwise there will be errors之前增加以下内容
*nat :POSTROUTING ACCEPT [0:0] # Forward traffic through eth0 - Change to match you out-interface -A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE # don't delete the 'COMMIT' line or these nat table rules won't # be processed COMMIT
在loopback之后,增加eth1部分内容
在
# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT
下面添加:
# allow all on lan, eth1 -A ufw-before-input -i eth1 -j ACCEPT -A ufw-before-output -o eth1 -j ACCEPT
ssh工具输入以下命令重启防火墙
ufw disable ufw enable
配置dns
停用系统自带dns
ssh工具输入:
systemctl disable systemd-resolved systemctl stop systemd-resolved
删除符号链接的resolv.conf文件
ssh工具输入:
rm /etc/resolv.conf echo "nameserver 8.8.8.8" > /etc/resolv.conf
好了,如果是光猫拨号,All in One 主机采用路由模式,那么配置就完成了,如果需要All in One 主机拨号,那么就继续看下面关于拨号的内容
pppoe拨号上网(路由模式,也就是光猫拨号。跳过此步骤)
ssh输入:
apt install -y pppoeconf
安装拨号工具
猫网线连接到eth0, 执行 pppoeconf开始自动配置拨号相关参数,需要知道拨号账号和密码
拨号成功后,软路由可以上网。
可能遇到客户机上不了网
修改/etc/ufw/before.rules文件中的网卡,因为拨号后网卡是ppp0, 如果是自动上网方式则使用eth0
将-A POSTROUTING -s 192.168.99.0/24 -o eth0 -j MASQUERADE修改为-A POSTROUTING -s 192.168.99.0/24 -o ppp0 -j MASQUERADE
至此,所有的设置完成,然后按照下图连接网线
把客户机设置为自动获取,如果上述内容完全正确,就应该能获取到192.168.99. x网段的ip。并且可以顺利上网。