我遇到了一个奇怪的问题:我配置了 2 个 IP 地址,但我无法删除它,而且我也不知道它配置在哪里。
> ip a s enp6s0
2: enp6s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 18:31:bf:6a:cd:89 brd ff:ff:ff:ff:ff:ff
inet 192.168.178.3/24 brd 192.168.178.255 scope global enp6s0
valid_lft forever preferred_lft forever
inet 192.168.178.114/24 brd 192.168.178.255 scope global secondary noprefixroute enp6s0
valid_lft forever preferred_lft forever
我已经配置了静态 IP/etc/网络/接口,但根本没有辅助 IP:
## The primary network interface
auto enp6s0
iface enp6s0 inet static
address 192.168.178.3/24
gateway 192.168.178.1
dns-nameserver 192.168.178.1
/var/log/syslog 显示,DHCP 地址以某种方式分配给接口:
Jul 14 12:33:03 hogwarts dhcpcd[1897]: enp6s0: leased 192.168.178.114 for 864000 seconds
Jul 14 12:33:03 hogwarts dhcpcd[1897]: enp6s0: adding route to 192.168.178.0/24
Jul 14 12:33:03 hogwarts dhcpcd[1897]: enp6s0: adding default route via 192.168.178.1
手动删除失败
ip a d 192.168.136.114/32 dev enp6s0
RTNETLINK answers: Cannot assign requested address
我找不到任何负责添加此 IP 的 systemd/initd 脚本。
我已经检查过的内容:
- 我已经将 systemd 配置为“调试”以使其更加详细,但没有成功。
- 没有 netplan 配置退出
- 在 systemctl 中禁用 NetworkManager
任何想法都值得赞赏!
系统:Ubuntu 19.04 Server,从 18.04 LTS 升级到 18.10 -> 19.04
答案1
-> Antons 的观点 2.) 引导我找到了解决方案:
不知何故,dhcpcd 正在运行(希望 docker 和 virtualbox 都不需要它)并且每次我用 Antons 点 1) 删除 IP 时,它显然会再次创建。
所以我的解决方案是
systemctl disable dhcpcd.service
systemctl stop dhcpcd.service
ip a d 192.168.178.114/24 dev enp6s0
谢谢!
答案2
与以前的版本不同,从 Ubuntu 18.04 开始使用网络计划效用。在这种新方法中,我们不再使用/etc/network/interfaces
配置 IP 地址。Netplan 的默认配置文件位于/etc/netplan
文件夹。
因此,为了找出默认网络配置文件:
ls /etc/netplan/
默认情况下,应该是50-云-初始化.yaml文件。读取该配置 yaml 文件
cat /etc/netplan/50-cloud-init.yaml
就我而言,默认配置文件如下所示:
# network: {config: disabled}
network:
ethernets:
enp2s0:
dhcp4: true
version: 2
我的网卡名称是 enp2s0,你的可能不同(如 eth0 或 wlan0 或类似的)。如果你有 2 个 IP 地址,请检查文件夹中的第二个文件网络计划。删除它就行。
最终应用您的更改
sudo netplan try
祝你好运!
答案3
您无法删除该地址,因为您指定的前缀长度不正确。您应该运行
ip address del 192.168.136.114/24 dev enp6s0
(不是192.168.136.114/32
)。但它不会产生永久效果。如果你的地址是通过 dhcp 分配的,那么你应该正在运行 dhcp 客户端。尝试使用命令找到它
ps aux | grep dhc
。要监视网络配置的变化,运行
ip monitor address
命令。检查
/etc/network/interfaces.d
目录。它可能包含其他配置文件。在同一接口上同时配置静态和 dhcp 地址的旧方法是在
interfaces
文件中指定附加别名。尝试找到类似这样的内容:
auto enp6s0:1
iface enp6s0:1 inet dhcp
- 您有正在运行的
systemd-networkd
服务吗?使用命令检查systemctl status systemd-networkd.service
。