【編者注】都說IPv4地址枯竭了,要推廣IPv6,但是遲遲不見動靜,既然如此,在它完全就緒前,就不要讓它來打擾我們的系統好了。
IPv6
IPv6是尋址方案IPv4的下一個版本,被用來給域名分配數字地址。
IPv6比IPv4支持更多的地址。然而,它還沒有被廣泛支持,還在被接受的過程中。
Ubuntu開啟IPV6 http://www.linuxidc.com/Linux/2013-03/80479.htm
思科CCIE認證知識點之IPV6地址 http://www.linuxidc.com/Linux/2013-01/78078.htm
WireShark下抓取IPV6數據包使用教程 http://www.linuxidc.com/Linux/2013-01/77518.htm
Ubuntu 12.04 校園網下使用IPV6源 免流量更新 http://www.linuxidc.com/Linux/2012-07/66240.htm
Linux搭建IPV6 ftp服務器 http://www.linuxidc.com/Linux/2012-07/65150.htm
CentOS IPV6設置 http://www.linuxidc.com/Linux/2012-06/63644.htm
CentOS純IPV6環境下設置更新源 http://www.linuxidc.com/Linux/2012-06/63643.htm
CentOS 6 IPV6 關閉方法 http://www.linuxidc.com/Linux/2012-06/63642.htm
你的系統支持IPv6麼?
為了支持IPv6,需要很多事情。首先你需要系統/操作系統支持IPv6。Ubuntu,Linux Mint,和大多是現代發行版都支持它。如果你看一下ifconfig指令的輸出,你就會看見你的網絡接口被分配了IPv6地址。
- $ ifconfig
- eth0 Link encap:EthernetHWaddr00:1c:c0:f8:79:ee
- inet addr:192.168.1.2Bcast:192.168.1.255Mask:255.255.255.0
- inet6 addr: fe80::21c:c0ff:fef8:79ee/64Scope:Link
- UP BROADCAST RUNNING MULTICAST MTU:1500Metric:1
- RX packets:110880 errors:0 dropped:0 overruns:0 frame:0
- TX packets:111960 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:62289395(62.2 MB) TX bytes:25169458(25.1 MB)
- Interrupt:20Memory:e3200000-e3220000
- lo Link encap:LocalLoopback
- inet addr:127.0.0.1Mask:255.0.0.0
- inet6 addr:::1/128Scope:Host
- UP LOOPBACK RUNNING MTU:65536Metric:1
- RX packets:45258 errors:0 dropped:0 overruns:0 frame:0
- TX packets:45258 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:0
- RX bytes:4900560(4.9 MB) TX bytes:4900560(4.9 MB)
看一下行“inet6 addr”。
接下來你需要一個支持ipv6的路由器/調制解調器。此外,你的ISP也必須支持IPv6。
除了檢查網絡設備的每一部分,最好查出你是否可以通過IPv6訪問網站。
有很多網站可以檢測你的網絡連接是否支持IPv6. 這裡就是個例子:http://testmyipv6.com/
下面是在內核中啟用IPv6的參數:
- $ sysctl net.ipv6.conf.all.disable_ipv6
- net.ipv6.conf.all.disable_ipv6 =0
- $ sysctl net.ipv6.conf.default.disable_ipv6
- net.ipv6.conf.default.disable_ipv6 =0
- $ sysctl net.ipv6.conf.lo.disable_ipv6
- net.ipv6.conf.lo.disable_ipv6 =0
同樣可以在proc文件中檢查
- $ cat /proc/sys/net/ipv6/conf/all/disable_ipv6
- 0
注意這裡的變量是控制IPv6的“禁用”。所以設置1就會禁用IPv6。
如果它不支持就禁用IPv6
如果你的網絡設備中不支持IPv6,那最好就全部禁用它們。為什麼?因為這會引起域名查詢延遲,在網絡連接中不必要地嘗試連接到IPv6地址導致延遲等等問題。
我也遇到過像這樣的問題,apt-get命令偶爾會嘗試連接到IPv6地址失敗接著檢索IPv4地址。看一下下面的輸出。
- $ sudo apt-get update
- Ign http://archive.canonical.com trusty InRelease
- Ign http://archive.canonical.com raring InRelease
- Err http://archive.canonical.com trusty Release.gpg
- Cannot initiate the connection to archive.canonical.com:80(2001:67c:1360:8c01::1b).- connect (101:Networkis unreachable)[IP:2001:67c:1360:8c01::1b80]
- Err http://archive.canonical.com raring Release.gpg
- Cannot initiate the connection to archive.canonical.com:80(2001:67c:1360:8c01::1b).- connect (101:Networkis unreachable)[IP:2001:67c:1360:8c01::1b80]
- .....
像這樣的錯誤在最近的Ubuntu中更頻繁了,或許它比以前更頻繁地嘗試使用IPv6地址。
我在其他的應用上也注意到了相似的問題,如Hexchat,同樣Google Chrome也會有時會在查詢域名的時候花費更長的時間。
所以最好的方案是完全禁用IPv6來擺脫這些事情。這只需要一點點配置但可以幫助你解決很多你系統上的很多問題。用戶甚至反應這可以加速網絡。
禁用 IPv6 - 方案1
編輯文件 - /etc/sysctl.conf
- $ sudo gedit /etc/sysctl.conf
在文件的最後加入下面的行。
- # IPv6 disabled
- net.ipv6.conf.all.disable_ipv6 =1
- net.ipv6.conf.default.disable_ipv6 =1
- net.ipv6.conf.lo.disable_ipv6 =1
保存並關閉
重啟sysctl
- $ sudo sysctl -p
再次檢查ifconfig的輸出,這裡應該沒有IPv6地址了。
- $ ifconfig
- eth0 Link encap:EthernetHWaddr08:00:27:5f:28:8b
- inet addr:192.168.1.3Bcast:192.168.1.255Mask:255.255.255.0
- UP BROADCAST RUNNING MULTICAST MTU:1500Metric:1
- RX packets:1346 errors:0 dropped:0 overruns:0 frame:0
- TX packets:965 errors:0 dropped:0 overruns:0 carrier:0
- collisions:0 txqueuelen:1000
- RX bytes:1501691(1.5 MB) TX bytes:104883(104.8 KB)
如果不行,嘗試重啟系統並再次檢查ifconfig
禁用 IPv6 - GRUB 方案
IPv6同樣可以通過編輯grub配置文件禁用。
- $ sudo gedit /etc/default/grub
查找包含"GRUBCMDLINELINUX"的行,並如下編輯:
- GRUB_CMDLINE_LINUX="ipv6.disable=1"
同樣可以加入名為"GRUBCMDLINELINUX_DEFAULT"的變量,這同樣有用。保存並關閉文件,重新生成grub配置。
- $ sudo update-grub2
重啟,現在IPv6應該就已經禁用了。