我有一个具有三个网络接口的系统。以下是我尝试设置的配置。 wlan0(实际上是一个 WiFi AP 接口)- 其他设备通过此接口连接。 net1 - 面向互联网的接口,必须链接到 wlan0 才能为通过 wlan0 连接的设备提供互联网服务。 net0 - 面向受限互联网访问的接口,仅回答来自该子网内的请求的查询。
默认接口是 net0 及其网关。 ip route show 的输出如下所示:
default via 10.228.103.241 dev net0
10.228.103.240/30 dev net0 src 10.228.103.242
现在我想让系统查找表 7 以了解所有发送到 eth0 的请求的路由规则
net1. So I created ip rules as below:
0: from all lookup local
32758: from all lookup main
32762: from 8.8.0.0/16 lookup iTbl
32764: from 192.168.225.1 lookup iTbl
32765: from 192.168.172.2 lookup iTbl
32767: from all lookup default
8.8.0.0 用于名称服务器。它被列为 iTbl,因为我在 /etc/iproute2/rt_tables 中将 7 定义为 iTbl。
表 7 的 ip 路由显示如下所示:
default via 192.168.172.3 dev net1
8.8.0.0/16 via 192.168.172.3 dev net1
192.168.172.0/24 dev net1 src 192.168.172.2
192.168.225.0/24 dev wlan0 src 192.168.225.1
最后我的 iptables 看起来像这样:
iptables -nvL
Chain INPUT (policy ACCEPT 245 packets, 49904 bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
3 180 ACCEPT all -- wlan0 * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 190 packets, 19182 bytes)
pkts bytes target prot opt in out source destination
iptables -nvL -t nat
Chain PREROUTING (policy ACCEPT 22 packets, 2205 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 21 packets, 2145 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 91 packets, 7782 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 90 packets, 7226 bytes)
pkts bytes target prot opt in out source destination
2 616 MASQUERADE all -- * net1 0.0.0.0/0 0.0.0.0/0
当我将设备连接到 wlan0 接口并尝试浏览互联网时,tcpdump 显示来自 wlan0 的所有请求似乎都通过 net0,而实际上必须通过 net1。我阅读了很多帖子和论坛。尝试不同的方法后我无法解决问题。我无法理解哪里出了问题。从 tcpdump 和逻辑上看,似乎对表 7 的 ip 规则查找不起作用。请帮助检查是否有任何规则需要更正。
答案1
我终于找到了解决办法。其中一部分是将子网添加到表中,而不仅仅是 IP。第二个是在 ip 规则列表中添加“规则”。我的最终 IP 规则数据库如下所示:
0: from all lookup local
255: from 192.168.172.0/24 lookup iTbl
256: from 192.168.225.0/24 lookup iTbl
257: from 8.8.0.0/16 lookup iTbl
258: from all to 192.168.172.0/24 lookup iTbl
259: from all to 192.168.225.0/24 lookup iTbl
260: from all to 8.8.0.0/16 lookup iTbl
32766: from all lookup main
32767: from all lookup default
也许所有这些都不是必需的,可以进行更多优化。但这有效,所以我将其作为解决方案。