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 を返します。その後、すべてが期待どおりに機能します。