Ubuntu實現(xiàn)修改局域網(wǎng)IP地址(Netplan)
在服務(wù)器或虛擬機(jī)環(huán)境中,我們通常需要為 Ubuntu 設(shè)置固定的局域網(wǎng) IP,例如從 192.168.100.142 調(diào)整為 192.168.100.151,以便用于 Docker、NAS、數(shù)據(jù)庫、反向代理等長期運行的服務(wù)。
一、Ubuntu 當(dāng)前使用的網(wǎng)絡(luò)配置體系
從 Ubuntu 18.04 開始,系統(tǒng)默認(rèn)使用 Netplan 作為網(wǎng)絡(luò)配置抽象層:
配置文件位于:/etc/netplan/*.yaml
Netplan 會生成底層的:
systemd-networkd或NetworkManager配置
只要你看到 .yaml 文件,說明你使用的就是 Netplan。
ls /etc/netplan
常見文件名例如:
00-installer-config.yaml 50-cloud-init.yaml
二、確認(rèn)當(dāng)前網(wǎng)卡名稱(非常重要)
在修改 IP 之前,必須確認(rèn)真實的網(wǎng)卡名:
ip addr
你會看到類似輸出:
2: ens18: <BROADCAST,MULTICAST,UP,LOWER_UP>
inet 192.168.100.142/24
本文示例統(tǒng)一使用 ens18,請以你的實際網(wǎng)卡名為準(zhǔn)。
三、傳統(tǒng)寫法的問題:gateway4 已被廢棄
很多舊教程仍然使用:
gateway4: 192.168.100.1
在較新的 Netplan 版本中,這一寫法會出現(xiàn)警告:
gateway4 is deprecated
為什么會被廢棄?
原因并不是“不能用”,而是 設(shè)計升級:
gateway4 只能描述“一個默認(rèn)網(wǎng)關(guān)”
無法支持:
- 多路由
- 策略路由
- IPv4 / IPv6 統(tǒng)一建模
Netplan 正在統(tǒng)一使用 顯式路由模型。
四、正確、推薦、無警告的寫法(重點)
下面是 官方推薦、未來長期有效 的配置方式。
示例:將 IP 改為192.168.100.151
network:
version: 2
ethernets:
ens18:
dhcp4: false
addresses:
- 192.168.100.151/24
routes:
- to: default
via: 192.168.100.1
nameservers:
addresses:
- 8.8.8.8
- 114.114.114.114關(guān)鍵字段說明
addresses
/24等價于255.255.255.0
routes
to: default表示默認(rèn)路由via表示下一跳(路由器 IP)
nameservers
- 只影響 DNS,不影響局域網(wǎng)通信
五、遠(yuǎn)程 SSH 環(huán)境下的安全應(yīng)用方式
如果你是通過 SSH 連接服務(wù)器,不要直接 netplan apply。
推薦使用
sudo netplan try
特性:
- 配置生效后會進(jìn)入確認(rèn)倒計時
- 如果網(wǎng)絡(luò)斷開,自動回滾
- 非常適合遠(yuǎn)程修改 IP
確認(rèn)網(wǎng)絡(luò)正常后,按提示回車即可。
六、驗證是否配置成功
查看 IP
ip addr show ens18
查看默認(rèn)路由
ip route
應(yīng)看到:
default via 192.168.100.1 dev ens18
七、常見踩坑點匯總
1. IP 沖突
修改前請確認(rèn)目標(biāo) IP 未被占用:
ping 192.168.100.151
2. YAML 縮進(jìn)錯誤
- 只能使用空格
routes下的- to與via縮進(jìn)必須一致
3. cloud-init 覆蓋配置
如果存在 50-cloud-init.yaml,需確認(rèn) cloud-init 是否會在重啟時重寫網(wǎng)絡(luò)配置。
參考資料:
1.Netplan 官方文檔(Canonical)
- Netplan 的設(shè)計理念、配置語法以及推薦實踐。
- https://netplan.readthedocs.io/en/stable/
2.Netplan 路由配置說明(Default Route / routes)
- 官方對
routes:、to: default、via:的說明。 - https://netplan.readthedocs.io/en/stable/netplan-yaml/#routes
3.Ubuntu Server 網(wǎng)絡(luò)配置文檔
- Ubuntu 官方對 Server 環(huán)境下網(wǎng)絡(luò)配置方式的說明,明確 Netplan 為默認(rèn)方案。
- https://ubuntu.com/server/docs/network-configuration
4.systemd-networkd 文檔(Netplan 底層實現(xiàn)之一)
- Netplan 在 Server 環(huán)境下通常生成 systemd-networkd 配置,理解這一層有助于排錯。
- https://www.freedesktop.org/software/systemd/man/systemd-networkd.service.html
5.cloud-init 網(wǎng)絡(luò)配置說明
- 云主機(jī)或虛擬機(jī)環(huán)境中,Netplan 配置被重寫的根源,排查
50-cloud-init.yaml時非常有用。 - https://cloudinit.readthedocs.io/en/latest/topics/network-config.html
九、總結(jié)
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Apache服務(wù)器關(guān)閉TRACE Method請求方式的方法
這篇文章主要介紹了Apache服務(wù)器關(guān)閉TRACE Method請求方式的方法,因為支持該方式的服務(wù)器存在跨站腳本漏洞,需要的朋友可以參考下2014-06-06
CentOS VPS安裝Kloxo免費虛擬主機(jī)管理系統(tǒng)
之前介紹過使用LNMP一鍵安裝包配置Web服務(wù)器環(huán)境。配置環(huán)境雖然簡單,但往后維護(hù)服務(wù)器的工作都是通過SSH,這還是需要學(xué)習(xí)一定的命令的。2011-03-03
Windows 配置Apache以便在瀏覽器中運行Python script的CGI模式
在前面的我的一篇文章中 “Windows XP下的Python 首次安裝配置和使用 ”談到當(dāng)想在Apache服務(wù)器下運行Python script的時候,發(fā)現(xiàn)Apache的mod_python版本還不支持Python 2.6更別說3.0.1了,只有2.5之下的,折騰著卸載和安裝,最后還沒搞定,就先擱一邊了。2009-07-07
Linux下Mysql定時任務(wù)備份數(shù)據(jù)的實現(xiàn)方法
當(dāng)安裝完成操作系統(tǒng)之后,默認(rèn)便會啟動此任務(wù)調(diào)度命令。下面這篇文章主要給大家介紹了關(guān)于在Linux下Mysql定時任務(wù)備份數(shù)據(jù)的實現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2018-11-11
關(guān)于Apache默認(rèn)編碼錯誤 導(dǎo)致網(wǎng)站亂碼的解決方案
Apache默認(rèn)編碼UTF-8在解析A網(wǎng)站的時候沒有任何問題,當(dāng)運行B網(wǎng)站時出現(xiàn)的"蝌蚪文"亂碼問題2011-12-12
linux下apache開啟url重寫的方法(詳細(xì)說明)
Apache 2.x 中URL重寫,是通過mod_rewrite.so 來實現(xiàn)的,所以您要查看您的Apache 是否已經(jīng)被編譯進(jìn)去這個模塊了,并且在Apache的配置文件httpd.conf 中已經(jīng)調(diào)用了這個模塊2012-04-04

