🧭 路由与 iptables 配置指南

✅ 目标说明

我们希望通过一台 Linux 主机(IP: 10.10.4.125)作为中间跳板,使得另一台主机(IP: 10.10.7.178)能够访问目标网段 172.16.0.0/16。这需要配置:

  • IP 转发(Routing)
  • 路由表配置
  • NAT(MASQUERADE)
  • FORWARD 链规则

🔧 步骤一:启用 IP 转发

确保 Linux 内核启用了 IP 转发功能。

临时开启(重启后失效)

sudo sysctl -w net.ipv4.ip_forward=1

永久开启(写入配置文件)

编辑 /etc/sysctl.conf 文件:

sudo nano /etc/sysctl.conf

取消注释或添加如下行:

net.ipv4.ip_forward = 1

然后应用配置:

sudo sysctl -p

🔁 步骤二:配置 iptables 规则

配置 MASQUERADE 规则

为了让 10.10.7.178 的流量可以通过本机的 tun0 接口出站并伪装为本机地址,需配置 MASQUERADE。

sudo iptables -t nat -A POSTROUTING -s 10.10.7.178 -o tun0 -j MASQUERADE

配置 FORWARD 链规则

为了允许 10.10.7.178 访问 172.16.0.0/16 网段,我们需要在 FORWARD 链中添加允许规则。

允许正向连接

sudo iptables -A FORWARD -s 10.10.7.178 -d 172.16.0.0/16 -j ACCEPT

允许反向连接(已建立连接)

sudo iptables -A FORWARD -d 10.10.7.178 -s 172.16.0.0/16 -m state --state RELATED,ESTABLISHED -j ACCEPT

保存 iptables 规则(持久化)

要使这些规则在系统重启后仍然有效,需将其保存到配置文件中。

使用 iptables-persistent

安装 iptables-persistent

sudo apt update
sudo apt install iptables-persistent

安装过程中会提示是否保存当前规则,选择 "Yes"。

或者手动保存:

sudo netfilter-persistent save

默认路径:

  • IPv4 规则保存至:/etc/iptables/rules.v4
  • IPv6 规则保存至:/etc/iptables/rules.v6

手动保存

如果你未使用 iptables-persistent,可手动保存规则:

sudo iptables-save > /etc/iptables.up.rules

并在 /etc/rc.local 中添加开机恢复命令:

iptables-restore < /etc/iptables.up.rules

🔗 步骤三:配置路由

确保你的路由表正确配置以支持上述网络拓扑。

添加静态路由

假设你需要从 10.10.7.178 到达 172.16.0.0/16 网段的数据包通过 10.10.4.125 路由出去,你可以这样做:

sudo ip route add 172.16.0.0/16 via 10.10.4.125 dev [INTERFACE]

其中 [INTERFACE] 是你要使用的网络接口名称(例如 eth0, ens33 等等)。

查看现有路由表

查看当前的路由表:

ip route show

🔄 可选:添加默认 MASQUERADE(可选)

如果你想让所有来自 10.10.7.0/24 网段的主机都通过 tun0 出去:

sudo iptables -t nat -A POSTROUTING -s 10.10.7.0/24 -o tun0 -j MASQUERADE

🧪 验证规则是否生效

查看当前的 iptables 规则:

sudo iptables -L -n -v
sudo iptables -t nat -L -n -v

查看路由表(确保路由可达):

ip route show

📌 总结

功能命令
启用 IP 转发echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf && sysctl -p
MASQUERADE 规则iptables -t nat -A POSTROUTING -s 10.10.7.178 -o tun0 -j MASQUERADE
FORWARD 规则iptables -A FORWARD -s 10.10.7.178 -d 172.16.0.0/16 -j ACCEPT
iptables -A FORWARD -d 10.10.7.178 -s 172.16.0.0/16 -m state --state RELATED,ESTABLISHED -j ACCEPT
保存 iptables 规则netfilter-persistent saveiptables-save > /etc/iptables.up.rules
添加静态路由ip route add 172.16.0.0/16 via 10.10.4.125 dev [INTERFACE]

以上步骤按照功能类型整理,先进行 IP 转发和 iptables 配置,再进行路由配置,便于理解和操作。如果有任何问题或进一步的需求,请随时告知!