カスタムルーティングテーブルを使用するようにルーティングを設定しましたが、基本テーブルが関連しているのはなぜですか?

カスタムルーティングテーブルを使用するようにルーティングを設定しましたが、基本テーブルが関連しているのはなぜですか?

私は次のような状況にあります。

- - - - - - -
| namespace |-------o      o------
- - - - - - -     vethY   ppp0
          vethX

どこ:

  • ppp0PPP インターフェイスで、IP アドレスは 192.168.100.169/24 です。
  • vethX名前空間内の仮想イーサネットインターフェイスで、対応するIPアドレスは10.0.0.3/24です。
  • vethYIPアドレスが10.0.0.5/24の別の仮想イーサネットインターフェイスは、ネームスペースのデフォルトゲートウェイでもあります。

実際、名前空間のルーティングテーブルは次のとおりです。

$ sudo ip netns exec my_namespace ip route
default via 10.0.0.5 dev vethX
10.0.0.0/24 dev vethX proto kernel scope link src 10.0.0.3

この場合は、ポリシーベースのルーティングを使用したいと思います。特に、ネットワークパケットの受信インターフェイスがまたはインターフェイスvethYの場合は、カスタムルーティングテーブルを使用したいと思いますppp0

「という名前のカスタムルーティングテーブルを作成しました。T1'ファイルに「T1」エントリを追加します/etc/iproute2/rt_tables
次に、この新しいルーティングテーブルをいつ使用するかをシステムに通知するポリシールーティングルールを追加しました。
これで、現在のポリシールーティングルールは次のようになります。

$ ip rule
0:      from all lookup local
32764:  from all iif ppp0 lookup T1
32765:  from all iif vethY lookup T1
32766:  from all lookup main
32767:  form all lookup default

次に、カスタムテーブルに次のルールを追加しました。

$ ip route show table T1
default via 192.168.100.169 dev ppp0
10.0.0.0/24 dev vethY scope link
192.168.100.180 dev ppp0 scope link

最後の行は、ポイントツーポイントリンクの他のエンドポイントを示しています。
また、デフォルトのルーティングテーブルは空です。

この設定では、ネームスペースに移動して10.0.0.5をpingしても応答がありません(ARP応答も同様)。
要求パケットは vethY インターフェイスに到着します (wireshark を使用して見たことがあります)、応答は生成されません。
私のarpキャッシュが空の場合、arp要求が送信されたときにarp応答は再送信されません。


10.0.0.0/24 dev vethY scope link
代わりに、基本テーブルにもルールを追加すると、すべてのパケットが正しい方向に流れます。

このルールをベーステーブルに追加しないと、なぜ答えが得られないのですか?
vethYまたはppp0からのすべての着信パケットに対してT1を使用するようにルートを設定しましたが、基本テーブルが関連しているのはなぜですか?

ベストアンサー1

おすすめ記事