IP 规则表查找似乎不起作用

IP 规则表查找似乎不起作用

我有一个带有三个网络接口的系统。以下是我正在尝试设置的配置。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 的所有请求的路由规则。因此我创建了以下 IP 规则:

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 route show 如下所示:

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 规则查找不起作用。请帮忙检查是否有任何规则需要更正。

相关内容