跳到主要内容

Ubuntu系统配置静态IP地址

为什么需要静态IP地址

在企业内部网络中,计算机是从本地连接的路由器中获取IP地址的,默认情况下这是一个动态IP地址,即每次从路由器中获取IP是随机变化的。这种规则用于普通客户机访问网络并没有什么影响,但如果是一台服务器(如悦库企业网盘服务端),则需要一个静态的IP地址,以便其他客户机以固定方式连接到服务器,而不是经常修改连接服务器的IP地址。

如何配置静态IP地址

Ubuntu18.04以后不再支持ifupdown配置网络,而改用 Netplan,本教程是基于Netplan的网络配置方法,在Ubuntu18.04上验证通过。

以下例子中,当前的动态IP为:192.168.0.13,我们将配置为静态IP: 192.168.0.180

静态IP必须和当前动态IP的网段一致,否则可能导致网络无法连接。如果静态IP已经被分配给网络中的其他主机,会造成IP冲突,网络无法连接,直接将当前动态IP配置为静态IP可以避免这一情况。

  1. 查看当前动态IP

    ifconfig

    输出内容

    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
    ether 02:42:81:00:3f:4b txqueuelen 0 (以太网)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 0 bytes 0 (0.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.0.13 netmask 255.255.255.0 broadcast 192.168.0.255
    inet6 fe80::bd31:b416:5049:bbfc prefixlen 64 scopeid 0x20<link>
    ether 08:00:27:33:20:75 txqueuelen 1000 (以太网)
    RX packets 1882 bytes 257705 (257.7 KB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 365 bytes 32881 (32.8 KB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

    其中 enp0s3 是用物理网线连接的网卡,这是一个局域网IP,地址:192.168.0.13

  2. 配置静态IP地址

    列出网络配置文件,其在不同Ubuntu版本中可能会有差异,但一定是*.yaml*文件。

    ls /etc/netplan/

    输出内容

    01-network-manager-all.yaml

    备份现有的配置文件,这样如果配置错误可以恢复。

    sudo cp  /etc/netplan/01-network-manager-all.yaml /etc/netplan/01-network-manager-all.yaml.bak

    使用vi编辑器打开

    sudo vim /etc/netplan/01-network-manager-all.yaml

    如果使用xshell方式,请在vi编辑器命令模式下输入(避免复制格式混乱):

    :set paste

    配置文件修改如下:

    其中 addresses 是静态IP地址,gateway4是网关地址,nameservers是DNS服务器地址。

    network:
    ethernets:
    enp0s3:
    dhcp4: no
    addresses: [192.168.0.180/24]
    optional: true
    gateway4: 192.168.0.1
    nameservers:
    addresses: [192.168.0.1,223.6.6.6]

    version: 2
  3. 重启网络服务使配置生效

    sudo netplan apply
  4. 验证结果

    ifconfig

    输出内容

    docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
    inet 172.17.0.1 netmask 255.255.0.0 broadcast 172.17.255.255
    ether 02:42:81:00:3f:4b txqueuelen 0 (以太网)
    RX packets 0 bytes 0 (0.0 B)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 0 bytes 0 (0.0 B)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
    enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
    inet 192.168.0.180 netmask 255.255.255.0 broadcast 192.168.0.255
    inet6 fe80::bd31:b416:5049:bbfc prefixlen 64 scopeid 0x20<link>
    ether 08:00:27:33:20:75 txqueuelen 1000 (以太网)
    RX packets 1882 bytes 257705 (257.7 KB)
    RX errors 0 dropped 0 overruns 0 frame 0
    TX packets 365 bytes 32881 (32.8 KB)
    TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0