通过同一网关路由两个子网

通过同一网关路由两个子网

我遇到了路由问题,但不太清楚为什么我无法解决它。也许我的想法是错误的。

在我的公司,每个客户端都通过 DHCP 获取 IP,但管理员不希望人们将未知计算机插入网络。因为我使用许多运行 Linux 的嵌入式系统和笔记本电脑等,而且我不想去找管理员告诉他最新的 MAC,所以他允许我在笔记本电脑上运行自己的子网。

我的eth0接口通过 DHCP 获取 IP

我的eth2接口配置为192.168.10.1

我已经在笔记本上安装并配置了 isc-dhcp-server 和 bind。我跨越 192.168.10.0/24 网络,dhcp-daemon 仅监听通过 eth2 传入的请求。

subnet 192.168.10.0 netmask 255.255.255.0 {
  range 192.168.10.100 192.168.10.200;
  option routers 192.168.10.1;
  option domain-name-servers 192.168.10.1;
  allow bootp;
  authoritative;

  server-name "192.168.10.1";
  next-server 192.168.10.1;
  filename "pxelinux.0";
  option domain-name "intern.pse.de";

  ... (many host entries)
}

我还有一个脚本,每当我需要启动服务器时就会执行它dhcpd

iptables --table nat --append POSTROUTING --out-interface eth0 -j MASQUERADE
iptables --append FORWARD --in-interface eth2 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/ip_forward

这个设置工作正常,任何连接到我的系统eth2都会获得一些 IP 并能够访问互联网。

我的公司也有 wifi 网络,为了测试目的,我有一个可通过 wifi 使用的设备(西门子 plc)。使用 wpa_supplicant,我将我的wlan0接口连接到 wifi 并分配了一个固定地址:

ifconfig wlan0 192.168.1.99

我需要我的一个嵌入式系统(IP 为 192.168.10.113)能够通过 wifi 访问西门子 plc。我的嵌入式系统已连接到我的eth2接口,可以毫无问题地访问互联网。所以我认为我应该能够 ping 通 IP 为 192.168.1.160 的 plc。在嵌入式系统上,我无法 ping 通 plc。

因此我开始在 Google 上寻找常见的路由设置,然后我发现了这个:http://www.thegeekstuff.com/2012/04/route-examples/特别是部分II. 示例网络架构(了解路由)其中有一个网关和 2 个不同的子网。这非常类似于我想要做的事情,所以我将这条路线(如链接文章中所述)添加到我的笔记本中:

route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.99

但这也不起作用。我的嵌入式系统仍然无法 ping 通 plc。

我的整个路由表

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.3     0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.1.0     192.168.1.99    255.255.255.0   UG    0      0        0 wlan0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 wlan0
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 eth2
192.168.90.0    0.0.0.0         255.255.255.0   U     0      0        0 intern0

我遗漏了什么?如何设置路由,以便我的 192.168.10.0/24 客户端能够访问通过我的wlan0界面可访问的所有内容?

答案1

您的无线设备似乎不知道如何访问 192.168.10.0/24。请尝试添加以下地址,以便它们认为请求来自您 PC 的主网络地址:iptables --table nat --append POSTROUTING --out-interface wlan0 -j MASQUERADE

另外,我认为您不需要通过 192.168.1.99 的 192.168.1.0/24 路由​​。这应该由 wlan0 的现有路由覆盖。

相关内容