前言
我發(fā)現(xiàn)我的一個應(yīng)用程序在嘗試通過IPv6建立連接,但是由于我們本地網(wǎng)絡(luò)不允許分配IPv6的流量,IPv6連接會超時,應(yīng)用程序的連接會回退到IPv4,這樣就會造成不必要的延遲。由于我目前對IPv6沒有任何需求,所以我想在我的Linux主機(jī)上禁用IPv6。有什么比較合適的方法呢?
IPv6被認(rèn)為是IPv4——互聯(lián)網(wǎng)上的傳統(tǒng)32位地址空間——的替代產(chǎn)品,它用來解決現(xiàn)有IPv4地址空間即將耗盡的問題。然而,由于已經(jīng)有大量主機(jī)、設(shè)備用IPv4連接到了互聯(lián)網(wǎng)上,所以想在一夜之間將它們?nèi)壳袚Q到IPv6幾乎是不可能的。許多IPv4到IPv6的轉(zhuǎn)換機(jī)制(例如:雙協(xié)議棧、網(wǎng)絡(luò)隧道、代理) 已經(jīng)被提出來用來促進(jìn)IPv6能被采用,并且很多應(yīng)用也正在進(jìn)行重寫,如我們所提倡的,來增加對IPv6的支持。有一件事情可以確定,就是在可預(yù)見的未來里IPv4和IPv6勢必將共存。
理想情況下,向IPv6過渡的進(jìn)程不應(yīng)該被最終的用戶所看見,但是IPv4/IPv6混合環(huán)境有時會讓你碰到各種源于IPv4和IPv6之間不經(jīng)意間的相互碰撞的問題。舉個例子,你會碰到應(yīng)用程序超時的問題,比如apt-get或ssh嘗試通過IPv6連接失敗、DNS服務(wù)器意外清空了IPv6的AAAA記錄、或者你支持IPv6的設(shè)備不兼容你的互聯(lián)網(wǎng)服務(wù)提供商遺留下的IPv4網(wǎng)絡(luò),等等等等。
當(dāng)然這不意味著你應(yīng)該盲目地在你的Linux機(jī)器上禁用IPv6。鑒于IPv6許諾的種種好處,作為社會的一份子我們最終還是要充分擁抱它的,但是作為給最終用戶進(jìn)行故障排除過程的一部分,如果IPv6確實是罪魁禍?zhǔn)?,那你可以嘗試去關(guān)閉它。
這里有一些讓你在Linux中部分(例如:對于某個特定的網(wǎng)絡(luò)接口)或全部禁用IPv6的小技巧。這些小貼士應(yīng)該適用于所有主流的Linux發(fā)行版包括Ubuntu、Debian、Linux Mint、CentOS、Fedora、RHEL以及Arch Linux。
Well...下面就來看一下Fedora上關(guān)于IPv6的一些設(shè)置操作:
1.列出當(dāng)前的IPv6地址
使用 "ip"
使用方法:
# /sbin/ip -6 addr show dev interface>
例子:一個靜態(tài)的主機(jī)地址
# /sbin/ip -6 addr show dev eth0
2: eth0: BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_ fast qlen 100
inet6 fe80::210:a4ff:fee3:9566/10 scope link
inet6 3ffe:ffff:0:f101::1/64 scope global
inet6 fec0:0:0:f101::1/64 scope site
自動設(shè)定的地址和它的存活時間:
# /sbin/ip -6 addr show dev eth0
3: eth0: BROADCAST,MULTICAST,PROMISC,UP> mtu 1500 qdisc pfifo_fast qlen 100
inet6 2002:d950:f5f8:f101:2e0:18ff:fe90:9205/64 scope global dynamic
valid_lft 16sec preferred_lft 6sec
inet6 3ffe:400:100:f101:2e0:18ff:fe90:9205/64 scope global dynamic
valid_lft 2591997sec preferred_lft 604797sec inet6 fe80::2e0:18ff:fe90:9205/10 scope link
使用 "ifconfig"
使用方法:
# /sbin/ifconfig interface>
例子,它只列出IPv6地址:
# /sbin/ifconfig eth0 |grep "inet6 addr:"
inet6 addr: fe80::210:a4ff:fee3:9566/10 Scope:Link
inet6 addr: 3ffe:ffff:0:f101::1/64 Scope:Global
inet6 addr: fec0:0:0:f101::1/64 Scope:Site
2.增加一個IPv6地址
其原理同IPv4的"IP ALIAS"(IP別名)相同
使用 "ip"
使用方法:
# /sbin/ip -6 addr add ipv6address>/prefixlength> dev interface>
例子:
# /sbin/ip -6 addr add 3ffe:ffff:0:f101::1/64 dev eth0
使用 "ifconfig"
使用方法:
# /sbin/ifconfig interface> inet6 add ipv6address>/prefixlength>
例子:
# /sbin/ifconfig eth0 inet6 add 3ffe:ffff:0:f101::1/64
3.移除IPv6地址
這個不常用, 不要用它移除不存在的地址,一些早期的核心會因為受不了而掛掉。
使用 "ip"
使用方法:
# /sbin/ip -6 addr del ipv6address>/prefixlength> dev interface>
例子:
# /sbin/ip -6 addr del 3ffe:ffff:0:f101::1/64 dev eth0
使用 "ifconfig"
使用方法:
# /sbin/ifconfig interface> inet6 del ipv6address>/prefixlength>
例子:
# /sbin/ifconfig eth0 inet6 del 3ffe:ffff:0:f101::1/64