You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

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 MASQUERADE
    
    注意这里的enp0s3要换成你的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 enp0s3
    
    这里enp0s8是你的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

火山引擎 最新活动