我在 Linux 上设置了 IPv6,但除非我指定,否则它默认不使用 IPv6。例如:
ssh -v HOSTNAME
我看到 ssh 连接到 IPv4 地址。我让它使用 IPv6 的唯一方法是:
ssh -6 HOSTNAME
-or-
ssh IP::v6%INTERFACE
我在 Solaris 机器上使用完全相同的主机,并且 IPv6 运行正常。
索拉里斯:
nslookup host1
Server: 10.1.44.100
Address: 10.1.44.100#53
Name: host1.sc.somehost.net
Address: 10.1.42.37
dig AAAA host1.sc.somehost.net
; <<>> DiG 9.6-ESV-R8 <<>> AAAA host1.sc.somehost.net
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 4583
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 5, ADDITIONAL: 5
;; QUESTION SECTION:
;host1.sc.somehost.net. IN AAAA
;; ANSWER SECTION:
host1.sc.somehost.net. 3600 IN AAAA 2600:REST_OF_PREFIX:2::37
在 Linux 上,输出完全相同。
我的 Linux 主机上没有 /etc/gai.conf。在我的 solaris 主机上,我的 /etc/nsswitch.conf 中有以下内容(我被告知默认情况下“打开”ipv6)。
ipnodes: files dns
只是为了好玩,我的 IPv6 Linux 配置如下:
bond0 Link encap:Ethernet HWaddr NOPE
inet addr:10.1.44.194 Bcast:10.1.45.255 Mask:255.255.254.0
inet6 addr: 2600:REST_OF_PREFIX:1::44:194/64 Scope:Global
inet6 addr: 2600:REST_OF_PREFIX:AUTOCONFIG_MAC_ADDR_ADDRESS/64 Scope:Global
inet6 addr: fe80::NOT_GETTIN_MY_MAC/64 Scope:Link
UP BROADCAST RUNNING MASTER MULTICAST MTU:1500 Metric:1
RX packets:1197675 errors:0 dropped:569214 overruns:0 frame:0
TX packets:878545 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:447693586 (426.9 MiB) TX bytes:793250645 (756.5 MiB)
谢谢大家的帮助。
答案1
有一些 Linux 版本(我希望是较旧的版本)优先使用 RFC1918 IPv4 地址空间,而不是 IPv6。例如,请参阅debian 错误 #428434 libc6:解析器在某些情况下更喜欢 IPv4 而不是 IPv6。您可能没有 /etc/gai.conf 文件来修复此问题,此问题仅在较新版本中出现。