我看到有人说设置静态 IP 的文件仍然/etc/network/interfaces
我还看到其他人说在 18.04 中它已经打开了/etc/netplan
(人们似乎对此不满意)
我试过把这个:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no
dhcp6: no
addresses: [192.168.1.9/24]
gateway4: 192.168.1.1
nameservers:
addresses: [192.168.1.1, 8.8.8.8, 8.8.4.4]
在我/etc/netplan/50-cloud-init.yaml
看来sudo netplan apply
,但这只会切断服务器与互联网的连接。
答案1
所有告诉您直接编辑的答案/etc/netplan/50-cloud-init.yaml
都是错误的,因为使用了 CloudInit 并将生成该文件。在 Ubuntu 18.04.2 中,它在文件中清楚地写着:
$ cat /etc/netplan/50-cloud-init.yaml
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
eno1:
dhcp4: true
version: 2
/etc/cloud/cloud.cfg.d/
因此,如果您仍想使用 CloudInit,则不应编辑该文件,而应编辑下面的文件。
另一种方法是先创建一个空文件来完全禁用 CloudInit /etc/cloud/cloud-init.disabled
(请参阅https://cloudinit.readthedocs.io/en/latest/topics/boot.html),然后其他答案都正确。在 Ubuntu 18.04.2 下,我不得不使用dpkg-reconfigure cloud-init
来让它考虑文件/etc/cloud/cloud-init.disabled
。我认为这有点奇怪。
我建议您重命名该文件(名称不正确,因为50-cloud-init.yaml
我们认为它仍然使用 CloudInit)。
然后,您可能会得到一个/etc/netplan/01-netcfg.yaml
包含以下配置的文件名。请注意使用networkd
渲染器而不是NetworkManager
因为配置在服务器上。
network:
version: 2
renderer: networkd
ethernets:
eno1:
dhcp4: no
addresses: [192.168.1.246/24]
gateway4: 192.168.1.1
nameservers:
addresses: [192.168.1.1]
答案2
这是设置静态IP指令Ubuntu-Server 18.04 和 20.04
$ sudo nano /etc/netplan/50-cloud-init.yaml
然后替换您的配置,例如以下几行:
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
version: 2
renderer: networkd
ethernets:
ens160: # Your ethernet name.
dhcp4: no
addresses: [192.168.1.137/24]
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8,8.8.4.4]
应用更改:
$ sudo netplan apply
如果遇到一些问题,请执行:
$ sudo netplan --debug apply
[笔记]:
答案3
我找到了使用 cloud-init 的另一种方法。
- 编辑文件
/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg
- 其内容似乎与 /etc/netplan 中的内容相同。 cloud-init
使用此命令清理、重新启动并重新初始化:sudo cloud-init clean -r
就这样!您的系统将重新启动,
cloud-init
重新初始化并拾取更改/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg
并将其应用到/etc/netplan/50-cloud-init.yaml
,一切就绪。使用 进行验证ifconfig
。
答案4
配置文件位于YAML 格式:不要使用标签在配置文件时。它仅适用于空间。