Linux系列:Ubuntu虛擬機器設定固定IP上網(配置IP、網關、DNS、防止resolv.conf被重寫)

來源:互聯網
上載者:User

標籤:des   blog   http   io   ar   os   sp   for   strong   

虛擬機器裡設定上網方式為NAT最方便,因為無需手動設定即可上網,但是NAT的上網方式預設是DHCP動態分配IP的,這意味著你每次重啟虛擬機器都 有不一樣的IP地址,這對一般使用者沒任何問題。但是如果你的機子有特殊用處,比如作為伺服器,需要IP地址資訊,亦或者像我一樣,作為一個雲端運算的節點, 其IP都是在設定檔裡配置好的,如果每次重啟系統都要跑過去修改下設定檔裡的IP,那簡直是不可取的做法,因此為虛擬機器設定固定IP上網非常的有必 要!

設定固定IP的方法很多,大家都知道虛擬機器上網有三種模式:bridged、host-only和NAT, 其中NAT模式對應VMnet8虛擬網路,host-only模式對應VMnet1虛擬網路,bridged模式對應 VMnet0虛擬網路,都是由VMware虛擬機器自動設定而產生的,不需要使用者自行設定。VMnet8和VMnet1提供DHCP服務,VMnet0虛擬 網路則不提供。三種方式具體的區別和介紹可看參考文獻(1)。

由於NAT的方式最簡單,因此下面是NAT設定的具體方法。

測試環境:

虛擬機器版本:VMware Workstation 10

Ubuntu版本:Ubuntu 12.10/13.04

 

1. 設定虛擬機器上網方式為NAT

 

2.  配置VMnet8虛擬網路(Virtual Network Editor)

因為NAT對應的是VMnet8虛擬網路,開啟Vmware內建的虛擬網路編輯工具Virtual Network Editor,配置如下:

其中子網IP根據自己情況設定,比如我想設定固定IP地址為192.168.1.151,那麼這裡的子網IP就填192.168.1.0,另外記得取消DHCP選項服務。

 

3.  進入到Ubuntu系統中配置網路

主要配置下面三個方面的內容:

(1)修改檔案/etc/network/interfaces,這裡是IP、網關、掩碼等的一些配置;

(2)修改檔案/etc/resolv.conf,這個檔案儲存DNS的有關資訊;

(3)解決resolv.conf被重寫問題;

(4)重啟虛擬機器網路

下面是具體配置方法:

(1)修改檔案/etc/network/interfaces

命令:sudo vi /etc/network/interfaces 或 sudo gedit /etc/network/interfaces

我的配置如下:

 

# interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.1.151netmask 255.255.255.0gateway 192.168.1.2

 

 

其中網關gateway要與Virtual Network Editor中“NAT Settings...”中的一致,一般好像都為192.168.xx.2。

(2)修改檔案/etc/resolv.conf

命令:sudo vi /etc/resolv.conf 或 sudo gedit /etc/resolv.conf

我的配置如下:

nameserver 202.38.64.1

當然這裡是因人而異了,加上你自己的DNS伺服器即可,我的是校內DNS。

 

(3)解決resolv.conf被重寫問題

第二步中你雖然配置了DNS,但是每次重啟虛擬機器或重啟網路後/etc/resolv.conf檔案就會被重寫,也就是又恢複原 樣了,你以前的配置就不存在了,每次都要手動設定是極不可取的,所以這步是必須的,首先我們要搞清楚resolv.conf被重寫的原因和機制,這在不同 Ubuntu版本下有所差異。那怎麼知道呢?一般resolv.conf檔案一開頭就告訴你了。

解決該問題其實有兩種辦法,不怕麻煩的想理解原理的請參照方法一(與版本有關),怕麻煩的不想折騰的自覺轉到方法二(與版本無關)。

 

方法一:與版本有關

a)Ubuntu 12.10

開啟/etc/resolv.conf後可看到開頭的一句話:

# Generated by NetworkManager

說明resolv.conf這個檔案是由NetworkManager這個程式產生的(對應的是network-manager服務),那麼解決辦法也就來了:我們關掉network-manager即可,命令如下:

sudo service network-manager stop 或者sudo /etc/init.d/network-manager stop

但是這種方法不是一勞永逸的,因為每次重啟系統後還是會自動啟動這個服務,因此我們需要完全禁止network-manager啟動即可。

編輯network manager的設定檔/etc/init/network-manager.conf:

sudo vi /etc/init/network-manager.conf

注釋掉其中的start on部分即可:

# network-manager - network connection manager## The Network Manager daemon manages the system‘s network connections,# automatically switching between the best available.description     "network connection manager"#start on (local-filesystems#         and started dbus#         and static-network-up)stop on stopping dbusexpect forkrespawnscript        # set $LANG so that messages appearing on the GUI will be translated. See LP: 875017        if [ -r /etc/default/locale ]; then                . /etc/default/locale                export LANG LANGUAGE LC_MESSAGES LC_ALL        fi

 

 

b)Ubuntu 13.04

不知道Ubuntu從哪個版本開始不是由NetworkManager產生resolv.conf的了,至少在13.04下是這樣的,因為resolv.conf開頭寫著這樣一句話:

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

說是由resolvconf產生,NetworkManager仍然存在,因為它是DHCP上網不可缺少的,但此時禁止NetworkManager啟動 已經不管用了,因為resolv.conf已經不歸它管了,我們試著看看resolv.conf與resolvconf有啥關係,查看:

[email protected]:~$ ll /etc/resolv.conflrwxrwxrwx 1 root root 29  9月 11  2013 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

說明/etc/resolv.conf 其實只是一個link,它實際上指向的是 /run/resolvconf/resolv.conf,這也就解釋了為什麼每次重啟都會被重寫的原因,你改的只是個link,對原檔案沒有影響,而每次重啟這個link還得載入原檔案的內容,所以對link的修改無效。

解決方案就是:修改真實的原檔案,如下:

sudo vi /etc/resolvconf/resolv.conf.d/head

發現這個檔案與/etc/resolv.conf檔案一模一樣,這就對了,在裡面加入你自己的nameserver即可,這樣每次重啟就不會被重寫了。

PS:網上也有人說修改/etc/resolvconf/resolv.conf.d/base這個檔案也行,我沒有親自測試,感興趣的可用自己測試。

 

說了這麼多,各版本的差異看來挺麻煩的,不知道最新的版本或以後的版本會不會又變樣了,其實這裡有個更簡單的與版本無關的方式能夠防止resolv.conf檔案被重寫,那就是方法二。

 

方法二:與版本無關

前面提到固定IP的上網方式主要是修改/etc/network/interfaces這個檔案,配置IP、網關什麼的,其實這裡面還有個參數可以配置,那就是DNS了,對應的參數名為dns-nameservers,這裡設定的優先順序比resolv.conf高,也就是網路會從這裡讀取DNS配置,如果沒配置才去看resolv.conf裡面的設定,因此在這裡面配置DNS更簡單。

# interfaces(5) file used by ifup(8) and ifdown(8)auto loiface lo inet loopbackauto eth0iface eth0 inet staticaddress 192.168.1.151netmask 255.255.255.0gateway 192.168.1.2dns-nameservers 202.38.64.1
 (4)重啟虛擬機器網路

配置完成後,重啟網路即可,也有好幾種方法:

sudo service networking restart 或者sudo /etc/init.d/networking restart

也可以重啟網卡:

sudo ifconfig eth0 down sudo ifconfig eth0 up

重啟網卡對別的網卡無影響,更推薦一些。

趕緊ping下www.baidu.com吧,應該可以上網了。

 

PS:當然也可以通過圖形介面network manager進行配置,但個人感覺這種方式最好,因此推薦!

Linux系列:Ubuntu虛擬機器設定固定IP上網(配置IP、網關、DNS、防止resolv.conf被重寫)

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.