IPv4下连IPv6有无数种解决方案,传统的6to4, 6in4, TEREDO…没兴趣讲优缺点,可以在wikipedia的页面上看看各家都用了啥。
TunnelBroker.net 应该是没IPv6的地方最流行的上IPv6的解决方案了。
如果你觉得它不爽,其实自己搞一个也没那么难。
上边wikipedia页面里说HE的技术实现是Unknown。其实自己试过一次大概都能知道应该往哪个方向去研究它的技术实现了。
贴一个我路由器上的IPv6 Tunnel信息。
1 2 3 4 5 6 7 8 |
tun0 Link encap:IPv6-in-IPv4 inet6 addr: fe80::c0a8:b01/64 Scope:Link inet6 addr: 2001:470:23:1xx::2/64 Scope:Global UP POINTOPOINT RUNNING NOARP MTU:1480 Metric:1 RX packets:900942 errors:0 dropped:0 overruns:0 frame:0 TX packets:905985 errors:4 dropped:0 overruns:0 carrier:4 collisions:0 txqueuelen:0 RX bytes:559785922 (533.8 MiB) TX bytes:179756964 (171.4 MiB) |
首先,UBNT给我创建的interface是tun0;其次 Link encapsulation 是 IPv6-in-IPv4,也就是传说中的 6in4;再往下看,POINTOPOINT。
再加上TunnelBroker的Example Configurations里给了一个iproute2的配置方法:
1 2 3 4 5 6 |
modprobe ipv6 ip tunnel add he-ipv6 mode sit remote 74.82.46.6 local xx.xx.xx.xx ttl 255 ip link set he-ipv6 up ip addr add 2001:470:23:1xx::2/64 dev he-ipv6 ip route add ::/0 dev he-ipv6 ip -f inet6 addr |
思路很简单了。
假设服务器端为S,用户路由为R,则两边的参数逻辑应该是:
S:
Remote: R.ipv4
Local: S.ipv4
V6 IP: S.ipv6
Route: v6子网/CIDR
R:
Remote: S.ipv4
Local: R.ipv4
V6 IP: R.ipv6
Route: ::/0 即默认路由
具体来说,假设你S的IP为1.1.1.1,可支配的IPv6 pool为 2400:1234:5678:9abc::/64,R的IP为2.2.2.2,上述的配置可能是:
S.ipv4 = 1.1.1.1
S.ipv6 = 2400:1234:5678:9abc:1000::1/80
v6子网/CIDR = 2400:1234:5678:9abc:2000::/80
R.ipv4 = 2.2.2.2
R.ipv6 = 2400:1234:5678:9abc:1000::2/80
命令还不会的,可以阅读Setup of point-to-point tunnel
接下来还有一个问题,我的公网不是固定IP怎么办?
简单。
对于S端来说,Remote依旧是R.ipv4,必须是确定的IP。
对于R端来说,Local可以是0.0.0.0。
每次R更换IP后,需要通知S来更新Remote。
再搞不定?
没问题,看我的github项目:https://github.com/sskaje/6in4
另外,Linode 可以申请IPv6的池子,可以是 /56 或者 /64,可以自建tunnel玩。
Incoming search terms:
- tunnelbroker proxy
- impala ipv6
- 6in4 server
- ipv6 tunnel linux
- туннельный брокер 6in4
- VPS搭建Tunnel 6in4
- unhappycnf
- ubuntu 6in4服务端
- ubuntu 6in4 vpn
- tunnel broker隧道服务器
- shoe977
- linux 6in4
- ipv6 tunnel broker
- HE Tunnel Broker 6in4
- gentle8ep
- gaveen8
- explainuai
- distantrsv
- buildddr
- 6in4 tunnel server linux