自建 6in4 Tunnel Server (iproute2)
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 … Continue reading “自建 6in4 Tunnel Server (iproute2)”