准備工作
我們要將一個主機設置成靜態IP,首先,主機應該要是正常開機運行的,其次,我們需要先知道一些配置,比如當前的網段,子網掩碼,網關、DNS等,因為你總不會是想隨便配置,不連接訪問局域網中的其它主機吧?而這些信息,我們可以通過運行中的主機得到,當然,如果你事前已知曉這些配置,可以跳過,如果不知道,可以慢慢看來:
如果當前局域網內有windows系統主機,那么可以直接使用查看,鑒於各系統版本不一樣,界面可能會有區別,所以不妨使用命令行查看:
使用win+R鍵,輸入cmd,打開命令行,輸入:ipconfig /all,得到的結果中找到你所在局域網的適配器信息,從中可以得到當前的IP,子網掩碼,網關、DNS等
如果沒有windows系統主機,那么看你有沒有啟用NetworkManager,如果啟用了,那么可以類似windows的方式,直接使用:nmcli dev show ,查看所有的信息了:
NetworkManager啟用方式:
#Ubuntu需要安裝,然后啟動服務 sudo apt install network-manager sudo systemctl start NetworkManager #CentOS一般會自帶,只需要啟動服務就可以了 sudo systemctl start NetworkManager
找到對應的網絡,結果類似下面的樣子(這里沒有DNS,有的時候會有DNS,沒有的話可以參考下面的方式得到)
注:這里子網掩碼的兩種表示形式,子網掩碼的數字形式16,就是IP形式的255.255.0.0,數字24對應的就是255.255.255.0
如果沒有啟動NetworkManager,那就只能使用命令一個個查看了,而查看這些信息的命令有很多,可以自行百度,這里說一種比較通用的
DNS
linux的DNS信息保存在/etc/resolv.conf文件中,輸入:sudo cat /etc/resolv.conf,其中nameserver就是DNS配置(可能會有多個nameserver):
IPv4和子網掩碼(netmask)
如果是Ubuntu,使用命令:ifconfig,在結果中找到你所在的局域網網絡,對應的IP接子網掩碼都在上面,同時注意前面的網絡名,后面會用得上,比如我這里是ens33:
如果是CentOS,使用命令:ip addr,在結果中找到你所在的局域網網絡,對應的IP接子網掩碼都在上面,同時注意前面的網絡名,后面會用得上,比如我這里是ens33:
網關(gateway)
使用命令:ip route,其中default項就是默認網關:
開始設置
Ubuntu
如果是Ubuntu16.04,需要修改/network/interfaces來實現,輸入命令:sudo vim /etc/network/interfaces
auto ens33 iface ens33 inet static address 192.168.139.128 netmask 255.255.255.0 gateway 192.168.139.2 dns-nameserver 192.168.139.2
修改完成之后,使用:sudo /etc/init.d/networking restart 重啟網絡,然后就可以了,如果不行,可能需要重啟主機了
如果是Ubuntu18.04或Ubuntu20.04,設置靜態網絡可以使用netplan完成,在/etc/netplan目錄下有個yaml文件(文件名可能都不一樣)。
輸入命令:sudo vim /etc/netplan/50-cloud-init.yaml,(這里50-cloud-init.yaml是我的配置文件名,每個人的可能不一樣)修改內容如下:
network: version: 2 ethernets: ens33: dhcp4: false addresses: [192.168.139.128/24] gateway4: 192.168.139.2 nameservers: addresses: [192.168.139.2]
修改完成之后,使用命令:sudo netplan apply,來使得配置生效
CentOS
CentOS的每個網卡,在/etc/sysconfig/network-scripts目錄下都會有一個 ifcfg-[網絡名] 的文件,比如我的就是 ifcfg-ens33
如果安裝了NetworkManager,我們可以直接使用nmcli命令來配置:
#配置靜態IP,ens33是網絡名,192.168.139.130/24是IP和網卡,需要根據自己的實際填寫 sudo nmcli con mod ens33 ipv4.addresses 192.168.139.130/24 #配置網關 sudo nmcli con mod ens33 ipv4.gateway 192.168.139.2 #配置IP為手動設置,即從dhcp變為static sudo nmcli con mod ens33 ipv4.method manual #配置DNS sudo nmcli con mod ens33 ipv4.dns "192.168.139.2"
使用 nmcli 命令做的那些更改都將永久保存在文件 /etc/sysconfig/network-scripts/ifcfg-[網絡名](比如我這里就是ifcfg-ens33)
如果沒有安裝NetworkManager,我們可以手動的修改這個文件 /etc/sysconfig/network-scripts/ifcfg-[網絡名](比如我這里就是ifcfg-ens33)
ONBOOT=yes # 開機啟用 BOOTPROTO=static # 設置靜態 IPADDR=192.168.139.130 # 設置的靜態IP地址 NETMASK=255.255.255.0 # 子網掩碼 GATEWAY=192.168.139.2 # 網關地址 DNS1=192.168.139.2 # DNS服務器
安裝自己的配置設置上圖中的部分參數就可以了,(注意,如果配置項存在,就修改,不存在就添加,比如BOOTPROTO應該是存在的,需要修改dhcp成static)