ifcfg-eth0.200がarpブロードキャストに応答しない


2

次のようなセットアップで、Centosルーターがすばらしい仕事をしています。

  • eth0-> IPなし
  • eth0.200-> 192.168.200.1
  • eth0.201-> 192.168.201.1
  • ...など
  • eth0.213-> 192.168.213.1

IPv4転送を有効にして、intervlanルーティングを許可します。

  • eth1-> IPなし
  • eth1.201-> 10.1.29.40
  • eth0.202-> 10.1.29.48
  • ...など
  • eth0.213-> 10.1.29.136

iptablesは、10.198.29.138から10.198.29.142の範囲のIPをパブリックIPとして使用して、eth0ネットワークのいずれかがインターネットから何かを探すときにSNATを実行します。すべてがうまく機能します。問題は、eth1にVLANインターフェイス192.168.200.1が必要だということです。ifcfg-eth1.200に移動すると、パケットキャプチャで、多くのクライアントがどのMACアドレスが192.168.200.1に属しているかを尋ねることでARPテーブルを埋めようとしますが、eth1.200は応答しません。ARPブロードキャストに応答する他のeth0.XXXが表示されますが、200は表示されません。iptablesの問題なのでしょうか?

私のiptablesは次のようになります: ここに画像の説明を入力してください

編集/ 解像度の概要デイヴィッド・ハウのコメントに感謝

sysctl -w net.ipv4.conf.eth0 / 202.rp_filter = 0コマンドが何をするかという別の問題のトラブルシューティングをしながら、私は自分で実験することができました。

          SERVER
     <==eth0||eth1==>
  MAC FF:11 || MAC FF:22
 IP 1.1.1.1 || IP 3.3.3.1

eth0が3.3.3.1のARP要求を受信した場合、サーバーはデフォルトでそれに応答しません。リバースパスフィルターを無効にした後、サーバーはeth0上のARP要求に「ちょっと、IP 3.3.3.1はMAC FF:11にあります」と応答しますが、実際にはeth1にあります。

次に、MAC FF:11およびIP 3.3.3.1宛てのeth0に次のパケットが到着します。ルーティングテーブルのため、3.3.3.x IPに戻るものはすべてeth1になります。そのため、私のパケットはブラックホールですが、それは別の話です。

私の場合、次のようなものがあります。

          SERVER
     <==eth0||eth1==>
  MAC FF:11 || MAC FF:22

<==eth0.200 || eth1.200==>
 IP 3.3.3.1 || IP 1.1.0.1

<==eth0.201 || eth1.201==>
 IP 1.1.1.1 || IP 3.3.3.9

<==eth0.202 || eth1.202==>
 IP 1.1.2.1 || IP 3.3.3.17

<==eth0.203 || eth1.203==>
 IP 1.1.3.1 || IP 3.3.3.25

<==eth0.204 || eth1.204==>
 IP 1.1.4.1 || IP 3.3.3.33

eth0.213まで続きます。問題は、ご覧のとおり、1.1.0.0ネットワークがeth1にあり、3.3.3.0がeth0にあり、残りのネットワークが反転していることです。

後で提案されたsysctlコマンドで見つけたものから、RPFが無効になっている場合、SERVERがeth1.200の1.1.0.1 MACを要求するARPパケットに最終的に応答することを願っていますが、残念ながら確認できません。

このコマンドは、影響を受けるサブインターフェイスでのみ実行でき、変更がすぐに適用されることを実際に確認できます。

回答:


3

Linuxは、あらゆるインターフェースでARP要求に応答するように設計されています。ホストが特定のインターフェイスではなくIPアドレスを所有していると想定されます。表示されているものはARPフラックスと呼ばれます。

インターフェイスが同じレイヤ2ブロードキャストドメインに存在する場合、これが表示されます。あなたはこれを真実ではないはずのVLANを使用していると言いますが、それはVLANがどこにタグ付けされているかに依存します(OSやスイッチなどによって)。

Linuxでsysctlを使用してこの動作を変更できます

arp_ignore-整数

ローカルターゲットIPアドレスを解決する受信したARP要求への応答として応答を送信するためのさまざまなモードを定義します。

0-(デフォルト):任意のローカルターゲットIPアドレスに対する応答、任意のインターフェイスで構成

1-ターゲットIPアドレスが着信インターフェースで設定されたローカルアドレスである場合のみ応答

2-ターゲットIPアドレスが着信インターフェイスで設定されたローカルアドレスであり、送信者のIPアドレスを持つ両方がこのインターフェイスの同じサブネットに属している場合にのみ返信する

3-スコープホストで構成されたローカルアドレスには返信せず、グローバルアドレスとリンクアドレスの解決のみが返信されます

編集:質問を読み直した後、各NICでリバースパスフィルターを無効にする必要があるようです。

sysctl -w net.ipv4.conf.eth0/102.rp_filter=0
sysctl -w net.ipv4.conf.eth0/103.rp_filter=0
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.