IPv6 僅在 ping 預設網關後有效。
我們現在有 2013 年,我認為在我的伺服器上啟動 IPv6 早就應該了。但不幸的是,我遇到了一些問題。老實說,我在 IPv6 方面只有很少的經驗所以我希望你能幫助我解決我的“小”問題。
一個小評論:以下地址被混淆了,這不是我在我的配置中使用的;)
我正在執行 Debian 擠壓機(Debian 2.6.32-46),我從我的提供商那裡獲得了 /64 IPv6 塊:2a01:4f8:a0:aaaa::/64
所以我更改了**/etc/network/interfaces**文件如下(這也是我的提供商推薦的方式):
# Loopback device: auto lo iface lo inet loopback # device: eth0 auto eth0 iface eth0 inet static address 85.10.xxx.zz broadcast 85.10.xxx.yy netmask 255.255.255.224 gateway 85.10.xxx.1 iface eth0 inet6 static # Main IPv6 Address of the server address 2a01:4f8:a0:aaaa::2 netmask 64 gateway fe80::1 auto eth0:1 iface eth0:1 inet static address 85.10.xxxx.uu netmask 255.255.255.224 # default route to access subnet up route add -net 85.10.xxx.0 netmask 255.255.255.224 gw 85.10.xxx.1 eth0
重新啟動後(我很懶,不想使用
route
or添加所有內容ip
)我的eth0界面如下所示:eth0 < first line removed > inet addr:85.10.xxx.zz Bcast:85.10.xxx.yy Mask:255.255.255.224 inet6 addr: 2a01:4f8:a0:aaaa::2/64 Scope:Global inet6 addr: fe80::bbbb:cccc:dddd:eeee/64 Scope:Link <--- from MAC address UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:24133 errors:0 dropped:0 overruns:0 frame:0 TX packets:21712 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:3464246 (3.3 MiB) TX bytes:5776451 (5.5 MiB) Interrupt:25 Base address:0x2000
路線
ip -6 route
如下所示:2a01:4f8:a0:aaaa::/64 dev eth0 metric 1024 mtu 1500 advmss 1440 hoplimit 4294967295 fe80::/64 dev eth0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 fe80::/64 dev vboxnet0 proto kernel metric 256 mtu 1500 advmss 1440 hoplimit 4294967295 default via fe80::1 dev eth0 metric 1024 mtu 1500 advmss 1440 hoplimit 4294967295
現在,我的問題是我的 IPv6 不能正常工作。如果我嘗試 ping IPv6 地址,例如 ping6 ipv6.google.com。我得到:“目的地無法到達:地址無法到達”
看起來像這樣
tcpdump -i eth0 ip6
:00:29:05.386500 IP6 2a01:4f8:a0:aaaa::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32 00:29:05.390869 IP6 2a01:4f8:a0:bbbb::1 > 2a01:4f8:a0:aaaa::2: ICMP6, neighbor advertisement, tgt is fe80::1, length 32
2a01:4f8:a0:bbbb::1是順便說一句。列為我的網關(在我的提供商的線上管理控制台上)。
我認為,這一切的原因是缺少 NDP 條目/缺少fe80::1的 MAC 地址。因為
ip -6 neigh
給了我:fe80::1 dev eth0 router FAILED
我是這麼認為的,因為如果我這樣做:我會得到一個正確的回顯回復和我的fe80::1
ping6 -I eth0 fe80::1
地址所需的 mac 地址以及一個完美執行的 IPv6 堆棧:$ip -6 neigh fe80::1 dev eth0 lladdr ll:mm:nn:oo:pp:qq router REACHABLE
這也是來自的轉儲
tcpdump -i eth0 ip6
:00:30:37.555702 IP6 fe80::bbbb:cccc:dddd:eeee > fe80::1: ICMP6, echo request, seq 1, length 64 00:30:37.560219 IP6 fe80::1 > fe80::bbbb:cccc:dddd:eeee: ICMP6, echo reply, seq 1, length 64
(同樣:fe80::bbbb:cccc:dddd:eeee是我的連結本地地址,源自 MAC 地址)
從現在開始,我可以使用 IPv6:我可以 ping6 網站,我可以使用 IPv6 連接到服務,甚至可以使用 IPv6 通過 ssh 連接到我的伺服器。
那麼,我在這裡做錯了什麼?我花了很多時間試圖找出如何“解決”這個問題。我敢打賭它可以使用兩個命令來解決。順便說一句,這是我第一次在伺服器上處理 IPv6。所以請原諒我的經驗不足。順便提一句。我還嘗試更改一些 sysctl net.ipv6.* 標誌,但沒有成功。如果解決方案有必要,我也可以在這裡發布我的配置。
每個提示都非常受歡迎!
非常感謝您!
幾週後,我今天再次嘗試了整個問題。我能說什麼,我修好了。有人可以解釋一下為什麼添加 ipv6 環回解決了我的問題嗎?這是我添加到**/etc/network/interfaces**文件中的內容:
iface lo inet6 loopback
我不知道為什麼我一開始就忘了添加它!^^ 謝謝大家的回复!
我正在查看您所說的部分問題:
現在,我的問題是我的 IPv6 不能正常工作。如果我嘗試 ping IPv6 地址,例如 ping6 ipv6.google.com。我得到:“目的地無法到達:地址無法到達”
在 tcpdump -i eth0 ip6 中看起來像這樣:
00:29:05.386500 IP6 2a01:4f8:a0:aaaa::2 > ff02::1:ff00:1: ICMP6, neighbor solicitation, who has fe80::1, length 32 00:29:05.390869 IP6 2a01:4f8:a0:bbbb::1 > 2a01:4f8:a0:aaaa::2: ICMP6, neighbor advertisement, tgt is fe80::1, length 32
這很奇怪。您的系統發送正確的(據我從您的 tcpdump 中看到的)鄰居請求,路由器發送回正確的(同樣是 AFAICT)鄰居通告。這表明您的本地電腦上存在問題。
你在那台機器上做任何防火牆嗎?ICMPv6 過濾與 ICMP 過濾有很大不同。IPv6 通信的更多部分需要正常工作的 ICMPv6。如果您過濾太多或以錯誤的方式過濾,您會遇到與您現在看到的完全一樣的問題。
如果您想了解更多詳細資訊,請查看RFC 4890。