一次奇怪的 ip 变动
昨天,根据 Ubuntu 18.4 通用配置脚本 里的方式为一台机器配置了静态地址,但没重启,使用 sudo netplan apply
的方式使得 ip 变动了。
运行的 ok,但在凌晨三点的时候,监控显示连不上了,第二天一连接物理机,发现ip变成了 192.168.1.40
。
确定的情况是:
- 操作系统是 Ubuntu 18.04.3 server
- ip 变动前跑应用,系统负载比较大
- 静态配置文件没变动,大致信息为:
$ cat /etc/netplan/01-netcfg.yaml
network:
version: 2
renderer: networkd
ethernets:
eno1:
addresses: [192.168.1.10/24]
gateway4: 192.168.1.1
nameservers:
addresses:
- "192.168.1.1"
- ip 由
192.168.1.10
变成了192.168.1.40
- 没重启过,uptime 结果为运行了 29 天
arp -n
的结果中显示192.168.1.10
的结果是at <incomplete> on eno1
ip a
的信息是:
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
link/ether 18:66:da:ea:7a:54 brd ff:ff:ff:ff:ff:ff
inet 192.168.1.40/24 brd 192.168.1.255 scope global eno1
valid_lft forever preferred_lft forever
inet6 fe80::1a66:daff:feea:7a54/64 scope link
valid_lft forever preferred_lft forever
排查过程
怀疑使用了 keep alive
但是没找到相关进程以及相关配置文件,可以排出
怀疑网络桥接的问题
机器确实做了桥接,但是桥接网卡和 docker 网卡都是未启动状态,应该和这个无关。
查看 history 信息
先查普通用户 light 的 history 记录,没有发现特别有用的信息,确实执行过一个脚本,但该脚本没对网络做过操作。
再去看 root 的 history 记录,发现在昨天配置静态 ip 前,曾执行过 docker pull 操作,并且仓库来源是同一网段下的机器,问题移动到那台仓库机。
查看 docker 仓库机的状态
- 检测网卡:多块虚拟卡,没什么问题
- 检测 arp 信息,其中有一行有些奇怪,内容是:
192.168.1.40 ether 18:66:da:ea:7a:54 C eno2
,从这里可以看出1.40
对应的 mac 地址也确实是1.10
的网卡,但奇怪的是为什么是 eno2
猜想
由于环境比较复杂,我接入的时间有点晚,没有判断出到底是什么原因。也没有在网上找到相应的案例。目前只能看出来这台机器曾经用过 1.40
这个 ip,猜不到到底是什么原因导致 ip 做了变动。先重启机器,继续跑任务,之后再出现问题再说吧。
参考
- IP address has incomplete MAC
- [arp issue —> ? (192.168.1.1) at
on bond1](https://www.linuxquestions.org/questions/linux-networking-3/arp-issue-192-168-1-1-at-incomplete-on-bond1-903569/) - Linux高可用之Keepalived
- 详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表