ここで説明が長くなった点ご了承ください。しかし、質問をする前に設定について説明することをお勧めします。
マイコンピュータ(debian)には2つのUSBイーサネットデバイスが接続されており、169.254.xxアドレスを使用してavahi経由で自分で構成されています。
各USBイーサネットデバイスのもう一方の端にSSHホスト(host1
およびhost2
いつ誰でも host1
または、host2
デバイス接続を介してSSHを介してホスト1.localまたはホスト2.localに接続することもできます。
両方が接続されている場合にのみhost1.local
ORに接続できますhost2.local
(ホストが不明/接続できないなどのメッセージが表示されます)。
走れば
ifconfig
両方のインターフェイスが動作しており、IPアドレスがあることが確認されます。
走れば
ip route show
次のように、2つの一致するパスが設定されていることを確認しました。
169.254.0.0/16 dev eth0 scope link src 169.254.3.232 metric 212
169.254.0.0/16 dev eth1 scope link src 169.254.79.120 metric 213
だから私は考えるここで何が起こるのかは、これらのルートの1つがZeroconfの範囲内のすべてのトラフィックを取得し、デバイスの1つに送信することです。つまり、両方のデバイスが接続されている場合、トラフィックはそのデバイスに固有のものであるため、1つのデバイスのみが応答します。最後にホストデバイス。
これをテストするために、他のルートが引き継がれて別のデバイスにトラフィックを送信できるように、ワークユニットのルートを削除しようとしましたが、試行したルート削除コマンドのすべてのバリエーションが何もしないように見えました。
eth0
host1
代わりに、このコマンドを実行すると、デバイス上の他のすべての設定(予想されるIPなど)と一緒に(接続された)ルートが有効(削除)されます。理論を立証する前にhost1.local
応答を停止し、host2.local
応答がない部分から応答を開始してください。
ip addr flush dev eth0
だから私の解決策は、すべてを上回る自動的に生成された一般的なルートを削除し、デバイスにより具体的なルートを追加することでした(各ホストに静的IPがあることを追加する必要がありました)。
そのように
ip route add 169.254.102.0/24 dev eth0
ip route add 169.254.116.0/24 dev eth1
でも
ip route add 169.254.102.23/32 dev eth0
ip route add 169.254.116.74/32 dev eth1
ただし、パスを強制的に削除する方法は厳しすぎるため、完全には機能しませんip addr flush
。パスが入っていますが、フラッシュによってインターフェイスが深刻にシャットダウンします。
だから私の質問は次のようになります
ip route del
NOTのすべてのバリエーションが間違ったパスを削除するのはなぜですか?コマンドを使用する以外にパスを削除する他の方法はありますか
ip
?
この問題をどのように解決できますか?
インターフェイスを接続してロードバランサのように動作させるためのソリューションはより合理的ですか?
ルーティングをより具体的にするために努力する必要がある他のものは完全に欠けていますか(おそらくZeroconf / Avahiがこれらの接続を確立する方法に関して)。
ベストアンサー1
これらのルートのネットワークを変更することはお勧めできません。また、avahiによって再フラッシュされ、せいぜい後ろのマスクに戻り、最悪の場合、パス/マスクがめちゃくちゃになります。
また、設定を必要としないアドレス/自動プライベートアドレスルーティングへの執着を停止することをお勧めします。これはネットワークローカルであり、定義上ルーティングできません。
私は本を読み、プライベートRFC 1918のIPアドレスを使用することをお勧めします。