Yis*_*ang 27 networking ip-forward
我正在做一个关于ip数据包转发的网络实验,但我不知道它为什么起作用。
我有一台带有两个网络接口的 linux 机器,eth0 和 eth1 都有静态 IP 地址(eth0:192.168.100.1,eth1:192.168.101.2)。
我的目标很简单,我只想将目标在子网 192.168.100.0/24 中的 eth1 的 ip 数据包转发到 eth0,并将目标在子网 192.168.101.0/24 中的 eth0 中的 ip 数据包转发到 eth1。
我打开了 ip 转发:
sysctl -w net.ipv4.ip_forward=1
Run Code Online (Sandbox Code Playgroud)
我的路由表是这样的:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.100.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.101.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试从 192.168.100.25 ping 到 192.168.101.47 时,它不起作用。
Ser*_*gey 23
您需要使用命令添加转发规则iptables,如下所示:
modprobe iptable_nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -A FORWARD -i eth1 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
man iptables有关更多详细信息,请参阅Internet 或在 Internet 上搜索操作方法文章,例如如何在基于 Linux 的计算机上设置 NAT 路由器
这是Linux IP Masquerade HOWTO,详细讨论了该主题。
您还应该确保没有其他规则(例如在FORWARD链中)覆盖上述ACCEPT规则。如果有,您可能想删除它们。
小智 5
您需要添加到 192.168.100.25 和 192.168.101.47 的路由。
如果您的转发服务器具有 IP 192.168.100.1 和 192.168.101.1,您将添加客户端 192.168.100.25
ip route 192.168.101.0/24 via 192.1268.100.1
Run Code Online (Sandbox Code Playgroud)
并在客户端 192.168.101.47
ip route 192.168.100.0/24 via 192.168.101.1
Run Code Online (Sandbox Code Playgroud)
(这仅适用于启用转发,没有 iptables)。