背景
在使用ubuntu嵌入式開發過程中,不管是使用ssh登錄虛擬機還是需要使用FTP,NFS等都需要開發虛擬機的IP一直不變,一般我們有兩種方案,其一是使用一個路由器,虛擬機使用橋接的方式,直接接入路由器,然后設置使用靜態IP的方式,另外一種就是是用NAT的方式,同時設置NAT方式為靜態IP。這里只說明在設置NAT方式,及這過程中遇到的問題及解決方式
1、vmware的配置
Vmware客戶端的配置,編輯->虛擬網絡編輯器,點擊更改設置,然后安裝下圖
1、取消DHCP的勾選,2、NAT設置,記住其中的網關配置信息,如下圖中的192.168.128.2,后面配置靜態IP時需要用到
2、VMNet8配置
配置主機vmnet8的靜態IP信息,如下圖步驟所示,IP地址及其掩碼參考vmware的NAT配置信息,DNS可以自己指定,下面使用的是阿里雲的DNS
3、ubuntu虛擬機配置
從Ubuntu 17.10開始,已放棄在 /etc/network/interfaces 里固定 IP 的配置,即使配置也不會生效。Ubuntu引入了一個名為Netplan的新工具,用於網絡設置管理,Netplan將根據YAML描述文件,來配置網關參數信息。我們使用的是20.04的版本,我們需要修改/etc/netplay/目錄下的.yaml文件,沒有的話就新建一個,根據需要,配置如下:
network:
ethernets:
ens33: #配置的網卡的名稱
addresses: [192.168.128.158/24] #配置的靜態ip地址和掩碼
dhcp4: no #關閉DHCP,如果需要打開DHCP則寫yes
optional: true
gateway4: 192.168.128.2 #網關地址
nameservers:
addresses: [192.168.31.2] #DNS服務器地址,多個DNS服務器地址需要用英文逗號分隔開
version: 2
renderer: networkd #指定后端采用systemd-networkd或者Network Manager,可不填寫則默認使用systemd-workd
執行 sudo netplan apply
另外,有的說需要修改/etc/NetworkManager/NetworkManager.conf文件,將managed=false 改為managed=true,但是我不修改也可以,供參考吧
在設置這個文件時,一定要注意:
1、ip地址和DNS服務器地址需要用[]括起來,但是網關地址不需要
2、注意每個冒號后邊都要先加一個空格
3、注意每一層前邊的縮進,至少比上一層多兩個空格,推薦直接用4個空格,2個空格有時也會報錯
4、其中遇到的巨坑,就是在填寫DNS服務器時,也就是nameservers的addresses信息,我開始填寫的是223.5.5.5,也就是一個公網阿里的DNS信息,導致在shell中ping百度時,怎么都是顯示域名解析失敗,但是ping百度的IP時,又是可以的,想了各種辦法,發現是需要設置成網關的地址就行了。