🧭 路由与 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 save 或 iptables-save > /etc/iptables.up.rules |
添加静态路由 | ip route add 172.16.0.0/16 via 10.10.4.125 dev [INTERFACE] |
以上步骤按照功能类型整理,先进行 IP 转发和 iptables 配置,再进行路由配置,便于理解和操作。如果有任何问题或进一步的需求,请随时告知!