实例描述:
双千兆网卡x86架构主机,Ubuntu Linux 22.04 Desktop版(Server版本同理),enp1s0连接需要认证的校园网(可能有设备最大连接数限制),enp2s0连接路由器。此时假设Ubuntu Linux已经通过校园网的认证并设置无感上网。
需求
让enp1s0的网络转发到enp2s0的路由器里面,无需认证实现上网冲浪。
一、设置网卡
使用ifconfig
查看网卡信息,如图:
在netplan
中设置网卡:
sudo nano /etc/netplan/00-installer-config.yaml
yaml 文件名称可能不同,tab出来哪个就是哪个。
配置文件修改如下,其中enp2s0连接路由器,address是内网局域网的网关,是自己定的。无线网卡设置不在这里,默认就行。
让enp1s0使用DHCP服务获取校园网给定的ip地址,enp2s0使用静态ip并分配网段,可以为192.168.1.1/24
,172.10.0.1/24
,10.0.0.1/24
等私网ip,子网掩码分别为255.255.255.0
,255.255.0.0
,255.0.0.0
,子网掩码代表了最大可分配给设备ip的数量。
ctrl + X 按下Y回车保存退出
使配置生效:
sudo netplan apply
二、开启内核转发
编辑/etc/sysctl.conf
配置文件,
sudo nano /etc/sysctl.conf
找到#net.ipv4.ip_forward=1
这一行,去掉注释,改为 net.ipv4.ip_forward=1
使生效:
sudo sysctl -p
三、配置NAT转发规则
sudo iptables -t nat -A POSTROUTING -s 172.168.2.0/24 -o enp1s0 -j MASQUERADE
使用sudo iptables -t nat -nL
查看配置规则,sudo iptables -t nat -F
清空规则。
这条命令让来自 172.168.2.0/24
网段的所有流量(all 协议),在离开本机时会进行 IP 伪装(MASQUERADE),通常用于共享本机网络。
让 172.168.2.0/24
网段的设备通过本机的公网 IP 访问外部网络。
然而这是临时的,服务器重启后便会失效,因此使用iptables-persistent
工具永久保存。
sudo apt install iptables-persistent
netfilter-persistent save
四、配置DHCP服务
使用isc-dhcp-server
sudo apt install isc-dhcp-server -y
修改配置文件
sudo nano /etc/default/isc-dhcp-server
第一个ipv4协议改为要连接路由器网口的名称。
接下来修改dhcpd.conf
文件
sudo nano /etc/dhcp/dhcpd.conf
前面的全部注释(注意确保所有内容全为#注释,否则将影响路由规则),添加以下内容在最后:
subnet 172.168.2.0 netmask 255.255.255.0 {range 172.168.2.10 172.168.2.233;option routers 172.168.2.1;option domain-name-servers 172.168.2.1;option broadcast-address 172.168.2.255;default-lease-time 600;max-lease-time 7200;
}
最后重启DHCP服务
sudo service isc-dhcp-server restart
大功告成,试着运行sudo systemctl status isc-dhcp-server
查看运行情况
出现active(running)
即代表DHCP服务正常运行,从下面的输出能看到路由器通过DHCP获取到的IP地址和路由器WAN网口的MAC地址。
最后把DHCP服务器加入开机自启计划
sudo systemctl enable isc-dhcp-server
验证一下
sudo systemctl enable isc-dhcp-server
出现enable则代表已经加入开机自启。
四、测试
ping 一下enp1s0获取到的DNS和网关,看看能不能通。
ping一下enp2s0的通过enp1s0获取到的DNS和网关,看看能不能通。
ping一下外部网络,如cn.bing.com,www.baidu.com, 看看能不能通。
以上三者全部返回数据包,则任务圆满完成。