GNU/Linux >> Linux の 問題 >  >> Linux

Linux ネットワーク トラフィックが eth0 のみを通過するのはなぜですか?

TCP/IP ネットワーク スタックには、強力なホスト モデルと弱いホスト モデルの 2 つの設計モデルが考えられます。強力なホスト モデルに一致する動作を期待しています。 Linux は、弱いホスト モデルを使用するように設計されています。一般に、弱いホスト モデルは、ルーティング コードの複雑さを軽減し、より優れたパフォーマンスを提供する可能性があるため、より一般的です。それ以外の場合、2 つのホスト モデルは設計原則が異なるだけです。どちらも本質的に優れているわけではありません。

基本的に、弱いホスト モデルとは、送信トラフィックがルーティング テーブルにリストされている最初のインターフェイスのうち、宛先の IP アドレス (または、宛先に直接到達できない場合は選択されたゲートウェイ) に一致するものから送信されることを意味します。ソース IP アドレス .

これが基本的に、同じネットワーク セグメントで 2 つの IP アドレスが必要な場合に、2 つの別個の物理インターフェイスを使用することが一般的に推奨されない理由です。代わりに、1 つのインターフェースに 2 つの IP アドレスを割り当てます (IP エイリアス:例:eth1 =192.168.8.142 および eth1:0 =192.168.8.140)。単一のインターフェースが提供できるよりも多くの帯域幅が必要な場合は、2 つ以上のインターフェースを結合 (または該当する場合はチーム) し、結合/チームで両方の IP を実行します。

多くの sysctl 設定を微調整し、「高度なルーティング」機能を使用して各 NIC に独立したルーティング テーブルを設定することにより、Linux を強力なホスト モデル システムのように動作させることができます。しかし、これは非常に特殊な構成であるため、実装する前によく考えることをお勧めします。

Linux ソース ルーティング、強力なエンド システム モデル / 強力なホスト モデルで回答を参照してください。本当に必要なら。


考慮すべき追加のポイントは、eth1 インターフェイスが 255.255.255.255 のサブネット マスクで構成されていることです。

これは、eth1 インターフェースがそのネットワークインターフェース上に他のデバイス (ホスト) を期待しないように構成されていることを意味します。これは、192.168.8.142 クライアントと通信できないことを意味します。


いろいろ検索した結果、なぜ netcat は IP に関連付けられた適切なインターフェイスを使用しないのか? を見つけました。 、これは同じ問題です。 @telcoM が言ったように、発信トラフィックは最初のインターフェイスに送信されます。これが問題です。これを解決する最も簡単な方法は次のとおりです。

ip route add default via 192.168.8.142 dev eth1 table 142
ip rule add from 192.168.8.142 table 142

このルートは ip route get 192.168.8.135 from 192.168.8.142 になります eth0 の代わりに eth1 を返します。その後、すべてが期待どおりに機能します。


Linux
  1. POSIXとは何ですか? Linux / UNIXユーザーにとってなぜ重要なのですか?

  2. Linux –デバイスEth0が存在しないようで、初期化が遅れていますか?

  3. Linux – USBスティックの検出に時間がかかるのはなぜですか?

  1. Linux – Linuxネットワークの名前空間間でトラフィックを転送する方法は?

  2. vnStat を使用して Linux でネットワーク トラフィックを監視およびログに記録する方法

  3. Linux OS サービス「ネットワーク」

  1. SSH を介してすべてのネットワーク トラフィックをトンネリングするにはどうすればよいですか?

  2. VPN 経由で特定のトラフィックのみをルーティングする

  3. 特定のネットワーク名前空間に対してのみ、OpenVPN を介してすべてのトラフィックをフィードします