当前位置: 首页>>技术教程>>正文


networking – 如何将我的 linux box 设置为路由器来转发 ip 数据包?

,

问题描述

我正在做一个关于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

我的路由表是这样的:

# 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

但是,当我尝试从 192.168.100.25 ping 到 192.168.101.47 时,它不起作用。

最佳方案

您需要使用 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

参见 man iptables 了解更多详情,或在互联网上搜索 howto 文章,例如 How to set up a NAT router on a Linux-based computer

这是 Linux IP Masquerade HOWTO 详细讨论该主题。

您还应该确保没有其他规则(例如在 FORWARD 链中)覆盖上述 ACCEPT 规则。如果有,您可能想删除它们。

次佳方案

您需要添加到 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

并在客户端 192.168.101.47

ip route 192.168.100.0/24 via 192.168.101.1

(这仅适用于启用转发,没有 iptables)。

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/12237.html,未经允许,请勿转载。