OpenWrtを使用するアクセスポイントがあります。同じLAN上の他のホストにSquid(IPアドレス192.168.80.148)があります。ターゲットポート80を使用してパッケージを192.168.80.148にルーティングしたいと思います。
だから私は持っています
root@ap:/tmp# iptables -L -vn -t mangle
Chain PREROUTING (policy ACCEPT 67354 packets, 54M bytes)
pkts bytes target prot opt in out source destination
67358 54M fwmark all -- * * 0.0.0.0/0 0.0.0.0/0
Chain INPUT (policy ACCEPT 1548 packets, 127K bytes)
pkts bytes target prot opt in out source destination
Chain FORWARD (policy ACCEPT 65789 packets, 54M bytes)
pkts bytes target prot opt in out source destination
65789 54M mssfix all -- * * 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy ACCEPT 1017 packets, 133K bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 66808 packets, 54M bytes)
pkts bytes target prot opt in out source destination
25686 1564K MARK tcp -- * br-lan 0.0.0.0/0 0.0.0.0/0 PHYSDEV match ! --physdev-in eth0+ tcp dpt:80 MARK set 0x1
Chain fwmark (1 references)
pkts bytes target prot opt in out source destination
Chain mssfix (1 references)
pkts bytes target prot opt in out source destination
root@ap:/tmp# ip rule ls
0: from all lookup 128
0: from all fwmark 0x1 lookup squid1
1: from all lookup local
32766: from all lookup main
32767: from all lookup default
root@ap:/tmp# ip route show table squid1
default via 192.168.80.148 dev br-lan
したがって、ルーティングは機能しません。パッケージが私のステーションからイカの入った箱に送られるのを見ることはできません。
1つの重要な点は、アクセスポイントがサイトのデフォルトゲートウェイではないことです。 APのすべてのポートは同じVLANにあるため、APは一意のIPアドレスを持ち、内部インターネットADSLモデムと同じLANにあります。 ADSLモデムのLAN IPアドレスはデフォルトゲートウェイです。
私は何が間違っていましたか?
編集する:
テストルールを追加しました。
iptables -t mangle -A OUTPUT -o br-lan -p tcp -m physdev ! --physdev-in eth0+ -m tcp --dport 80 -
j MARK --set-xmark 0x1/0xffffffff
この場合、ルーティングが機能することがわかりました(AP自体のトラフィックはイカボックスを通過します)。したがって、問題は、このステーションのトラフィックがルーティングされないことです。なぜ?