我遇到了路由问题,但不太清楚为什么我无法解决它。也许我的想法是错误的。
在我的公司,每个客户端都通过 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 的现有路由覆盖。