最近在做的項目需要使用google倉庫里的鏡像,所以需要用到ipv6來拉取鏡像。
我使用的是vmware虛擬機上的ubuntu16.04 linux系統(tǒng),在用橋接模式連上校園網(wǎng)之后,可以看到虛擬機被分配了ipv6地址,但是用ping6 ipv6.google.com來測試始終都ping不通,在我花了兩天嘗試了網(wǎng)上說的幾乎所有的方法都沒有成功之后,我決定徹底了解一下linux的網(wǎng)絡配置,再來解決問題。
關于這一點,我參考了這篇文章:
Ubuntu的網(wǎng)絡配置詳解
當然在實際做的過程發(fā)現(xiàn)了和文章的一些出入,以下我簡短的總結一下幾個需要用到的文件:
/etc/hosts
/etc/host.conf
/etc/network/interfaces
/etc/resolv.conf
127.0.0.1 localhost127.0.1.1 ubuntu#The following lines are desirable for IPv6 capable hosts::1 ip6-localhost ip6-loopbackfe00::0 ip6-localnetff00::0 ip6-mcastprefixff02::1 ip6-allnodesff02::2 ip6-allrouters
這個文件主要功能是域名解析時使用的,如果你對域名解析不熟悉,可以這么理解:你在瀏覽器里輸入網(wǎng)址的時候輸入的是類似于www.baidu.com之類的域名,但是實際上尋址是靠ip地址尋址,所以就需要一個解析器,將www.baidu.com與該網(wǎng)站服務器的ip對應起來,這就叫域名解析。 linux下域名解析有兩種途徑,一種叫本地解析,就是利用這個文件里的內(nèi)容解析,另一種叫dns解析,是在dns服務器中查詢ip。
該文件會將右邊的域名,對應到左邊的ip地址上去,可以看到默認情況下,localhost對應的域名為127.0.0.1,ubuntu(該域名為主機名,可以在/etc/hostname中更改)對應的域名為127.0.1.1
而下面幾行對應的是ipv6的域名解析。注意:網(wǎng)上很多教程提到用改hosts文件的方式來獲取ip,我個人是不太建議這種方式的,因為很多情況下你以為ipv6一切正常,但其實根本沒有連接到dns服務器上,只是hosts文件列的比較全而已
/etc/host.conf
該文件用來指定域名的解析順序,上文提到域名解析有兩種方式,該文件默認規(guī)定域名解析時現(xiàn)從hosts文件找,找不到在到dns服務器上找。一般不建議修改該文件
/etc/network/interfaces
這是最重要的文件,大部分的修改都是在這里進行。
該文件是確定每個網(wǎng)絡的IP類型,IP地址,子網(wǎng)掩碼,網(wǎng)關IP,廣播地址,MAC物理地址等信息,具體的設置方式網(wǎng)上有很多講解,就不在此展開我個人一般是用dhcp方式(動態(tài)獲?。┇@取所有的信息
我的interfaces文件如下:
auto loiface lo inet loopbackauto ens33iface ens33 inet dhcpiface ens33 inet6 dhcp
auto關鍵字指明接下來配置的網(wǎng)卡,一般前兩行都是本地網(wǎng)絡循環(huán),不用修改,下面的ens33
是我的以太網(wǎng)網(wǎng)絡接口(可以用ifconfig
指令查到),
iface關鍵字后指明網(wǎng)卡名稱,然后就可以對該網(wǎng)絡進行配置,無論是ipv4還是ipv6我都設置成了dhcp(動態(tài)獲取Ip)方式。
需要注意的是該文件不建議手動修改,因為該文件會根據(jù)所在的網(wǎng)絡環(huán)境,自動更新,覆蓋你的手動配置,所以說如果需要手動配置dns服務器,在配置/etc/network/interfaces時就可以配置好。
有了上述相關知識,再解決問題就會容易很多。
首先我的虛擬機是存在ipv6的地址的,而且我用主機ping是能夠成功ping通Ipv6的服務器的,我懷疑是虛擬機的dns服務器沒有配置好的問題,我嘗試找到了ipv6.google.com的Ipv6地址:2404:6800:4008:800::200e,用虛擬機直接ping這個Ip是能夠成功的,這樣就鎖定了是dns域名解析的問題。
但是在修改/etc/network/interfaces來手動設置dns服務器的過程中發(fā)現(xiàn)不管怎么改,網(wǎng)絡狀態(tài)都沒變,后來我甚至將ipv6從dhcp方式改成手動配置方式來配置,同樣沒有用,經(jīng)過查詢才知道linux系統(tǒng)的兩種網(wǎng)絡配置方式。
1.系統(tǒng)文件配置
2.利用Network Manager等第三方可視化應用配置
系統(tǒng)文件配置已經(jīng)介紹的足夠多了,除了手動配置之外,linux系統(tǒng)的網(wǎng)絡配置還可以靠可視化的第三方軟件來配置。
根據(jù)網(wǎng)上的說法,系統(tǒng)默認會使用Nerwork Manager等應用的配置,但是一旦/etc/network/interfaces等文件遭到修改就會根據(jù)系統(tǒng)文件配置來配置網(wǎng)絡,但是從我目前的狀況來看,很顯然系統(tǒng)的網(wǎng)絡配置不是從我修改的文件來配置的,所以我先關閉了network manager。/etc/init.d/network-manager stop
網(wǎng)上說此時查看其配置文件/etc/NetworkManager/NetworkManager.conf可以看到managed=false,但顯然我的nm的配置文件并沒有受剛才的指令影響,于是我手動修改了該配置文件。同時將/etc/network/interfaces里的配置都改回dhcp方式,重啟虛擬機運行。
問題完美解決。