问题

基于 rk3568 芯片编译了一个 debian 系统上,想要配置静态 IP,直接在 /etc/network/interfaces.d/ 下创建了文件,然后编写了配置:

1
2
3
4
5
auto eth0
iface eth0 inet static
address X.X.X.X
netmask 255.255.255.0
gateway X.X.X.1

结果使用 ip addr 查看的时候,发现 eth0 下存在两个 inet。尝试内网 ping 这个 ip 是通的,但是访问外网的时候发现哒咩。

猜测,要么就是配置文件写错了,要么就是有内鬼……

解决

错误方案

  • 尝试把 auto eth0 关掉,还是不行。再检查了一下配置文件,觉得没错;

  • 怀疑是 NetworkManager 自作主张,给整出来的幺蛾子,直接用 systemctl disable 了,还是不行;

  • stack overflow 上有老哥说要去 /etc/sysconfig/network 下修改网卡配置,显然不是同一个发行版,别说文件了,连那个目录都不存在;

正解

于是怀疑是否是 dhcpcd 这要老哥给整的,用 systmctl status dhcpcd,实锤~~。log 里明明白白写着 rebinding 然后就从同一个冲突域下的另一个路由器上拿了个 ip 过来。

PS. 以后开发环境的网络也得小心,能用三层交换机隔离开就别拿个二层路由凑合,前前后后折腾将近1h才解决……

后记

以后还是用 nmcli 来配置网络好些,用这个工具可以直接看到当前网卡上的配置,以及查看修改后配置是否生效,这次就是默认走了dhcp拉回来的那个,导致访问不了外网。

1
2
3
4
5
6
7
8
9
nmcli connectiion show eth0
nmcli connection modify eth0 \
ipv4.method manual \
ipv4.addresses xxx.xxx.xxx.xxx/24 \
ipv4.gateway xxx.xxx.xx.xxx \
ipv4.dns xxx.xxx.xxx.xxx

# 配置有错误的会报错,修改完后启动即可
nmcli connection up eth0