虛擬機器中設定 CentOS 靜態 IP
作為開發人員在工作和學習中通過虛擬機器使用 Linux 的情況肯定會非常多,但是 Linux 自帶的終端使用體驗較差,所以絕大多數使用者都會在宿主機上使用第三方 SSH工具(例如 Xshell)進行連線,然而在虛擬機器中如果使用的是動態 IP 則會出現這次連線可以但下次連不上的情況,因為 IP 動態獲取的嘛,是會變的。所以這篇文章的目的也就在於解決此問題。
確定虛擬機器使用的網路配置
在設定靜態 IP 之前,我們需要確定當前系統動態獲取到的一些配置資訊,以便我們後續使用。
IP地址及網絡卡名稱
作者新裝的一臺虛擬機器,執行的是最小化安裝,所以什麼工具也沒有,使用 ip 來檢視,執行結果如下:
[root@192 ~]# ip addr 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 00:0c:29:90:03:54 brd ff:ff:ff:ff:ff:ff inet 192.168.234.130/24 brd 192.168.234.255 scope global noprefixroute dynamic ens33 valid_lft 1650sec preferred_lft 1650sec inet6 fe80::a120:30fb:6867:daed/64 scope link noprefixroute valid_lft forever preferred_lft forever
分析以上結果,我們可以看到網絡卡名稱為 ens33
,IP 地址為 192.168.234.130
,根據 IP 地址後的 /24
可以得知為 C 類地址,子網掩碼為 255.255.255.0
(可參考 ip地址後邊加個/8(16,24,32)是什麼意思?)
DNS 地址
CentOS 使用的 DNS 配置放置在 /etc/resolv.conf
檔案中,可以通過檢視此檔案內容獲取當前 DNS 地址。
[root@192 ~]# cat /etc/resolv.conf # Generated by NetworkManager search localdomain nameserver 192.168.234.2
根據檔案內容可以知道 DNS 伺服器地址為 192.168.234.2
閘道器地址
閘道器地址同樣可以使用 ip
命令進行檢視
[root@192 ~]# ip route show
default via 192.168.234.2 dev ens33 proto dhcp metric 100
192.168.234.0/24 dev ens33 proto kernel scope link src 192.168.234.133 metric 100
根據執行結果我們可以看到使用的閘道器地址為 192.168.234.2
彙總
根據之前的結果,我們可以彙總得到現有的網路配置資訊:
- 網絡卡名:ens33
- IP 地址:192.168.234.130
- 子網掩碼:255.255.255.0
- DNS:192.168.234.2
- 閘道器:192.168.234.2
修改 CentOS 系統設定
相比於檢視來說,設定部分相對會簡單很多,修改一個檔案就可以了,檔案路徑 /etc/sysconfig/network-scripts
,之前我們檢視到虛擬機器的網絡卡名為 ens33
,在這個目錄下有個檔案為 ifcfg-ens33
,這個就是網絡卡對應的配置檔案。
檔案內包含當前網絡卡的網路配置,預設的是通過 DHCP 來動態獲取 IP 地址,我們需要修改為靜態 IP。
# 預設內容
BOOTPROTO="dhcp"
# 修改後的內容
BOOTPROTO="static"
# 檢查以下內容,必須為 “yes”
ONBOOT="yes"
在檔案中新增以下內容,其中地址除 IP 地址為手動指定外,其他的均為之前動態獲取的內容
IPADDR="192.168.234.71"
NETMASK="255.255.255.0"
GATEWAY="192.168.234.2"
DNS1="192.168.234.2"
修改後重新啟動網路服務
[root@192 ~]# systemctl restart network
之後重新檢視地址(如果使用三方 SSH 工具則需要重新連線),可以看到 IP 地址已經變更為我們指定的地址,以後連線就不會出現獲取的地址和之前不一樣的情況了
[root@192 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:90:03:54 brd ff:ff:ff:ff:ff:ff
inet 192.168.234.71/24 brd 192.168.234.255 scope global noprefixroute ens33
valid_lft forever preferred_lft forever
inet6 fe80::a120:30fb:6867:daed/64 scope link noprefixroute
valid_lft forever preferred_lft forever
- 我的CSDN:https://blog.csdn.net/liweitao7610
- 我的部落格園:https://www.cnblogs.com/aotian/
- 我的簡書:https://www.jianshu.com/u/6b6e162f1fdc