徹底解決linux系統有ipv6位址但不能用的問題

2021-09-10 12:42:46 字數 2664 閱讀 8333

最近在做的專案需要使用google倉庫裡的映象,所以需要用到ipv6來拉取映象。

我使用的是vmware虛擬機器上的ubuntu16.04 linux系統,在用橋接模式連上校園網之後,可以看到虛擬機器被分配了ipv6位址,但是用ping6 ipv6.google.com來測試始終都ping不通,在我花了兩天嘗試了網上說的幾乎所有的方法都沒有成功之後,我決定徹底了解一下linux的網路配置,再來解決問題。

關於這一點,我參考了這篇文章:

ubuntu的網路配置詳解

當然在實際做的過程發現了和文章的一些出入,以下我簡短的總結一下幾個需要用到的檔案:

/etc/hosts

/etc/host.conf

/etc/network/inte***ces

/etc/resolv.conf

/etc/hosts

該檔案預設內容如下:

127.0.0.1       localhost

127.0.1.1 ubuntu

#the following lines are desirable for ipv6 capable hosts

::1 ip6-localhost ip6-loopback

fe00::0 ip6-localnet

ff00::0 ip6-mcastprefix

ff02::1 ip6-allnodes

ff02::2 ip6-allrouters

這個檔案主要功能是網域名稱解析時使用的,如果你對網域名稱解析不熟悉,可以這麼理解:

你在瀏覽器裡輸入**的時候輸入的是類似於www.baidu.com之類的網域名稱,但是實際上定址是靠ip位址定址,所以就需要乙個解析器,將www.baidu.com與該**伺服器的ip對應起來,這就叫網域名稱解析。 linux下網域名稱解析有兩種途徑,一種叫本地解析,就是利用這個檔案裡的內容解析,另一種叫dns解析,是在dns伺服器中查詢ip。

該檔案會將右邊的網域名稱,對應到左邊的ip位址上去,可以看到預設情況下,localhost對應的網域名稱為127.0.0.1,ubuntu(該網域名稱為主機名,可以在/etc/hostname中更改)對應的網域名稱為127.0.1.1

而下面幾行對應的是ipv6的網域名稱解析。

注意:網上很多教程提到用改hosts檔案的方式來獲取ip,我個人是不太建議這種方式的,因為很多情況下你以為ipv6一切正常,但其實根本沒有連線到dns伺服器上,只是hosts檔案列的比較全而已

/etc/host.conf

該檔案用來指定網域名稱的解析順序,上文提到網域名稱解析有兩種方式,該檔案預設規定網域名稱解析時現從hosts檔案找,找不到在到dns伺服器上找。一般不建議修改該檔案

/etc/network/inte***ces

這是最重要的檔案,大部分的修改都是在這裡進行。

該檔案是確定每個網路的ip型別,ip位址,子網掩碼,閘道器ip,廣播位址,mac實體地址等資訊,具體的設定方式網上有很多講解,就不在此展開

我個人一般是用dhcp方式(動態獲取)獲取所有的資訊

我的inte***ces檔案如下:

auto lo

iface lo inet loopback

auto ens33

iface ens33 inet dhcp

iface ens33 inet6 dhcp

auto關鍵字指明接下來配置的網絡卡,一般前兩行都是本地網路迴圈,不用修改,下面的ens33是我的乙太網網路介面(可以用ifconfig指令查到),

iface關鍵字後指明網絡卡名稱,然後就可以對該網路進行配置,無論是ipv4還是ipv6我都設定成了dhcp(動態獲取ip)方式。

/etc/resolv.conf

該檔案也是經常容易出問題的檔案,如果你一開始配置的好好的,重啟網絡卡,或者重啟計算機後網路就出問題了,很有可能就和這個檔案有關。

該檔案是用來配置dns伺服器ip位址資訊的檔案,配置方式什麼的我推薦的那篇文章裡就有講到,不再贅述,需要注意的是該檔案不建議手動修改,因為該檔案會根據所在的網路環境,自動更新,覆蓋你的手動配置,所以說如果需要手動配置dns伺服器,在配置/etc/network/inte***ces時就可以配置好。

有了上述相關知識,再解決問題就會容易很多。

1.系統檔案配置

2.利用network manager等第三方視覺化應用配置

系統檔案配置已經介紹的足夠多了,除了手動配置之外,linux系統的網路配置還可以靠視覺化的第三方軟體來配置。

根據網上的說法,系統缺省會使用nerwork manager等應用的配置,但是一旦/etc/network/inte***ces等檔案遭到修改就會根據系統檔案配置來配置網路,但是從我目前的狀況來看,很顯然系統的網路配置不是從我修改的檔案來配置的,所以我先關閉了network manager。

/etc/init.d/network-manager stop

網上說此時檢視其配置檔案/etc/networkmanager/networkmanager.conf可以看到managed=false,但顯然我的nm的配置檔案並沒有受剛才的指令影響,於是我手動修改了該配置檔案。同時將/etc/network/inte***ces裡的配置都改回dhcp方式,重啟虛擬機器執行。

問題完美解決。

徹底解決 OBJC CLASS

最近在使用靜態庫時,總是出現這個問題。下面總結一下我得解決方法 1.m檔案沒有匯入 在build phases裡的compile sources 中新增報錯的檔案 2.framework檔案沒有匯入 靜態庫編譯時往往需要一些庫的支援,檢視你是否有沒有匯入的庫檔案 同樣是在build phases裡的...

徹底解決INSTALL FAILED UPDATE

按ctrl c退出系統,利用adb pull data system packages.xml命令將packages.xml放到你pc機本地,然後找到你需要的包名,刪除到的一段資料。例如 儲存packages.xml,然後adb push packages.xml data system將packa...

徹底解決 OBJC CLASS

1.m檔案沒有匯入 在build phases裡的compile sources 中新增報錯的檔案 2.framework檔案沒有匯入 靜態庫編譯時往往需要一些庫的支援,檢視你是否有沒有匯入的庫檔案 同樣是在build phases裡的link binary with libraries中新增 3....