サブネット全体にARPエントリ()を追加したいです10.50.0.0/16
。
私は試した:arp -v -i p4p1 -s 10.50.0.0 MAC_OF_P4P2 netmask 255.255.0.0 pub
ただし、コマンドは次を返します。
arp: SIOCSARP()
SIOCSARP: Invalid argument
一つずつ追加しましたが問題ありませんでした。arp -v -i p4p1 -s 10.50.0.1 MAC_OF_P4P2
私が望むことをする方法はありますか?
それは次のとおりです。arp -v -i p4p1 -s 10.50.0.0/16 MAC_OF_P4P2
ストーリー:
eth0
、p4p1
および3つのインターフェースがありますp4p2
。
p2p1
デバイスを介して接続されていますが、p2p2
言えば電線のようです。
A.B.x.x
ネットワークに接続されている複数のサーバーがありますEth0
。
アクセスしたいシステムからA.B.x.x
:
- 以下を介して直接
Eth0
:ping A.B.X.X
大丈夫です。、自動的に実行されます
p2p1
->external device/wire
->経由でp2p2
次にリダイレクトしますEth0
。ping 10.50.X.X
10.50.0.0/16
この場合、インターフェイスと同じですA.B.0.0/16
が、インターフェイスを介して仮想IPを作成する必要がありますp4p*
。
パケットはIPソース/宛先を維持する必要があり、10.50.x.x
到着時にのみeth0
IPがに変換されますA.B.X.X
。
段階的にしましょう。
10.50.0.0/16
私のインターフェイスにルーティングしますp4p1
。ip route add 10.50.0.0/16 dev p2p1
=> p4p1はわからないWho has 10.50.0.152? Tell 10.0.0.1
10.50.0.0/16
に接続するARPエントリを設定する必要がありますp4p2
。
答え1
ネットワークプロキシarpエントリ(0xffffffffと等しくないネットマスク)のサポートがLinux 2.2から削除されました。これは、他のインターフェイスから接続できるすべてのホストに対してカーネルによって設定された自動プロキシarp設定に置き換えられます(インターフェイスに対して転送とプロキシarpが有効になっている場合)。
引用: https://manpages.courier-mta.org/htmlman7/arp.7.html
たぶん設定を試してみてください。
echo 1 > /proc/sys/net/ipv4/conf/"interface"/proxy_arp
インターフェイスはインターフェイス サブネットに関連付けられたルーティング テーブルを確認し、arp プロキシ パケットを送信します。
答え2
あなたがしなければならないことはパスを設定することだけです。あなたの質問には、このサブネットが存在するかどうかは記載されていません10.50.0.0/16
。存在するターゲットデバイスまたは後ろにターゲットデバイスですが、それは問題ではありません。あなたの機械に関する限り、それらはまったく同じです。
ルーティングテーブルにルートを追加すると、宛先サブネット上のすべてのトラフィックが、指定されたIPを持つデバイスのMACアドレスにルーティングされることを意味します。たとえばip route add 10.50.0.0/16 via 1.2.3.4
、システムが内部コンピュータと通信する必要がある場合は、10.50.0.0/16
MACアドレスを見つけてその1.2.3.4
MACアドレスにトラフィックを送信します。発信パケットにはIPアドレスはありません。1.2.3.4
。
したがって、あなたのソリューションは簡単です。
ip route add 10.50.0.0/16 via 1.2.3.4
^1.2.3.4
対応するMACアドレスを持つデバイスのIPはどこにありますか00:XX:XX:XX:XX:XX
?同じサブネットに複数のインターフェースがある場合(悪い考えかもしれませんが、常にそうではない)、発信インターフェースを指定できます。
ip route add 10.50.0.0/16 via 1.2.3.4 dev p2p1