설명할 수 없는 이상한 현상이 발생했을 때 여러(4개) 네트워크 인터페이스를 갖춘 Arch Linux를 실행하는 서버가 있었습니다.
두 개의 인터페이스가 IP 주소로 구성되어 있습니다 192.168.100.11/24
( 192.168.100.12/24
두 개의 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를 제공하는 두 개의 중복 서버를 갖는 것입니다 192.168.100.11
. 서버 중 하나의 기본 인터페이스가 다운되고 두 서버가 모두 동일한 스위치에 연결됩니다. 두 서버의 두 번째 인터페이스는 서버가 대기 중이거나 다운그레이드되었을 때 유지 관리를 위한 것입니다(물론 두 서버의 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에게 감사드립니다.
동일한 서브넷에 여러 개의 네트워크 카드를 두고 내가 원하는 동작을 보관하는 것은 쉽지 않은 것 같습니다.
문제는 리눅스가 약한 것을 사용한다는 것입니다호스트 모델그러나 여기에는 강력한 호스트 모델이 필요합니다. 다른 사람이 관심이 있는 경우 도움이 될 수 있는 serverfault 문제를 발견했습니다. 동일한 서브넷의 IP 다중 물리적 인터페이스