説明できない奇妙な現象が発生したとき、複数(4)のネットワークインターフェイスを備えたArch Linuxを実行しているサーバーがありました。
2 つのインターフェースが IP アドレスで構成されています192.168.100.11/24
( 192.168.100.12/24
2 つの 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マルチ物理インターフェイス