我需要为 OVA 提供静态 IP。
我正在使用干净的 Ubuntu 18.04 映像并在虚拟盒和 vmware 上运行(测试)。
当我在 yaml 文件中配置 IP 地址并运行命令时:
sudo netplan apply
没有什么变化。
仅当我重新启动机器时,IP 地址才会改变。
这是我的 yaml 里面的内容:
network:
version: 2
renderer:
ethernets:
enp0s3:
dhcp4: no
addresses: [10.0.2.100/24]
gateway4: 10.0.2.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
通常,Linux 不需要重新启动。请帮帮我。
@heynnema
答案1
我的机器也遇到了同样的问题。这是 的问题renderer
,据记录,Ubuntu 服务器应该自带networkd
,但在我的计算机(Ubuntu Server 18.04)中安装的网络管理器是 ,network-manager
所以我将 更改为renderer
,NetworkManager
它又开始工作了。
您可以network-manager
通过 检查是否已安装sudo service network-manager status
。
我还是不知道为什么network-manager
安装的是 而不是networkd
但至少它现在对我来说是有效的。
答案2
在您的 .yaml 文件中,您缺少渲染器定义。它应该显示:
renderer: networkd
看看该ip
命令是否有帮助......
启动或关闭接口
以前用户习惯使用 ifconfig 命令。现在用户应该熟悉更强大的ip
命令。现在可以通过该命令手动修改网络设备ip
。
举个例子来启动一个接口然后关闭它:
ip link set enp0s3 up
ip link set enp0s3 down
有关如何操作路由、网络设备、接口和隧道状态的更多信息,请参阅“man ip”。
答案3
检查 /etc/netplan/ 目录中的 yaml 文件是否在文件名其余部分前面有最高数字。最高数字最后处理,并覆盖任何先前的配置。例如,将首先处理 50-cloud-config.yaml,然后处理 60-my-new-config.yaml。如果 60-my-new-config.yaml 重新配置了先前文件中列出的设备,则将应用后续配置。
还要注意,如果您在较早的文件中配置了设备,但没有在较新的文件中重新配置它,那么原始设备仍将存在。这可能会与您分配静态 IP 的尝试发生冲突(例如,设备 enp0s3 之前在桥接或绑定中被引用,因此无法应用新配置)。
要检查错误,请使用“--debug”(两个破折号而不是一个,如注释中所示)运行生成命令:
sudo netplan --debug generate
如果脚本有问题,它会被列出来供您更正。否则,运行 apply 不会产生任何变化(尽管您的脚本看起来不错 - 如果没有指定其他内容,则默认渲染器为“networkd”)。
然后使用 try 命令应用,如果有错误则回滚:
sudo netplan --debug try
使用 networkctl 和/或 ip 命令检查结果来查看您得到了什么。
sudo networkctl status enp0s3
sudo ip address show enp0s3