You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Ubuntu 22.04下如何配置eth0接口流量转发:除指定端口外全部路由至特定IP(支持后续扩展排除端口列表)

Ubuntu 22.04下如何配置eth0接口流量转发:除指定端口外全部路由至特定IP(支持后续扩展排除端口列表)

嘿,我来帮你搞定这个流量转发的需求!针对Ubuntu 22.04,用iptables来配置是最灵活的方案,完全支持后续扩展排除端口列表,下面一步步来操作:

第一步:开启内核IP转发功能

Ubuntu默认关闭了IP转发,得先打开它才能实现流量转发:

  • 临时生效(重启后失效):
    sudo sysctl -w net.ipv4.ip_forward=1
    
  • 永久生效(重启后依然有效):
    编辑/etc/sysctl.conf文件,找到net.ipv4.ip_forward=1这一行,去掉前面的注释符号#,然后执行:
    sudo sysctl -p
    

第二步:配置iptables转发规则

iptables的规则匹配是从上到下的,所以排除端口的规则要放在最前面,这样这些端口的流量会优先被匹配到,不会被转发到目标IP。

1. 添加排除端口的规则(以TCP为例,UDP同理)

现在先处理你提到的3666端口,如果是TCP流量:

sudo iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 3666 -j ACCEPT

如果需要支持UDP的3666端口,再加一条:

sudo iptables -A PREROUTING -t nat -i eth0 -p udp --dport 3666 -j ACCEPT

2. 配置默认转发规则

把eth0进来的其他所有TCP/UDP流量转发到10.8.0.5:

# TCP流量转发
sudo iptables -A PREROUTING -t nat -i eth0 -p tcp -j DNAT --to-destination 10.8.0.5
# UDP流量转发
sudo iptables -A PREROUTING -t nat -i eth0 -p udp -j DNAT --to-destination 10.8.0.5

3. 允许转发流量通过FORWARD链

光配置NAT还不够,得让系统允许这些流量被转发:

sudo iptables -A FORWARD -i eth0 -d 10.8.0.5 -p tcp -j ACCEPT
sudo iptables -A FORWARD -i eth0 -d 10.8.0.5 -p udp -j ACCEPT

4. 配置SNAT确保返回流量正常

为了让目标IP 10.8.0.5返回的流量能正确回到原请求方,需要配置源地址转换(假设你的VPN隧道接口是tun0,如果不是请替换成实际接口名):

sudo iptables -A POSTROUTING -t nat -o tun0 -d 10.8.0.5 -j MASQUERADE

第三步:持久化iptables规则

Ubuntu重启后iptables规则会丢失,所以要把规则保存下来:

  1. 安装iptables持久化工具:
    sudo apt update && sudo apt install iptables-persistent -y
    
    安装过程中会提示是否保存当前的IPv4/IPv6规则,选Yes即可。
  2. 后续修改规则后,执行以下命令保存:
    sudo netfilter-persistent save
    

第四步:后续扩展排除端口列表

以后要添加新的排除端口(比如8080),只需要把新的ACCEPT规则插入到PREROUTING链的最前面(确保优先匹配):

# 新增TCP排除端口8080
sudo iptables -I PREROUTING -t nat -i eth0 -p tcp --dport 8080 -j ACCEPT
# 如果是UDP端口
sudo iptables -I PREROUTING -t nat -i eth0 -p udp --dport 8080 -j ACCEPT

然后执行sudo netfilter-persistent save保存规则即可。

注意事项

  • 确认你的VPN隧道接口是否为tun0,可以用ip addr命令查看。
  • 如果机器上启用了ufw防火墙,需要确保ufw允许IP转发,或者调整ufw的规则避免冲突。
  • 测试配置是否生效:可以用另一台机器访问该Ubuntu的eth0 IP的非排除端口,看是否能转发到10.8.0.5;访问3666端口则应该由本机处理。

备注:内容来源于stack exchange,提问作者Михаил Агафонов

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.22 12:24:53