Вчера я сделал быструю переустановку (физического) сервера в центре обработки данных, и, поскольку у меня было мало времени, и у меня не было легкого доступа к нашей базе данных, я просто назначил ему IP-адрес, который, как я знал, был доступен и позволил бы мне позже получить доступ к назначению. правильный адрес и продолжить предоставление с более теплого места.
Сегодня я вошел на сервер (172.16.130.10/22) и сделал следующее:
ip addr add 172.16.128.67/22 dev eth0
С терминала на моей локальной рабочей станции я проверил, что он ответил на запрос ping на новый адрес и вошел через него:
$ 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
Но как только я нажал, Enterмоя сессия SSH замерла, и я больше не мог подключаться. Мне пришлось попросить оператора на месте перезагрузить сервер для меня.
Где я ошибся? Почему удаление этого адреса уничтожило бы мое соединение?
Ответы:
В Linux IP-адреса имеют понятие «первичный» и «вторичный» адреса. Первичным обычно является первый адрес, который вы добавляете в систему. Удаление основного адреса также подразумевает очистку всего списка дополнительных адресов.
Вы можете избежать этого, установив sysctl
net.ipv4.conf.all.promote_secondaries
в 1 следующим образом:Это меняет поведение таким образом, что при удалении основного IP-адреса он не сбрасывает оставшиеся адреса и вместо этого будет выдвигать новый IP-адрес в качестве основного.
источник
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.