奇妙な理由から、同じ物理ネットワークインターフェイスに2つのIPアドレスがあり、両方のIPが同じサブネットにあるLinuxボックスがあります。両方のIPを介してデバイスにアクセスでき、すべてが問題ないようです。
このコンピュータがNASサービスを使用する必要があるという事実を知るまでです。そして、このNASはIPに基づいてロックされています。 2番目のIPが追加されたため、NAS共有をマウントできなくなったようです。確実な解決策は、IP制限を削除するか、2番目のIPを追加することです。
私の質問は:コンピュータに複数のIPがある場合にトラフィックを送信するためにどのIPを使用しますか?つまり、このデュアルIPシステムがクライアントとして機能している場合、サーバーはどのクライアントIPを見ますか?
編集:今、いくつかのクライアントアプリケーションが発信トラフィックに使用されるインターフェイスを指定できることを理解しています。これは私にとって新しいものです。だから私の顧客は
- NFSマウント(
mount -t nfs ...
) - 平らな
発信トラフィックのIPを指定する方法は?クライアントアプリケーションがこれを指定しない場合、オペレーティングシステムはどのように選択しますか?発信トラフィックのためのオペレーティングシステムの選択はインターフェイスの1つを好むのですか、それとも両方のインターフェイスを好むのですか?
答え1
クライアントが接続を開始しようとすると、独自のクライアントIPを指定するか、そのアドレスINADDR_ANY
(AKA 0.0.0.0
:)を送信元アドレスとして使用できます。 INADDR_ANYを使用すると、クライアントが呼び出されたときにLinuxは自動的にアドレスを選択します。つながる()- バラより人々 7 IP。
最も簡単な修正顧客にどのIPを選択するかを教えてください。
インストール時にオプションmount -t nfs ...
を設定するだけです(参照:clientaddr
人5 NFS)。目的のIPが10.20.30.41の場合は、次のオプションを追加できます。
... -o clientaddr=10.20.30.41 ...`
または、すでに存在する場合は、-o
他のオプションをカンマで区切ることもできます。変化
... -o foo=bar
到着
... -o foo=bar,clientaddr=10.20.30.41
INADDR_ANYを使用してクライアントを停止できない場合それから...
私が知る限り、ソースアドレスはsrc
ルーティングテーブルのアドレスによって設定されます。バラよりピープル8 IPルーティング
したがって、Linuxは接続するリモート(NAS)IPを確認し、ルーティングテーブルでそのアドレスを探します。src
そこに指定されたアドレスを選択してください。
ターミナルでルーティングテーブルを見ると、ip route
次のようなことができます。
default via 192.168.1.254 dev wlan0 proto dhcp src 192.168.1.143 metric 600
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1 linkdown
172.19.0.0/16 dev br-ff4f53a0f3b5 proto kernel scope link src 172.19.0.1
172.22.0.0/16 dev br-66358811b693 proto kernel scope link src 172.22.0.1 linkdown
172.29.0.0/16 dev br-ce3d9cbbad0b proto kernel scope link src 172.29.0.1 linkdown
192.168.1.0/24 dev wlan0 proto kernel scope link src 192.168.1.143
192.168.1.254 dev wlan0 proto dhcp scope link src 192.168.1.143 metric 600
ここから何でも接続しようとすると、Linuxがソースアドレスとして172.17.x.x
選択していることがわかります。172.17.0.1
同様に、パブリックインターネット上のすべての項目は「デフォルトルート」を通過するため選択されます192.168.1.143
。
ip route add ...
ip route change ...
ルーティングテーブルを使用して変更できますip route del ...
。
他の問題を避けるために、ルーティングテーブルをできるだけ少し変更することをお勧めします。単一 IP のルートを作成すると、サブネット全体のパスよりも優先されます。たとえば、LANが10.20.30.0/24の場合、システムのセカンダリIPアドレスもインターフェイス上で10.20.30.22です。イーサネット0また、このLANのNASも10.20.30.31を使用します。
ip route add 10.20.30.31/32 dev eth0 src 10.20.30.22
または、NASがアドレス172.20.30.31のゲートウェイ10.20.30.1を介してアクセスできる別のネットワークにある場合:
ip route add 172.20.30.31/32 via 10.20.30.1 src 10.20.30.22
警告:上記の内容をテストする機会はありませんでした。