几天来我一直在思考这个问题,不幸的是我找不到解决办法。可能是因为缺乏理论,或者只是设置不好。如果能得到一点帮助,我将不胜感激 :-)
我在完成这项任务时遇到了问题。我无法从 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
有两个路由表条目:
192.168.0.0/24
子网的链接条目- 默认路由通过
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
,它可能会起作用。