1. 前言
今天有同學發現 Ubuntu 20.10 設置靜態 IP 后沒有生效
於是我就在虛擬機上試驗了一把,發現完全不起作用(網絡上還有很多誤人子弟的文章如此寫...不求甚解很可怕呀)
root@ubuntu20:~# cat /etc/network/interfaces
auto enpos3
iface enpos3 inet static
address 172.18.0.214
netmask 255.255.255.0
gateway 172.18.0.1
dns-nameserver 202.106.0.20
root@ubuntu20:~#
后來在搜索之后才發現,原來自 17.10 開始,Ubuntu 已放棄在 /etc/network/interfaces 里設置靜態 IP 的辦法了,即使配置也不會生效,而是改成 netplan 方式 ,配置寫在 /etc/netplan/01-network-manager-all.yaml 或者類似名稱的 yaml 文件里(此處請注意 yaml 的語法格式)
2. 設置網卡
cat /etc/netplan/01-network-manager-all.yaml
# Let NetworkManager manage all devices on this system
network:
version: 2
ethernets:
enp0s3: # 配置網卡的名稱,通過 ip a 命令查看
dhcp4: false # 關閉 DHCP,如果需要打開 DHCP 則寫 true
addresses: [172.18.0.214/24] # 配置的靜態 IP 地址和掩碼
optional: true
gateway4: 172.18.0.1 # 網關地址
nameservers:
addresses: [202.106.0.20,114.114.114.114] # DNS 服務器地址,多個 DNS 服務器地址需要用英文逗號分隔開
3. 設置后重啟網卡
root@ubuntu20:~# netplan apply
4. 查看網卡設置是否生效
root@ubuntu20:~# ifconfig enp0s3
enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.18.0.214 netmask 255.255.255.0 broadcast 172.18.0.255
inet6 fe80::a00:27ff:fe7e:6d82 prefixlen 64 scopeid 0x20<link>
ether 08:00:27:7e:6d:82 txqueuelen 1000 (Ethernet)
RX packets 456385 bytes 52540642 (52.5 MB)
RX errors 0 dropped 18 overruns 0 frame 0
TX packets 199715 bytes 19649186 (19.6 MB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
root@ubuntu20:~#
5. 測試網絡連通性
root@ubuntu20:~# ping -c5 www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=54 time=10.7 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=54 time=12.6 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=54 time=10.6 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=4 ttl=54 time=11.7 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=5 ttl=54 time=11.2 ms
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4007ms
rtt min/avg/max/mdev = 10.582/11.377/12.630/0.741 ms
root@ubuntu20:~#
6. yaml 語法
-
冒號后面如果跟內容,需要使用空格隔開
-
使用#號注釋代碼
-
縮進必須是統一的,不能空格和tab混用
-
縮進的級別也必須是一致的,同樣的縮進代表同樣的級別,程序判別配置的級別是通過縮進結合換行來實現的
-
YAML文件擴展名通常為yml或yaml