![重启后恢复旧的静态 IP 地址(Ubuntu 20.04)](https://linux22.com/image/936825/%E9%87%8D%E5%90%AF%E5%90%8E%E6%81%A2%E5%A4%8D%E6%97%A7%E7%9A%84%E9%9D%99%E6%80%81%20IP%20%E5%9C%B0%E5%9D%80%EF%BC%88Ubuntu%2020.04%EF%BC%89.png)
我的家庭网络上运行着 Ubuntu Server 20.04,用作媒体服务器和存储。我最近更换了 ISP(我住在乡下,ISP 选择有限),他们不允许我更改 DHCP 的 IP 地址或关闭它。我更改了服务器上的 IP,但每次重新启动时,旧的静态 IP 地址都会作为适配器的第二个 IP 返回。此外,出于某种原因,即使 netplan 已禁用 dhcp6,也会分配 IPv6 地址。
我可以删除这些地址,直到我重新启动。我创建了一个脚本来清除陈旧的 IP,但我想知道为什么它似乎想要保留旧的东西。我已经验证了所有 DHCP 服务都已关闭,后台没有运行任何程序。这是我的 netplan 设置。
network:
ethernets:
enp2s0:
dhcp4: false
dhcp6: false
addresses: [192.168.12.20/24]
gateway4: 192.168.12.1
nameservers:
addresses: [192.168.12.1,8.8.8.8]
enp3s0:
dhcp4: false
dhcp6: false
addresses: [192.168.12.21/24]
version: 2
以下是输出ip -br a
lo UNKNOWN 127.0.0.1/8 ::1/128
enp2s0 UP 192.168.12.20/24 192.168.1.20/24 XXXX:XXXX:XXXX:XXXX/128 XXXX:XXXX:XXXX:XXXX/64 XXXX:XXXX:XXXX:XXXX/64
enp3s0 UP 192.168.12.21/24 192.168.1.21/24 XXXX:XXXX:XXXX:XXXX/128 XXXX:XXXX:XXXX:XXXX/64 XXXX:XXXX:XXXX:XXXX/64
删除 IP 只是暂时的解决办法。一旦我重新启动,IP 就会重新显示。此外,我注意到,如果我重新应用 netplan,IPv6 地址将重新应用,但 IPv4 地址则不会。这是我运行的用于删除地址的脚本。
#!/bin/bash
sudo ip a d 192.168.1.20 dev enp2s0
sudo ip a d 192.168.1.21 dev enp3s0
sudo sysctl -w net.ipv6.conf.all.disable_ipv6=1
sudo sysctl -w net.ipv6.conf.default.disable_ipv6=1
有谁能告诉我如何解决这个问题吗?
答案1
如果 netplan 目录中有多个 .yaml 文件,则 netplan 将在您生成和应用配置时使用所有文件。
我自己也遇到过这个问题。更改旧 yaml 版本文件的扩展名解决了这个问题,我只能从所需的 yaml 配置中获取 ip 地址