1. 程式人生 > >Ubuntu虛擬機器設定固定IP上網(配置IP、閘道器、DNS、防止resolv.conf被重寫)

Ubuntu虛擬機器設定固定IP上網(配置IP、閘道器、DNS、防止resolv.conf被重寫)

虛擬機器裡設定上網方式為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/14.04

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


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

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



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

點選NAT設定按鈕可以檢視DNS、閘道器資訊,如圖:


如果採用的是bridge橋接模式,那麼閘道器,子網掩碼,DNS這些資訊跟主機保持一致即可(windows為例),因為橋接模式下虛擬機器等同於一臺獨立的主機,網路設定自然也是一樣:



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 lo
iface lo inet loopback
#the primary network interface
auto eth0iface eth0 inet staticaddress 192.168.2.170netmask 255.255.255.0gateway 192.168.2.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 192.168.1.1
nameserver 8.8.8.8
nameserver 8.8.4.4

當然這裡是因人而異了,加上你自己的DNS伺服器即可,8.8.8.8和8.8.4.4是google提供的免費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 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有啥關係,檢視:

[email protected]:~$ 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 /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更簡單, 多個dns直接空格分開

複製程式碼
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
#the primary network interface
auto eth0
iface eth0 inet static
address 192.168.2.170
netmask 255.255.255.0
gateway 192.168.2.2

dns-nameservers 192.168.1.1 8.8.8.8 8.8.4.4
複製程式碼

(4)重啟虛擬機器網路

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

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

也可以重啟網絡卡:

sudo ifconfig eth0 down 
sudo ifconfig eth0 up

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

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

相關推薦

Linux系列:Ubuntu虛擬機器設定固定IP上網配置IPDNS防止resolv.conf重寫

虛擬機器裡設定上網方式為NAT最方便,因為無需手動設定即可上網,但是NAT的上網方式預設是DHCP動態分配IP的,這意味著你每次重啟虛擬機器都有不一樣的IP地址,這對一般使用者沒任何問題。但是如果你的機子有特殊用處,比如作為伺服器,需要IP地址資訊,亦或者像我一樣,作為一個

Ubuntu虛擬機器設定固定IP上網配置IPDNS防止resolv.conf重寫

虛擬機器裡設定上網方式為NAT最方便,因為無需手動設定即可上網,但是NAT的上網方式預設是DHCP動態分配IP的,這意味著你每次重啟虛擬機器都 有不一樣的IP地址,這對一般使用者沒任何問題。但是如果你的機子有特殊用處,比如作為伺服器,需要IP地址資訊,亦或者像我一樣,作為

虛擬機器可上外網,可ping通,但是ping不通主機,主機卻可以ping通虛擬機器

我在Windows7系統安裝了虛擬機器,通過虛擬機器安裝了Ubuntu13.04,我設定的主機與虛擬機器的連線方式是橋接,安裝好後,發現虛擬機器ping不通主機,但是主機可以ping通虛擬機器。 我的操作是:關閉防火牆,發現虛擬機器可以ping通主機了。說明是

IP,子網掩碼,預設DNS都是什麼,有什麼用

是Classful還是Classless取決於你在路由器上執行的路由協議,一個路由器上可同時執行Classful和Classless的路由協議。RIP1是Classful的,它在做路由廣播時不帶掩碼資訊;OSPF,EIGRP,BGP4是Classless的,它們在做路由廣播時帶掩碼資訊,它們可以同時執行在同一

IP地址子網掩碼DNS地址

  ip:網際網路上聯接了無數的服務和電腦,每一個主機都有惟一的地址,作為該主機在Internet上的唯一標誌,即IP地址(Internet Protocol Address)。它是一串4組由圓點分割的數字組成的,其中每一組數字都在0-255之間,如202.20

VMWare虛擬機器設定固定ip上網方法

  前一陣子自己在虛擬機器安裝了Linux Mint,使用的是DHCP方式上網,這樣每次獲取的ip都是不固定的,由於我編寫程式的方法,是用secureCRT以SSH方式連線到 Vmware上使用Linux程式設計,有時開啟smaba服務共享目錄,在windows下使用s

ubuntu 虛擬機器設定靜態ip

$ sudo vim /etc/network/interfaces      auto ens33           # 使用的網路介面,之前查詢介面是為了這裡     iface ens33 inet static   &

ubuntu虛擬機器下橋接模式,靜態ip上網

近期使用VM安裝了ubuntu12.10玩玩,途中也遇到了許多問題,安裝完成後,系統預設是選擇NAT連線方式的,可以直接通過火狐瀏覽器上網。(不需任何設定,系統自己配置好了)。但是在和PC和板子互ping的時候出現了問題,首先,PC的IP是固定的(公司固定的),因此使用NA

虛擬機器中 CentOS 無法上網connect: network is unreachable

以往記得在VirtualBox中安裝完CentOS後是可以直接使用的,今天安裝好了以後發現上不了網,表現為使用ping時提示connect network is unreachable。通過ifconfig發現網絡卡沒有分配IP地址,考慮是DHCP的問題,遂su

Ubuntu虛擬機器通過主機SS上網

若虛擬機器有圖形介面,參照CodingStory的此篇部落格。否則,如下: 假設: 主機ip為192.168.1.100,閘道器192.168.1.1,本地開啟的SS埠為1080。 虛擬機器中,在全

海思單板PC 與Ubuntu虛擬機器設定同一網段

1.在PC端,windows + R ——> cmd——>ipconfig/all ,或者控制面板——>網路共享中心——>本地連線——>ipv4——>屬性  中檢視PC ip地址 2.  a) Linux單板:ifconfig eth0

KVM虛擬機器設定橋接上網

     # iptables -t filter -L -nv Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target     prot opt in     out     source               destinat

Ubuntu虛擬機器雙網絡卡的配置(U-boot,tftp下載)

  通過此文的設定,可以讓Ubuntu虛擬機器實現: 1.ubuntu虛擬機器能上網查資料,下載軟體等; 2.tftp伺服器能給本地裝置傳輸資料,不會和ubuntu網路衝突。   一,VMWare新建兩個虛擬網路,如:Vmnet0、Vmnet1;    

Ubuntu 16.04設定IPDNS

對於Ubuntu和CentOS 6配置都適用1、修改IP地址開啟/etc/network/interfacessudo vim /etc/network/interfaces加入以下語句:auto eth0 #要設定的網絡卡 iface eth0 inet static #設

CentOS 設定網路修改IP&修改&修改DNS

CentOS修改IP地址 # ifconfig eth0 192.168.1.80 這樣就把IP地址修改為192.168.1.80(如果發現上不了網了,那麼你可能需要把閘道器和DNS也改一下,後面會提到),但是當你重新啟動系統或網絡卡之後,還是會變回原來的地址,這種修

iOS獲取WIFI配置資訊,WIFI名稱路由器地址本機IP地址DNS

DEMO地址(看程式碼,什麼就都有了):https://github.com/SimpleBraver/test_wifi.git 1、獲取當前手機WIFI名稱資訊 #import <SystemConfiguration/CaptiveNetwork.h> //iOS獲取當前手

IP地址子網掩碼預設網管關係

網路管理中的IP地址、子網掩碼和閘道器是每個網管必須要掌握的基礎知識,只有掌握它,才能夠真正理解TCP/IP協議的設定。以下我們就來深入淺出地講解什麼是子網掩碼。 IP地址的結構 網際網路是由許多小型網路構成的,每個網路上都有許多主機,這樣便構成了一個有層次的結構。IP地址在

Linux下用ifconfig命令設定IP掩碼

2 ifconfig 配置網路介面; ifconfig 可以用來配置網路介面的IP地址、掩碼、閘道器、實體地址等;值得一說的是用ifconfig 為網絡卡指定IP地址,這只是用來除錯網路用的,並不會更改系統關於網絡卡的配置檔案。如果您想把網路介面的IP地址固定下來,目前有三個方法:一是通過各個 發行和版本專用

Android 命令設定獲取IP地址dns

通過shell命令設定(獲取)IP、閘道器、dns資訊,需要獲取root許可權 檢視所有網路資訊 C:\>adb shell [email protected]:/ # netcf

linux 怎樣設定ip掩碼

1、命令列使用vi編輯器開啟網絡卡配置檔案ifcfg-eth0:vi /etc/sysconfig/network-scripts/ifcfg-eth02、開始編輯,填寫ip地址、子網掩碼、閘道器、DNS等。其中“紅框內的資訊”是必須得有的。3、編輯完後,儲存退出。4、重啟網