1. 程式人生 > >虛擬機器中設定 CentOS 靜態 IP

虛擬機器中設定 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