安装完linux后,无法获得global的ipv6地址

RT,切换好几个发行版都是这个问题,但是,如果是在 windows 下的话,
可以自动获取 ipv6 地址 (global)。
以前这种问题经常会出现,经过测试,换网线等措施 (不同交换机) 偶尔可以解决,
但现在不行了,有没有什么办法? :question:

suse.com/documentation/sled-12/book_sle_admin/data/sec_basicnet_ipv6.html
Configuring IPv6

en.opensuse.org/SDB:Native_IPv6
Native IPv6

实际参考了第二条说明,查看了 ipv6 对应的几个参数:
cat /proc/sys/net/ipv6/conf/enp4s0/autoconf
值为 1,说明是自动配置的
cat cat /proc/sys/net/ipv6/conf/enp4s0/forwarding
值为 0,也不会出问题
cat /proc/sys/net/ipv6/conf/enp4s0/use_tempaddr
值为 2,ok 的
然后,按着网页中的说明,利用 NetworkManager 进行设置,无效,依然没有 ipv6 global addr
所以,问题依然没有解决

对了,现在切换了几个版本的 linux,无论是 ubuntu, arch,opensuse 还是现在的 fedora,问题一直都在的,
用 google 搜索,有一个类似的帖子 http://askubuntu.com/questions/114971/ipv6-auto-configuration-not-working
依然没有解决啊

先看看 你的 IPv6 是否 enabled
把下面指令 複製 貼進終端機 執行
sudo ping6 -c 3 ::1
把結果直接 選取 / 複製 貼上來

不久之前 與網友討論過 Ubuntu 的 IPv6
forum.ubuntu.org.cn/viewtopic.php?f=77&t=462381
其中 有許多指令
你可以參考看看
有效的
無效的
把指令分兩類記錄起來
貼上來
可以縮短我們摸索的時間

实际情况是,我有 local 的 ipv6 地址,所以 ping6 ::1 是可以的,但是因为没有 global 的 ipv6 地址,
ping 外网是不行的,实际的操作结果和你给的网页上的网友情况相同,就不贴了。
现在我奇怪的是为什么会没有 global 的 ipv6 地址,软件上是否需要做什么设置,windows 反正是直接就能有 global 的 ipv6 地址的。
另外,譬如我在办公室用电脑装上 linux,只有 ipv6 local 地址,但是如果将电脑搬到寝室,就能有 ipv6 global 地址了,这又是
什么原因,linux 与 windows 到底是差别在什么地方,实在奇怪。
附注:办公室的网络可以用 ipv6 的,同一根网线 windows 反正 ok 的,linux 就不行了

  1. IPv4 跟 IPv6 在 分配 IP 上面 有許多不同

1-1. IPv4 Addressing
zh.wikipedia.org/wiki/IPv4#.E5.9C.B0.E5.9D.80
en.wikipedia.org/wiki/IPv4#Addressing
1-2. IPv6 Addressing
zh.wikipedia.org/wiki/IPv6#IPv6.E7.BC.96.E5.9D.80
en.wikipedia.org/wiki/IPv6#Addressing
1-2-1. IPv6 與 IPv4 主要不同點
zh.wikipedia.org/wiki/IPv6#.E4.B8.8EIPv4.E6.AF.94.E8.BE.83
en.wikipedia.org/wiki/IPv6#Comparison_with_IPv4
1-3. 對於 普通用戶來說 最大不同是
1-3-1. 每張網卡 被驅動成功驅動時 就獲得一個全世界唯一的 IPv6
但是這個全世界唯一的 IPv6 只是用來你的本機之內 不同網路界面 溝通之用 不同電腦之間是不能互通的
1-3-2. 當你被 網路營運商 分配到 IPv6 網址時 並不是獲得一個網址 而是獲得一個 IPv6 子網路 數量多到 你可以給連到你本機的所有網路設備都分配一個 IPv6 還剩下很多 …
1-3-2-1. 意思是 DHCP 等等動態分配 以及 NAT 等等轉址安排 在 IPv6 是不一樣的概念
一般來說 你獲得分配的 IPv6 網址 就是 global 就可以直接跟世界上每一台 IPv6 enabled 的電腦溝通
1-3-3. 大部分 作業系統 例如 Ubuntu 預設就是 IPv6 enabled 意思是 安裝好 啟動好網卡 就可以直通 世界上每一台 IPv6 enabled 的電腦溝通
1-4. 所以 IPv6 enabled 情況 你會發現
你的每張網卡界面最少都有兩個 IPv6 網址

  1. Windows 可以
    Linux 應該也可以 確認 你的 Linux 是否已經 IPv6 enabled
    2-1. 這個 IPv6 enabled/disabled 每個 Linux 發行版 的設定 可能稍有不同
  1. 可能原因
    3-1. 办公室用 IPv6 被分配的對象 是 你單位的 Router 網卡網址
    你的電腦 可能沒被自動分配 IPv6 global
    你可以試試 自己分配個 IPv6 看看
    3-2. 寝室用 IPv6 被分配的對象 是你的 電腦裡的網卡 MAC
    所以 被分配的 IPv6 可能是 一個 IPv6 subset 包含 IPv6 global
    3-3. 以上分析 是否需要修正 最好請教你們的網管人員 並且比較上面的 wiki

自己分配的话,global 地址如何确定?

askubuntu.com/a/566269
How to configure /etc/network/interface to use static IPv6, but dynamic IPv4?

如果你希望透過公司網路 連上 IPv6 網際網路
可能需要向公司網管人員請教 IPv6 的 Gateway

如果你原來是在 NM-Applet 設定 eth0
暫時 把自動連線 打勾 移除
NM-Applet 跟 /etc/network/interface 設定 eth0 最好只保留一個 自動連線

如果不能連上 IPv6 網際網路
你可以試試
forum.ubuntu.org.cn/viewtopic.php?f=77&t=462381
裡面 追蹤 path 或 route 的指令
看看 停在哪裡
猜測 你可能需要跟公司的網管人員請教 為何停在那裡

好吧,奇怪的问题,估计是解决不了了

试一下你用 Win 拿到的那个配置,然后手动配一样的静态地址,看能不能用;另外可以观察下 Win 下不同时候拿到的是不是同一个 IPv6 地址

实际情况是,这样子有了 ipv6 global 地址了,但是依然无法访问 ipv6 的网址

通过搜索,目前可能原因有 2:

  1. 来自 Arch Wiki:
    NetworkManager does not honour the settings placed in /etc/sysctl.d/40-ipv6.conf when following IPv6#Privacy extensions. This can be verified by running $ ip -6 addr show [device] after rebooting: no scope global temporary address appears.

In order to enable IPv6 Privacy Extensions for NetworkManager-managed connections, edit as root the desired connection keyfile in /etc/NetworkManager/system-connections/ and append to its [ipv6] section the key-value pair ip6-privacy=2:
/etc/NetworkManager/system-connections/example_connection


[ipv6]
method=auto
ip6-privacy=2
测试后,发现没有效果
2. stigviewer.com/stig/suse_linux_enterprise_server_v11system_z/2012-12-13/finding/V-22550
ipv6 icmp 不能通过防火墙?
cat /proc/sys/net/ipv6/conf/all/accept_redirects
至少我测试结果是 1,于是按照网页介绍方法做了修改。
然并卵,现在结果已经是 0,但是依然没有 global 的 ipv6 地址

善用追蹤指令 tracepath6 幫你找原因
forum.ubuntu.org.cn/viewtopic.php?p=3096751#p3096751
還有一些追蹤指令 有需要再進一步

如果你的 IPv4 可以訪問 IPv4 網際網路
這是一個替代方案 可以使用 ipv6 global 地址訪問 IPv6 網際網路
forum.ubuntu.org.cn/viewtopic.php?p=3096756#p3096756
這裡的 ipv6 global 地址 是另外產生的

回帖,好的吧,感觉有没有可能是 networkmanager 的 service 与 wicked 的 service 都启动了,导致这样的问题?

回帖,好的吧,感觉有没有可能是 networkmanager 的 service 与 wicked 的 service 都启动了,导致这样的问题?

惊讶地发现,在使用了指令
dhclient -6 -d enp4s0
之后,等待一段时间
然后 Ctl+C
接着 ifconfig,居然有了 global 的 ipv6 地址
参考网址:
serverfault.com/questions/513772/getting-an-ip-from-an-ipv6-dhcp-server
测试的系统不是是 kubuntu15.10 beta2
不确定 opensuse Tumbleweed 是否能成功
:sunglasses:

可以使用 Yast 切換 networkmanager wicked 及 Systemd-Networkd
forums.opensuse.org/showthread.php/508669-Switching-from-NetworkManager-to-Systemd-Networkd
意思是 應該不會同時間啟動

实际利用 openSUSE Leap42.1 Beta1 测试发现,该发行版不支持以上命令,
openSUSE 内置 dhclient 和 dhclient6,但是如果使用以上命令,会有错误结果,
所以,openSUSE 的 ipv6 问题始终没有解决。
而对于 ubuntu 的话,测试了两个版本,kubuntu15.10 Beta2,该命令顺利获取了 scope global 的 ipv6 地址
对于发行版 kubuntu15.04,该命令也成功获取 global ipv6 地址
以下截取部分输出
XMT: Forming Solicit, 141900 ms elapsed.
XMT: X-- IA_NA 6b:8e:b6:05
XMT: | X-- Request renew in +3600
XMT: | X-- Request rebind in +5400
XMT: Solicit on eth0, interval 117020ms.
RCV: Advertise message on eth0 from fe80::3600:a3ff:fedd:eb59.
RCV: X-- Preference 255.
RCV: X-- IA_NA 6b:8e:b6:05
RCV: | X-- starts 1444890562
RCV: | X-- t1 - renew +86400
RCV: | X-- t2 - rebind +138240
RCV: | X-- [Options]
RCV: | | X-- IAADDR 2001:da8:1003:17::893a
RCV: | | | X-- Preferred lifetime 172800.
RCV: | | | X-- Max lifetime 259200.
RCV: X-- Server ID: 00:01:00:06:09:f0:01:52:10:51:72:2c:da:12
IA_NA status code Success: “Success”
RCV: Advertisement immediately selected.
PRC: Selecting best advertised lease.
PRC: Considering best lease.
PRC: X-- Initial candidate 00:01:00:06:09:f0:01:52:10:51:72:2c:da:12 (s: 154, p: 255).
XMT: Forming Request, 0 ms elapsed.
XMT: X-- IA_NA 6b:8e:b6:05
XMT: | X-- Requested renew +3600
XMT: | X-- Requested rebind +5400
XMT: | | X-- IAADDR 2001:da8:1003:17::893a
XMT: | | | X-- Preferred lifetime +7200
XMT: | | | X-- Max lifetime +7500
XMT: V IA_NA appended.
XMT: Request on eth0, interval 1010ms.
RCV: Reply message on eth0 from fe80::3600:a3ff:fedd:eb59.
RCV: X-- IA_NA 6b:8e:b6:05
RCV: | X-- starts 1444890562
RCV: | X-- t1 - renew +86400
RCV: | X-- t2 - rebind +138240
RCV: | X-- [Options]
RCV: | | X-- IAADDR 2001:da8:1003:17::893a
RCV: | | | X-- Preferred lifetime 172800.
RCV: | | | X-- Max lifetime 259200.
RCV: X-- Server ID: 00:01:00:06:09:f0:01:52:10:51:72:2c:da:12
IA_NA status code Success: “Success”
PRC: Bound to lease 00:01:00:06:09:f0:01:52:10:51:72:2c:da:12.
/sbin/dhclient-script: 55: /sbin/dhclient-script: shopt: not found
/sbin/dhclient-script: 60: /sbin/dhclient-script: : not found
/sbin/dhclient-script: 68: /sbin/dhclient-script: shopt: not found
PRC: Renewal event scheduled in 86399 seconds, to run for 51840 seconds.
PRC: Depreference scheduled in 172799 seconds.
PRC: Expiration scheduled in 259199 seconds.
看样子像是该命令给 ISP 发出获取 ipv6 地址的要求,然后 ISP 返回了 ipv6 global 的地址。
那么 openSUSE 是不是也有指令可以实现相同的目的?作为非资深用户,表示好奇。 :joy:

lists.opensuse.org/opensuse/2012-12/msg00413.html
SuSE 12.2: MTU size wrong causes IPV6 client dhclient6 to fail

補充
這是第二次看到 因為 MTU 不適合 導致無法順利獲得 IP 的案例