Linuxが誤ったインターフェイスでIPアドレスを使用するのを防ぐ

Linuxが誤ったインターフェイスでIPアドレスを使用するのを防ぐ

コンピュータA2 つの物理インターフェイスがあります。

  • eno0 → 192.168.1.1/24
  • eno1 ⇒ 192.168.2.1/24

コンピュータB物理インターフェイスは1つだけです。

  • eno0 ⇒ 192.168.2.2/16(異常に小さいサブネットマスクに注目してください - 悪意のあるユーザーが設定したと言えます)

コンピュータAのeno1は、愚かなスイッチを介してコンピュータBのeno0に接続される。

コンピュータBで実行するとping 192.168.1.1動作します!どうすればいいですか?

/proc/sys/net/ipv4/ip_forwardどちらのコンピュータもゼロです。

両方のコンピュータの iptables FORWARD ポリシーは DROP であり、FORWARD テーブルにはルールはありません。

これら 2 台のコンピュータは他のネットワークに接続されていません。

どちらのシステムも6.1.9-arch1-1カーネルを実行しています。

さらに重要なのは:この動作を回避するには、コンピュータAをどのように設定する必要がありますか?192.168.2.0/24ネットワーク上のコンピュータが192.168.1.1アドレスでホストされているサービスにアクセスしたくありません。

答え1

TCP / IPスタックを設計するには、2つの基本的なアプローチがあります。強力なホストモデルそして弱いホストモデル。弱いホストモデルを使用すると、高性能を得ることが容易になるため、Linuxはデフォルトで弱いホストモデルを使用します。

歴史的に、これらの用語は次のように知られていました。強力なエンドシステム(ES)モデルそして弱いエンドシステムモデル、それぞれ。

探している動作(=システムは、パケットが着信インターフェイスに割り当てられた特定のIPアドレスからの着信パケットのみに応答)は次のとおりです。強力なホストモデル、必要に応じていくつかの構成が必要です。

もしあなたならこのサイトを「強力マスターモード」というキーワードで検索してみてくださいで設定方法に関する多くの質問と詳細な答えを見つけることができます。

答え2

コンピュータBは、IPアドレスが指定されたサブネットのリンクにあると信じるので、そのインタフェースからARP要求を送信する。

デフォルトでは、Linux はインターフェイスに関係なく、システムに設定されているすべての IP アドレスに対する ARP 要求に応答します。

これが望ましくない場合は、設定またはnet.ipv4.conf.all.arp_filtersysctlnet.ipv4.conf.eno1.arp_filterエントリが必要です(文書化されています)。カーネル文書)。これを 1 に設定すると、arp はインターフェイスのアドレスに制限されます。

コンピュータBに192.168.1.1の静的ARPエントリがあると仮定すると(またはゲートウェイが192.168.2.1の正しいサブネットがある)、前のエントリは役に立ちません。これらの要求をブロックするにはファイアウォールを設定する必要があるようです。 IP アドレスはコンピュータ A が所有しているため、コンピュータ A は、これらのパケットがどのインターフェイスから来たかに関係なく、FORWARD ではなく INPUT と見なします。

答え3

あなたが説明するものはiptables、配信などに依存しません。

ここでは、ネットマスキング、ゲートウェイ、ルーティングが問題です。あなたが言ったように、コンピュータには16ビットのネットマスクがあります。これは、ネットワーク192.168.XXのすべてのコンピュータが彼の「ローカル」ネットワークにあることを意味します。ネットワーク上のコンピュータへのpingは、ゲートウェイを通過せずにそのネットワーク上のアダプタに直接移動します。ネットマスクによると、192.168.1.1は192.168.2.1アダプタネットワークにあり、そのアダプタに直接pingを送信します。

あるアダプタからトラフィックを受信し、それを別の(または同じ)アダプタに転送する必要がある場合は、転送は重要ですが、あなたの場合は転送はありません。

関連情報