LINUXの非対称ルーティングの問題

LINUXの非対称ルーティングの問題

非対称ルーティングの問題のために狂気の地径です!

3つのNICでマルチホームサーバーを構築しようとしています。各NICは3つの異なるサブネットに接続されています。

eth0:LAN接続、10.99.72.38;機能:管理トラフィック
eth1:LAN接続、10.99.70.150;機能:ユーザートラフィック
eth2:WAN接続、10.99.74.85;

Amazon Linuxイメージ(Linux 3.14.20-20.44.amzn1.x86_64 x86_64)を使用していますが、必要に応じてCentOSに切り替えることができます。

私が達成したいもの:

eth0: 管理トラフィック

  • 住所:10.99.72.38
  • 私はこれが10.0.0.0/8のアドレスだけを受け入れ、応答する「分離された」インターフェースになることを望みます。
  • これを「ローカルLAN専用ssh」NICと考えてください。
  • eth0を介してのみ応答できます。
  • 他のすべてのターゲットはブロックされます。つまり、このインターフェイスを介して他の宛先に接続することはできません。
  • eth0 に到着するトラフィックは、eth1 または eth2 を使用して応答しません。

eth1:LANの内外へのユーザートラフィック

  • 住所:10.99.70.150
  • LANからすべての宛先へのすべてのユーザートラフィックを許可する
  • eth1を介して10.xxxに向かうトラフィックへのパケットルーティング
  • eth2(デフォルトパス)を介して別の宛先にパケットをルーティング
  • 着信パケットは eth0 経由でルーティングされません。

eth2:WANを行き来するユーザートラフィック

  • 住所:10.99.74.85
  • eth1 のすべてのユーザー トラフィックを受け入れ、eth2 のパケットを 10.xxx 以外の宛先に送信します。
  • eth2 から応答パケットを受け入れ、eth1 経由で 10.xxx に向かうすべてのトラフィックをルーティングします。
  • 着信パケットは eth0 経由でルーティングされません。

rt_tablesに "mgmt"というiproute2テーブルを作成し、このインターフェイスを分離しようとポリシーベースの高い優先順位ルーティングルールを追加しましたが、いくら試してもデフォルトルーティングテーブルはまだデフォルトルーティングであるeth0と呼ばれるようです。 。質問は次のとおりです。

  • eth1からの着信パケットはeth0を介してルーティングされます。 (これは欲しくない!)
  • eth2 から 10.xxx への着信パケットは eth0 経由でルーティングされます。 (これは欲しくない!)
  • デフォルトのeth0パスをデフォルトから削除すると、eth0機能が完全に失われます。パスが mgmt テーブルに存在していても、eth1 は正しく応答します。

変更されていないルーティングテーブル(route -n)を最初から始めます。

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface  
0.0.0.0         10.99.72.1      0.0.0.0         UG    0      0        0 eth0  
0.0.0.0         10.99.70.1      0.0.0.0         UG    10001  0        0 eth1  
0.0.0.0         10.99.74.1      0.0.0.0         UG    10002  0        0 eth2  
10.99.70.0      0.0.0.0         255.255.255.0   U     0      0        0 eth1  
10.99.72.0      0.0.0.0         255.255.255.0   U     0      0        0 eth0  
10.99.74.0      0.0.0.0         255.255.255.0   U     0      0        0 eth2  

変更されていないIPルールは次のとおりです。

0:      from all lookup local  
32766:  from all lookup main  
32767:  from all lookup default  

特定のルーティングルール、テーブル、およびパスを正しくインポートし、最終ルーティングテーブルとルールを表示するのを手伝ってくれてありがとう。

答え1

eth0とのデフォルトゲートウェイ設定を削除する必要がありますeth1。これが行われる方法はディストリビューションによって異なります。

おそらくポリシールーティングは必要ありません。私はあなたが望むものがNetfilter /を使用して最もよく達成されると思いますiptables

iptables -I INPUT 1 -i eth0 ! -s 10.99.72.0/24 -j DROP
iptables -I FORWARD 1 -i eth0 -j DROP
iptables -I FORWARD 2 -o eth0 -j DROP

iptables -I INPUT 2 -i eth1 ! -s 10.0.0.0/8 -j DROP
iptables -I FORWARD 3 -i eth1 -j ACCEPT

iptables -I INPUT 3 -i eth2 -m conntrack --ctstate NEW -j DROP
iptables -I FORWARD 4 -i eth2 -j ACCEPT

これは、ポリシールーティングを介してNetfilterなしで実行できます。

関連情報