인터페이스에서 사용하지 않는 IP 주소를 제거하면 해당 주소와 관련이없는 연결이 종료되는 이유


35

어제 데이터 센터에 (물리적) 서버를 신속하게 다시 설치했으며, 시간이 부족하고 데이터베이스에 쉽게 액세스 할 수 없었기 때문에 사용 가능한 IP를 할당하여 나중에 할당 할 수있게했습니다. 올바른 주소를 찾고 따뜻한 곳에서 계속 프로비저닝하십시오.

오늘 나는 서버에 로그인 (172.16.130.10/22)하고 다음을 수행했습니다.

ip addr add 172.16.128.67/22 dev eth0

내 로컬 워크 스테이션의 터미널에서 새 주소에 대한 핑에 응답했는지 확인하고 로그인했습니다.

$ ping 172.16.128.67
PING 172.16.128.67 (172.16.128.67) 56(84) bytes of data.
64 bytes from 172.16.128.67: icmp_req=2 ttl=62 time=3.61 ms
64 bytes from 172.16.128.67: icmp_req=3 ttl=62 time=4.87 ms
^C
$ ssh 172.16.128.67

지금까지는 새 IP 주소를 통해 연결되었으며 이전 주소는 더 이상 필요하지 않았습니다. 나는 가서 그것을 제거했다.

ip addr del 172.16.130.10/22 dev eth0

그러나 EnterSSH 세션이 멈추자 마자 더 이상 연결할 수 없었습니다. 서버를 재부팅하기 위해 현장 운영자에게 요청해야했습니다.

내가 어디로 잘못 갔니? 해당 주소를 삭제하면 왜 연결이 끊어 집니까?


2
Mathews의 탁월한 답변 외에도 많은 Unix (및 Unix 계열) 시스템에서 바인딩 된 IP 주소를 변경하면 해당 인터페이스에 대한 열려있는 모든 세션 (다른 주소를 사용하는 세션도 포함)이 잠시 끊어집니다. 따라서 SSH 세션에서 벗어날 수 있지만이 경우 즉시 다시 연결할 수 있습니다.
Tonny

이 문제는 IPv4에만 존재한다고 생각합니다. IPv6을 사용하고 있었다면 그런 일이 없었을 것 같습니다.
kasperd

답변:


53

리눅스에서 IP 주소는 '1 차'와 '2 차'주소라는 개념을 가지고 있습니다. 기본은 일반적으로 시스템에 추가하는 첫 번째 주소입니다. 기본 주소를 제거하면 전체 보조 주소 목록을 플러시하는 암시적인 작업이 있습니다.

sysctl net.ipv4.conf.all.promote_secondaries을 1 로 설정하면이 동작을 피할 수 있습니다 .

sysctl -w net.ipv4.conf.all.promote_secondaries=1

이는 기본 IP가 제거 될 때 나머지 주소를 플러시하지 않고 대신 새 IP 주소를 기본 IP로 승격시키는 동작을 변경합니다.


6
감사! 나는 또한 이것을 가로 질러왔다 :An IP address becomes secondary if another address within the same prefix (network) already exists. The first address within the prefix is primary and is the tag address for the group of all the secondary addresses. When the primary address is deleted all of the secondaries are purged too.
GnP
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.