通过 Linux 进行路由

通过 Linux 进行路由

我有一个单独的网络,其中一台机器的 IP 地址为 10.10.10.4。另一台机器(网关机器)有两个 NIC:eth0 和 eth1。 eth1(10.10.10.10)连接内网机器,与外界无直接连接。 eth0(192.168.1.171)连接到外部物理适配器。

现在,我想与 IP 地址为 192.168.1.185 的外网机器进行通信。我在内网机器中添加了默认网关,如下所示:

$ 路由添加默认网关 10.10.10.10

(外部网络的默认网关是192.168.1.1)。我还在网关机器中添加了默认网关,如下所示:

$ 路由添加默认网关 192.168.1.171 将交通引导至外界。

对于传入流量,我还使用路由命令包含了网络:

$ 路由添加-net 10.10.10.0 网络掩码 255.255.255.0 gw 1​​0.10.10.10

网关机器还可以使用 iperf 等直接与外部机器(192.168.1.185)通信。

现在我面临的问题是,当我通过内部网络机器(10.10.10.4)ping 外部机器(192.168.1.185)时;我能够看到发往外部机器的数据包eth1内网机器(10.10.10.4)也能ping通10.10.10.10和192.168.1.171(eth0的IP)。

但是数据包无法到达 eth0 接口。因此,内部网络机器无法与外部网络通信。我使用 wireshark 验证了数据包是在 eth1 接口上接收的,该接口配置为内部机器 (10.10.10.4) 的默认网关。由于我还在网关机器中添加了默认路由,我希望数据包通过 eth0 到达外部网络,但这并没有发生,数据包没有到达 eth0 接口。有人能帮我解决这个问题并指出我是否遗漏了什么吗?非常感谢大家的帮助。

谢谢。

答案1

你允许 IP 转发了吗?

echo 1 > /proc/sys/net/ipv4/ip_forward

顺便说一句-尝试一下ip 命令而不是路线。

相关内容