原文轉自:http://www.cnblogs.com/lanxuezaipiao/p/3613497.html#undefined html
虛擬機裏設置上網方式爲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設置的具體方法。app
測試環境:工具
虛擬機版本:VMware Workstation 10oop
Ubuntu版本:Ubuntu 12.10/13.04post
由於NAT對應的是VMnet8虛擬網絡,打開Vmware自帶的虛擬網絡編輯工具Virtual Network Editor,配置以下:測試
其中子網IP根據本身狀況設置,好比我想設置固定IP地址爲192.168.1.151,那麼這裏的子網IP就填192.168.1.0,另外記得取消DHCP選項服務。雲計算
主要配置下面三個方面的內容:spa
(1)修改文件/etc/network/interfaces,這裏是IP、網關、掩碼等的一些配置;
(2)修改文件/etc/resolv.conf,這個文件保存DNS的有關信息;
(3)解決resolv.conf被重寫問題;
(4)重啓虛擬機網絡
下面是具體配置方法:
命令:sudo vi /etc/network/interfaces
或 sudo gedit /etc/network/interfaces
個人配置以下:
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.151 netmask 255.255.255.0 gateway 192.168.1.2
其中網關gateway要與Virtual Network Editor中「NAT Settings...」中的一致,通常好像都爲192.168.xx.2。
命令:sudo vi /etc/resolv.conf
或 sudo gedit /etc/resolv.conf
個人配置以下:
nameserver 202.38.64.1
固然這裏是因人而異了,加上你本身的DNS服務器便可,個人是校內DNS。
第二步中你雖然配置了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 dbus expect fork respawn script # 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有啥關係,查看:
hadoop@Master:~$ ll /etc/resolv.conf lrwxrwxrwx 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 /run/resolvconf/resolv.conf
發現這個文件與/etc/resolv.conf文件如出一轍,這就對了,在裏面加入你本身的nameserver便可,這樣每次重啓就不會被重寫了。
PS:網上也有人說修改/etc/resolvconf/resolv.conf.d/base
這個文件也行,我沒有親自測試,感興趣的可用本身測試。
說了這麼多,各版本的差別看來挺麻煩的,不知道最新的版本或之後的版本會不會又變樣了,其實這裏有個更簡單的與版本無關的方式可以防止resolv.conf文件被重寫,那就是方法二。
前面提到固定IP的上網方式主要是修改/etc/network/interfaces
這個文件,配置IP、網關什麼的,其實這裏面還有個參數能夠配置,那就是DNS了,對應的參數名爲
,這裏設置的優先級比resolv.conf高,也就是網絡會從這裏讀取DNS配置,若是沒配置纔去看resolv.conf裏面的設置,所以在這裏面配置DNS更簡單。dns-nameservers
# interfaces(5) file used by ifup(8) and ifdown(8) auto lo iface lo inet loopback auto eth0 iface eth0 inet static address 192.168.1.151 netmask 255.255.255.0 gateway 192.168.1.2 dns-nameservers 202.38.64.1
配置完成後,重啓網絡便可,也有好幾種方法:
sudo service networking restart 或者 sudo /etc/init.d/networking restart
也能夠重啓網卡:
sudo ifconfig eth0 down sudo ifconfig eth0 up
重啓網卡對別的網卡無影響,更推薦一些。
趕忙ping下www.baidu.com吧,應該能夠上網了