使用两个网卡在 Linux 中进行路由

使用两个网卡在 Linux 中进行路由

几天来我一直在思考这个问题,不幸的是我找不到解决办法。可能是因为缺乏理论,或者只是设置不好。如果能得到一点帮助,我将不胜感激 :-)

原理图,示意图

我在完成这项任务时遇到了问题。我无法从 Linux 机器 10.0.1.2 ping 到网络 192.168.0.0 中连接的主机

我可以从 Linux 路由器 ping 通网络 192.168.0.0 中的主机,例如 192.168.0.200 或 192.168.0.1

我可以从 Linux 路由器 ping 通网络 10.0.1.0 中的主机,例如 10.0.1.2,当然还有 10.0.1.1

从 Linux 机器上,我可以 ping Linux 路由器 10.0.1.1 和 192.168.0.204(两个网卡都在同一个机器上),但是我无法 ping 192.168.0.200 或 192.168.0.1

Linux路由器有两张网卡enp0s3 --> 192.168.0.204 IP是通过dhcp从互联网路由器分配的,第二张网卡enp0s8有静态IP 10.0.1.1/24

Linux路由器:

1: enp0s3: 
    inet 192.168.0.209/24 brd 192.168.0.255 scope global dynamic enp0s3
 
2: enp0s8:
    inet 10.0.1.1/24 scope global enp0s8

IP 路由列表:

default via 192.168.0.1 dev enp0s3 
10.0.1.0/24 dev enp0s8 proto kernel scope link src 10.0.1.1 
169.254.0.0/16 dev enp0s3 scope link metric 1000 
192.168.0.0/24 dev enp0s3 proto kernel scope link src 192.168.0.209 

Linux 机器有网卡 enp0s3 --> 它有静态 IP 10.0.1.2/24

Linux 系统:

1: enp0s3:
    inet 10.0.1.2/24 scope global enp0s3

IP 路由列表:

10.0.1.0/24 dev enp0s3 proto kernel scope link src 10.0.1.2 
192.168.0.0/24 via 10.0.1.1 dev enp0s3 

注意:我在Linux路由器和Linux机器上都做了这些。

vi /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p

我希望通过路由而不是通过 nat iptables 或其他任何方式来实现这一点。

答案1

如果您不想为此使用 NAT,则所有设备都必须具有到所有其他设备的路由条目。您的问题很可能是子网中的计算机192.168.0.0没有路由条目10.0.1.0/24。我猜具有 IP 地址的计算机192.168.0.200有两个路由表条目:

  1. 192.168.0.0/24子网的链接条目
  2. 默认路由通过192.168.0.1

因此,当您192.168.0.200从ping 时10.0.1.2,数据包可以到达目标服务器,但当它尝试应答时,它会将答案路由到另一个方向 - 通过192.168.0.1,这是它所知道的非在线地址的唯一路由,当然永远不会到达目的地。

10.0.1.0/24如果您为子网中的服务器添加路由192.168.0.0/24,它可能会起作用。

相关内容