為CentOS 7配置靜態IP地址及遇到的問題解決策略
1. 為CentOS 7配置靜態IP地址的兩種方法
(原文地址:http://www.linuxidc.com/Linux/2014-10/107789.htm)
使用下面的命令來驗證網絡管理器服務的狀態:
- $ systemctl status NetworkManager.service
運行以下命令來檢查受網絡管理器管理的網絡接口:
- $ nmcli dev status
如果某個接口的nmcli的輸出結果是“已連接”(如本例中的enp0s3),這就是說該接口受網絡管理器管理。你可以輕易地為某個特定接口禁用網絡管理器,以便你可以自己為它配置一個靜態IP地址。
下面將介紹在CentOS 7上為網絡接口配置靜態IP地址的兩種方式,在例子中我們將對名為enp0s3的網絡接口進行配置。
1.1 不使用網絡管理配置靜態IP地址
進入/etc/sysconfig/network-scripts目錄,找到該接口的配置文件(ifcfg-enp0s3)。如果沒有,請創建一個。
打開配置文件並編輯以下變量:
在上圖中,“NM_CONTROLLED=no”表示該接口將通過該配置文件進行設置,而不是通過網絡管理器進行管理。“ONBOOT=yes”告訴我們,系統將在啟動時開啟該接口。
保存修改並使用以下命令來重啟網絡服務:
- # systemctl restart network.service
現在驗證接口是否配置正確:
- # ip add
1.2 使用網絡管理器配置靜態IP地址
如果你想要使用網絡管理器來管理該接口,你可以使用nmtui(網絡管理器文本用戶界面),它提供了在終端環境中配置配置網絡管理器的方式。
在使用nmtui之前,首先要在/etc/sysconfig/network-scripts/ifcfg-enp0s3中設置“NM_CONTROLLED=yes”。
現在,請按以下方式安裝nmtui。
- # yum install NetworkManager-tui
然后繼續去編輯enp0s3接口的網絡管理器配置:
- # nmtui edit enp0s3
在下面的屏幕中,我們可以手動輸入與/etc/sysconfig/network-scripts/ifcfg-enp0s3中所包含的內容相同的信息。
使用箭頭鍵在屏幕中導航,按回車選擇值列表中的內容(或填入想要的內容),最后點擊屏幕底部右側的確定按鈕。
最后,重啟網絡服務。
- # systemctl restart network.service
2. 遇到的問題及解決策略
當我按照上述方法去配置靜態IP時發現了幾個問題,總的來說上述方法正確,但有幾點可能會出現問題,在此我寫了出來,希望遇到相關問題的朋友可以注意一下。
2.1 當我按照上述1.1配置時發現ifcfg-enp0s3文件當中沒有IPADDR,NETMASK等大部分選項時怎么辦?
策略:這是由於你的IP配置可能設置成了自動獲取。你可以用1.2中的方法來配置。
2.2 按照上述方法配置后發現重啟網絡服務總是失敗出現錯 誤“Job for network.service failed. See 'systemctl status network.service' and 'journalctl -xn' for deta”怎么辦?
策略:使用systemctl status network查看服務狀態,得到如下錯誤信息:
# systemctl status network network.service - LSB: Bring up/downnetworking Loaded: loaded (/etc/rc.d/init.d/network) Active: failed (Result: exit-code) since Sun 2014-11-23 22:09:08 EST;15min ago Process: 597 ExecStart=/etc/rc.d/init.d/network start (code=exited,status=1/FAILURE) Nov 23 22:09:07 hdcoe02 network[597]:Bringing up loopback interface: Couldnot load file '/etc/sysconfig/network-scripts/ifcfg-lo' Nov 23 22:09:07 hdcoe02 network[597]:Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo' Nov 23 22:09:08 hdcoe02 network[597]:Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo' Nov 23 22:09:08 hdcoe02 network[597]:Could not load file '/etc/sysconfig/network-scripts/ifcfg-lo' Nov 23 22:09:08 hdcoe02 network[597]:[ OK ] Nov 23 22:09:08 hdcoe02 network[597]:Bringing up interface enp0s25: Error:Connection activation failed: Connection 'enp0s25' is not available on thedevice enp0s25 at this time. Nov 23 22:09:08 hdcoe02 network[597]:[FAILED] Nov 23 22:09:08 hdcoe02 systemd[1]:network.service: control process exited, code=exited status=1 Nov 23 22:09:08 hdcoe02 systemd[1]: Failedto start LSB: Bring up/down networking. Nov 23 22:09:08 hdcoe02 systemd[1]: Unitnetwork.service entered failed state.
從錯誤提示“Error: no device found for connection 'eth0'”可以確定是配置文件eth0的問題,打開查看/etc/sysconfig/network-scripts/ifcfg-eth0文件發現其中的MAC地址和ifconfig命令輸出的MAC地址不一樣,具體如下所示:
[root@openstack ~]# cat /etc/sysconfig/network-scripts/ifcfg-enp0s3 HWADDR=1A:E9:47:A5:75:C8 TYPE=Ethernet BOOTPROTO=static DEFROUTE=yes PEERDNS=yes PEERROUTES=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_PEERDNS=yes IPV6_PEERROUTES=yes IPV6_FAILURE_FATAL=no IPADDR=192.168.1.79 PREFIX=24 GATEWAY=192.168.1.1 DNS1=192.168.1.1 DNS2=8.8.8.8 NAME=eth0 UUID=ba670f0c-201a-483b-8379-c8c72c03ab27 ONBOOT=yes
[root@openstack ~]# ifconfig enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.1.79 netmask 255.255.255.0 broadcast 192.168.1.255 inet6 fe80::8081:a6ff:fe9d:5887 prefixlen 64 scopeid 0x20<link> ether 82:81:a6:9d:58:87 txqueuelen 1000 (Ethernet) RX packets 3426 bytes 394042 (384.8 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 57 bytes 9578 (9.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
所以只需將ifcfg-enp0s3中的HWADDR變量值改為ifconfig命令里顯示的MAC地址即可。
2.3 windows PING不通VM下的CENTOS虛擬機?
策略:原因:window的IP是192.168.1.106,而虛擬機的CENTOS的IP是192.168.0.11。不在同一個網段,把虛擬機的CENTOS的IP設置成192.168.1.X (X代表0-255的數字。)就可以了。
3. IP配置中的幾個單詞的含義
1. DEVICE=eth0//指出設備名稱
2. ONBOOT=yes//是否啟動應用
3. BOOTPROTO=static//啟動類型 靜態 (默認dhcp)
4. IPADDR=192.168.0.77//IP地址
5. NETMASK=255.255.255.0//子網掩碼
6. GATEWAY=192.168.0.1//網關
以上是我配置IP時所遇到的問題以及通過搜索大量資料所找到的解決方案,並不能保證這種問題都可以這樣解決。