ネットワークケーブル(複数のネットワークポートを持つサーバー)を抜いた後、特定のネットワークポートのIPに接続できるのはなぜですか。

ネットワークケーブル(複数のネットワークポートを持つサーバー)を抜いた後、特定のネットワークポートのIPに接続できるのはなぜですか。

説明できない奇妙な現象が発生したとき、複数(4)のネットワークインターフェイスを備えたArch Linuxを実行しているサーバーがありました。

2 つのインターフェースが IP アドレスで構成されています192.168.100.11/24( 192.168.100.12/242 つの netctl 構成ファイルを使用)。

どちらのインターフェイスも、マイコンピュータに接続されているスイッチに接続されています。

プロファイルを有効にすると、両方のインターフェイスが正しく機能しているようです。

ただし、プライマリインターフェイス()のアドレスをpingし192.168.100.11てそのケーブルを削除すると(セカンダリインターフェイスが実行されている間)、インターフェイス192.168.100.11に接続されているケーブルがなくても応答を受け取ります。ssh 192.168.100.11無事飛行機に搭乗することもできました。

出力には、ip addrインターフェイスにキャリアがなく、動作が中断されたが IP アドレスがまだ存在していることが示されます。

2: enp7s0f0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc mq state DOWN group default qlen 1000
link/ether 00:1e:67:a3:7f:b6 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.11/24 brd 192.168.100.255 scope global enp7s0f0
   valid_lft forever preferred_lft forever
inet6 fd00::21e:67ff:fea3:7fb6/64 scope global mngtmpaddr dynamic 
   valid_lft 6836sec preferred_lft 3236sec
inet6 fe80::21e:67ff:fea3:7fb6/64 scope link 
   valid_lft forever preferred_lft forever
3: enp7s0f1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 00:1e:67:a3:7f:b7 brd ff:ff:ff:ff:ff:ff
inet 192.168.100.12/24 brd 192.168.100.255 scope global enp7s0f1
   valid_lft forever preferred_lft forever
inet6 fd00::21e:67ff:fea3:7fb7/64 scope global mngtmpaddr dynamic 
   valid_lft 6836sec preferred_lft 3236sec
inet6 fe80::21e:67ff:fea3:7fb7/64 scope link 
   valid_lft forever preferred_lft forever

ステータスを確認すると、netctl status mainプロファイルはまだアクティブです。

# netctl status main[email protected] - Main interface
   Loaded: loaded (/etc/systemd/system/[email protected]; enabled; vendor preset: disabled)
   Active: active (exited) since Thu 2015-01-08 11:29:07 UTC; 25min ago
     Docs: man:netctl.profile(5)
 Main PID: 55293 (code=exited, status=0/SUCCESS)

Jan 08 11:29:03 timingserver1 network[55293]: Starting network profile 'main'...
Jan 08 11:29:07 timingserver1 network[55293]: Started network profile 'main'

どうやってこれができますか?

その背後にあるメカニズムを理解することが私にとって重要です。計画は、IPを提供する2つの冗長サーバーを持つことです192.168.100.11。サーバの1つのプライマリインターフェイスがダウンし、両方のサーバが同じスイッチに接続されます。 2 つのサーバーの 2 番目のインターフェースは、サーバーが待機中またはダウングレードされたときの保守用です (もちろん、2 つのサーバーの IP は同じではありません)。

したがって、フェイルオーバーが発生した場合は、プライマリサーバーのインターフェイスをシャットダウンするか、ケーブルを切断してバックアップサーバーのインターフェイスを有効にします。もちろん、192.168.100.11メインサーバーがダウンしたのに応答し続けると残念なことでしょう... :-/

私のnetctl設定ファイル:

  • メインインターフェース

    Description='Main interface'
    Interface=enp7s0f0
    Connection=ethernet
    IP=static
    Address=('192.168.100.11/24')
    Gateway='192.168.100.1'
    DNS=('192.168.100.1' '8.8.8.8')
    
  • セカンダリインターフェイス

    Description='Secondary interface'
    Interface=enp7s0f1
    Connection=ethernet
    IP=static
    Address=('192.168.100.12/24')
    DNS=('192.168.100.2' '8.8.8.8')
    

誰でも私が望む解決策をアーカイブする方法を案内していただきありがとうございます。たぶん私が見過ごしている、または認識していない愚かなことかもしれませんが、今は私を悩ませています... :-/

答え1

問題は、インターフェイスがすべて同じサブネット上にあるため、すべてのインターフェイスがARP要求に応答することです。したがって、ネットワークインターフェイスのIPアドレスが異なる場合でも、ARPエントリは同じインターフェイスを指します。したがって、異なるIPからのすべてのパケットは同じMACアドレスに送信されます(すべてのIPのARPエントリに同じMACがあるため)。

私のarpキャッシュは次のとおりです。

$ ip neigh
192.168.100.11 dev enp2s0 lladdr 00:1e:67:a3:7f:b7 STALE
192.168.100.12 dev enp2s0 lladdr 00:1e:67:a3:7f:b7 STALE

ARPを見るための手がかりを提供した@ChristopherNeylanに感謝します。

同じサブネットに複数のネットワークカードを置き、私が望む動作を保持するのは簡単ではないようです。

問題は、Linuxが弱いものを使用していることです。ホストモデルしかし、ここでは強力なホストモデルが必要です。他の人が興味を持っている場合に役立つかもしれないserverfaultの問題を見つけました。 同じサブネット上のIPマルチ物理インターフェイス

関連情報