参考:主要参考这个博客http://www.cnblogs.com/makefile/p/5040615.html
问题描述:学校支持ipv6协议,在windows上使用pppoe拨号连上校园网后能正常访问ipv6网站(这里以六维空间为例),但是在ubuntu上使用ADSL拨号后不能访问ipv6网站(但是奇怪的是每次重装ubuntu系统后当时可以访问六维空间,过一段时间后(半天或几个小时后)又不能访问六维空间了)。
系统环境:ubuntu16.04
注意:只验证了以ADSL拨号上网的解决方法,怎么实现ADSL拨号上网网上教程比较多。
问题分析:
~$ ifconfig
ppp0 Link encap:点对点协议
inet 地址:10.170.54.27 点对点:10.170.72.254 掩码:255.255.255.255
inet6 地址: fe80::956d:3bb8:a317:3b0b/10 Scope:Link
inet6 地址: 2001:250:1006:dff0:956d:3bb8:a317:3b0b/64 Scope:Global
inet6 地址: 2001:250:1006:dff0:1900:bda1:842c:718d/64 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 跃点数:1
接收数据包:47068 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:72171 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:3
接收字节:23220713 (23.2 MB) 发送字节:68925385 (68.9 MB)
这里只把ppp0的信息复制了过来。
发现有两个ipv6的Global地址,从网上查到好像是因为ubuntu默认的ipv6使用的是临时地址,那么为什么使用临时地址就会导致不能正常访问ipv6网站呢?我的理解是,一方面,学校给我们动态的分配地址,每次拨号登陆后都会得到一个不一样的新的ipv6地址,而另一方面,ubuntu使用临时地址,这个临时地址不会立刻改变,可能一天或一周后才会改变;这时候ubuntu就不能正确得到学校分配的地址,那么我们也就不能正常使用ipv6上网了。所以这时候只要把ubuntu改为动态改变ipv6地址就行了。
解决过程:要想实现动态改变ipv6地址,经过验证,只需要改变/etc/sysctl.d/10-ipv6-privacy.conf
文件,将net.ipv6.conf.default.use_tempaddr改为0。
~$ sudo gedit /etc/sysctl.d/10-ipv6-privacy.conf
# IPv6 Privacy Extensions (RFC 4941)
# ---
# IPv6 typically uses a device's MAC address when choosing an IPv6 address
# to use in autoconfiguration. Privacy extensions allow using a randomly
# generated IPv6 address, which increases privacy.
#
# Acceptable values:
# 0 - don’t use privacy extensions.
# 1 - generate privacy addresses
# 2 - prefer privacy addresses and use them over the normal addresses.
net.ipv6.conf.all.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2
net.ipv6.conf.default.use_tempaddr = 2改为net.ipv6.conf.default.use_tempaddr = 0
~$ sudo sysctl --system #加载所有的配置文件,像/etc/sysctl.d/*等
然后重新拨号连接校园网(一定要重新拨号),这时候会发现已经可以访问六维空间了。
这时候查看网络信息:
~$ ifconfig
ppp0 Link encap:点对点协议
inet 地址:10.170.12.59 点对点:10.170.72.254 掩码:255.255.255.255
inet6 地址: fe80::a923:8a75:4dc9:ead1/10 Scope:Link
inet6 地址: 2001:250:1006:dff0:a923:8a75:4dc9:ead1/64 Scope:Global
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 跃点数:1
接收数据包:2396 错误:0 丢弃:0 过载:0 帧数:0
发送数据包:2362 错误:0 丢弃:0 过载:0 载波:0
碰撞:0 发送队列长度:3
接收字节:2164847 (2.1 MB) 发送字节:326909 (326.9 KB)
这时候会发现只有一个Global地址,设置完成。