IPルールテーブルルックアップが機能しないようです。

IPルールテーブルルックアップが機能しないようです。

3つのネットワークインターフェースを持つシステムがあります。以下は私が設定しようとしている設定です。 wlan0(実際にWiFi APインターフェイス) - 他のデバイスはこのインターフェイスを介して接続されます。 net1 - wlan0を介して接続されたデバイスにインターネットサービスを提供するためにwlan0に接続する必要があるインターネット接続インターフェイス。 net0 - 制限されたインターネットアクセスのためのインタフェースで、このサブネット内で発生する要求に対してのみクエリに応答します。

デフォルトのインターフェイスは net0 とそのゲートウェイです。 ip パス表示の出力は次のとおりです。

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はネームサーバーとして使用されます。 /etc/iproute2/rt_tables で 7 を iTbl として定義したため、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だけでなくテーブルにサブネットを追加することです。 2つ目は、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

おそらく、これはすべて必要ではなく、より多くの最適化を実行できます。しかし、効果があったので解決策を作りました。

関連情報