如何在 Ubuntu Server 18.04 上设置静态 IP

如何在 Ubuntu Server 18.04 上设置静态 IP

我看到有人说设置静态 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

[笔记]:

  • /24相当于255.255.255.0
  • ens160是你的以太网名称,你可以使用$ ifconfig
  • Ubuntu 16.04 和 14.04网络接口配置有不同的方法。
  • 该文件位于YAML 格式:使用空格,不要使用制表符。

答案3

我找到了使用 cloud-init 的另一种方法。

  1. 编辑文件/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg- 其内容似乎与 /etc/netplan 中的内容相同。
  2. cloud-init使用此命令清理、重新启动并重新初始化:

    sudo cloud-init clean -r
    
  3. 就这样!您的系统将重新启动,cloud-init重新初始化并拾取更改/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg并将其应用到/etc/netplan/50-cloud-init.yaml,一切就绪。使用 进行验证ifconfig

答案4

配置文件位于YAML 格式:不要使用标签在配置文件时。它仅适用于空间

相关内容