Ubuntu Server 22.04双网卡配置疑问:LAN端DHCP客户端无法访问互联网
Ubuntu Server 22.04双网卡配置疑问:LAN端DHCP客户端无法访问互联网
兄弟,你这情况我太熟了!之前帮朋友搭过几乎一样的环境,其实就是几个容易被忽略的基础配置没到位,咱们一个个来排查:
首先,IP转发功能默认是关的,这是核心中的核心——你的服务器得有“把LAN口的流量转发到WAN口”的权限,不然客户端的请求到了服务器就卡壳了:
- 先临时开了试试(重启服务器会失效):
sudo sysctl -w net.ipv4.ip_forward=1 - 要永久生效的话,编辑
/etc/sysctl.conf,找到net.ipv4.ip_forward=1这行,把前面的注释符号#删掉,然后执行sudo sysctl -p让配置立刻生效。
然后,检查你的DHCP服务器配置,有没有给客户端分配正确的网关和DNS:
- 如果你用的是主流的
isc-dhcp-server,配置文件在/etc/dhcp/dhcpd.conf,一定要确保里面有这两行(把IP换成你自己LAN网卡的静态IP):option routers 192.168.2.1; # 这里填LAN网卡的IP,也就是客户端的默认网关 option domain-name-servers 8.8.8.8, 1.1.1.1; # 可以用公共DNS,或者ISP提供的DNS - 要是用的是systemd自带的DHCP服务,就得对应调整网络配置文件里的DHCP选项,核心也是让客户端的网关指向LAN网卡的IP。
接下来必须配NAT(网络地址转换),LAN里的私有IP(比如192.168.2.x)没法直接访问公网,得通过NAT转换成WAN口的公网IP才行:
- 先临时配置一条规则(重启失效):
注意这里的sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADEenp0s3要换成你的WAN网卡名称,不确定的话用ip a命令就能看到(比如eth0、ens18这类) - 怕重启后规则丢了?那就装个iptables-persistent来保存规则:
sudo apt install iptables-persistent sudo iptables-save > /etc/iptables/rules.v4
最后检查防火墙,别让它把转发的流量拦了:
- 如果你用的是Ubuntu默认的ufw,先编辑
/etc/default/ufw,把DEFAULT_FORWARD_POLICY="DROP"改成DEFAULT_FORWARD_POLICY="ACCEPT" - 然后重启ufw生效:
sudo ufw reload - 另外还要确保LAN到WAN的转发流量被允许,比如:
这里sudo ufw allow in on enp0s8 out on enp0s3enp0s8是你的LAN网卡名,enp0s3是WAN网卡名,记得替换成自己的。
做完这些之后,重启一下DHCP服务(比如sudo systemctl restart isc-dhcp-server),然后去客户端那边释放再重新获取IP(比如ip addr flush dev eth0再执行dhclient),应该就能上网了。
对了,还有个小提醒:LAN网卡的静态IP网段和WAN网卡的网段绝对不能重叠!比如WAN是192.168.1.x,LAN就设成192.168.2.x,不然会出各种奇怪的问题。
备注:内容来源于stack exchange,提问作者Rato




