无法从子网 B ping 子网 A,子网 B 和子网 A 之间有路由器

无法从子网 B ping 子网 A,子网 B 和子网 A 之间有路由器

我尝试在家庭网络和 Raspberry Pi 中进行子网划分。

ISP 电缆调制解调器有 4 个 eth 接口和 1 个 wlan 接口,它们似乎都交换到了一起。路由器的 IP 是 ISP NAT 后面的 192.168.0.1。

我将电缆调制解调器的一个 eth 端口连接到树莓派的 eth 端口。树莓派有一个额外的 wlan 加密狗,并通过 hostapd 设置了一个接入点。树莓派的网络配置在 /etc/network/interfaces 中:

auto eth0
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1 
dns-nameservers 8.8.8.8 8.8.4.4

auto wlan0
allow-hotplug wlan0
iface wlan0 inet static 
address 192.168.1.3
netmask 255.255.255.0

使用 iptables 命令,我删除了所有规则,并将所有链的默认策略设置为“接受”。IPv4 转发已激活,路由表如下:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0

但是,RaspberryPi 通过 ISC-DHCP-SERVER 为两个子网提供网络配置。其配置如下:

subnet 192.168.0.0 netmask 255.255.255.0 {
  range 192.168.0.10 192.168.0.111;
  option routers 192.168.0.1;
  option rfc3442-classless-static-routes 24, 192, 168, 1, 192, 168, 0, 2;
  option ms-classless-static-routes 24, 192, 168, 1, 192, 168, 0, 2; 
}

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.10 192.168.1.111;
  option routers 192.168.1.3;
}

因此,我希望来自 192.168.0.0/24 网络和 192.168.1.0/24 的问题应通过 192.168.0.2(Raspberries eth-port)路由。所有其他问题都通过 192.168.0.1。来自 192.168.1.0/24 的所有问题都应通过 192.168.1.3(Raspberries wlan-port)。

我得到以下结果:

从 192.168.1.0/24 网络中的主机对 Raspberry 的两个接口执行 ping 操作,结果成功。对 192.168.0.1 或另一个 192.168.0.0/24 地址执行 ping 操作甚至不会给出主机无法访问的消息。什么都没有 - 包丢失了...

我能做什么?有什么问题?

更新:

执行 ping 操作的机器的路由表似乎没有问题。我可以通过伪装 192.168.1.0/24 网络内所有设备的源 IP 地址来解决这个问题:

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

但在我看来,使用 NAT 连接内部网络内的两个子网是一种解决方法。子网应该可以在没有 NAT 的情况下使用。我的内部网络中的流量是否可能被我的任何 ISP 上游路由器阻止了???

答案1

这看起来像是一个单向路由问题。

您的路由已全部正确设置,数据包到达目的地。当目的地尝试回复时,它不知道如何到达网络 192.168.1.0/24。它会将流量发送到其默认网关,即 ISP 路由器 192.168.0.1。

如果您在 ISP 路由器上通过 192.168.0.2 添加至 192.168.1.0/24 的路由,那么它无需 NAT 就能正常工作。

更新:

如果您无法访问您的 ISP 路由器,您可以简单地在每个主机设备上通过 192.168.0.2 添加一条到 192.168.1.0/24 的路由。

或者

在 192.168.0.0/24 网络的 DHCP 作用域中,您可以将 Pi 的地址 (192.168.0.2) 分配为路由器,它将成为所有客户端的默认网关,而不是 ISP 路由器。然后,您将能够在两个网络之间路由,而 Pi 将简单地将客户端的 Internet 流量转发到 192.168.0.1。客户端 Internet 流量直接转到 192.168.0.1 而不是在 192.168.0.2 处停止似乎“更高效”,但如果您想控制路由,则必须这样做。

相关内容