并不是所有 VPS 供应商都会给你配备 IPv6 地址,包括备受赞誉的 Linode 也是一样,这时候我们可以使用 he.net 提供的 Tunnel Broker 服务。进入 http://tunnelbroker.net/ 注册一个用户名,并且输入 vps 的 ip ,选择一个距离 vps 最近的接入节点,创建一个 Regular Tunnel,之后打开 Tunnel Detail 就可以看到给你分配的 IPv6 地址,以及 IPv6 网关和 IPv4 节点地址了。之后进行 vps 段设置,编辑 /etc/network/interfaces,加入如下内容:
auto hetunnel
iface hetunnel inet6 v4tunnel
address HESupplied-ClientIPv6address
netmask 64
ttl 64
gateway HESupplied-ServerIPv6address
endpoint HESupplied-ServerIPv4address
local localIPv4address
sudo /etc/init.d/networking restart 后,试试看 ping6 ipv6.google.com 吧:
gkp@gkplinode:~$ ping6 ipv6.google.com
PING ipv6.google.com(yu-in-x63.1e100.net) 56 data bytes
64 bytes from yu-in-x63.1e100.net: icmp_seq=1 ttl=56 time=49.2 ms
64 bytes from yu-in-x63.1e100.net: icmp_seq=2 ttl=56 time=49.2 ms
64 bytes from yu-in-x63.1e100.net: icmp_seq=3 ttl=56 time=49.2 ms
64 bytes from yu-in-x63.1e100.net: icmp_seq=4 ttl=56 time=49.4 ms
之后为域名加入 AAAA 解析记录,dig 看看效果:
[gkp@home] ~> dig img.gd aaaa
; <<>> DiG 9.6.2-P2 <<>> img.gd aaaa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 30063
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0;; QUESTION SECTION:
;img.gd. IN AAAA;; ANSWER SECTION:
img.gd. 3600 IN AAAA 2001:470:1f0e:541::2;; Query time: 612 msec
;; SERVER: 202.106.0.20#53(202.106.0.20)
;; WHEN: Wed Sep 22 18:58:26 2010
;; MSG SIZE rcvd: 52
接下来设置 apache,编辑 /etc/apache2/ports.conf,加入一行
Listen [::]:80
之后重新启动 apache 即可支持 IPv6 访问。
Nginx 的话,需要先 nginx –V 一下,看看编译时有没有加入 –with-ipv6 这个选项,有的话就可以直接编辑虚拟主机文件了,将 Listen 80 这行直接改成:
Listen [::]:80
即可,如果只想监听 IPv6 而不支持 IPv4 的话,可以用:
Listen [::]:80 default ipv6only=on;
你确定OpenVZ这样也行么?
不确定。。。不过可以试试看,如果不行应该就是内核模块的问题。。。
centos如何设置呢?
Google 一下吧,我手头没有 CentOS 的机器,应该差不多
Pingback: Tweets that mention 使用 he.net 的 Tunnel Broker 为 vps 设置 IPv6 连接 | gkp's post -- Topsy.com
Pingback: 使用 OpenVPN 将 HE Tunnel Broker 的 IPv6 搬回家 | gkp's post
nginx的listen少了个分号……
Listen [::]:80;
我设置
或者
在service nginx start时都会出现[emerg]: bind() to 0.0.0.0:80 failed (98: Address already in use)的错误,为什么呢?
只有这样↑才不出错,但是就不能监听IPv6的80端口了。
盼解答,谢谢!
如果
listen IPv4:80;
那么
netstat -tulpn | grep :80的返回信息是
而不是IPv4:80和IPv6:80分别被监听。
试试看这个解决办法
http://b.gkp.cc/2010/10/01/ipv6-nginx-on-linux-remoteaddr-issue/