昨天我在数据中心内快速重新安装了(物理)服务器,由于我的时间很短并且无法轻松访问我们的数据库,因此我为它分配了一个我知道可用的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地址。我继续将其删除:
ip addr del 172.16.130.10/22 dev eth0
但是,一旦Enter我的SSH会话冻结,我就不再能够连接。我必须要求现场操作员为我重新启动服务器。
我哪里做错了?为什么删除该地址会终止我的连接?
2
除了Mathews的出色答案之外:在许多Unix(和类似Unix的系统)中,对绑定IP地址的任何更改都会短暂地断开所有打开的会话与该接口的连接(即使是使用其他地址的会话)。这样会使您退出SSH会话,但是在这种情况下,您可以立即重新连接。
—
托尼2015年
我相信这个问题仅存在于IPv4中。我认为如果您使用IPv6不会发生这种情况。
—
卡巴斯德,2015年