这几天一直在鼓捣IPv6的东西,利用HE.net提供的TunnelBroker服务在学校的网络上部署了一个小型的IPv6网络。这篇文章就是这几天的工作的一些总结。由于涉及到的东西很多很杂,所以会分成几个部分来写。今天先写出第一部分:如何在Linux(Ubuntu)下连接远程PPTP服务器然后再在PPTP隧道的基础上建立6in4连接。
如何去he.net申请Tunnel我就不说了,都会。申请到的Tunnel会有如下参数:
Server IPv4 address: 72.52.104.74 Server IPv6 address: 2001:470:1f04:cab::1/64 Client IPv4 address: 184.104.13.193 Client IPv6 address: 2001:470:1f04:cab::2/64 Routed /48: 2001:470:8192::/48 Routed /64: 2001:470:1f05:cab::/64
另外,如果服务器支持PPTP,还会给出相应的参数:
Server IPv4 Hostname: tserv3.fmt2.ipv6.he.net Client IPv4 Address: 184.104.13.193 VPN (PPTP) Username: bearice%63106
由于服务器是通过NAT出外网的,所以需要首先配置PPTP拨号:
pptpsetup --create IPv6VPN \ --server tserv3.fmt2.ipv6.he.net \ --username bearice%63106 \ --password ***
这样会在/etc/ppp/peers/下建立一个IPv6VPN的文件,以后我们可以使用pon IPv6VPN就可以与服务器建立连接了,不过这还不够,我们需要配置开机自动连接和短线重连,另外还需要在隧道连接后添加一些路由表让6in4使用。
修改IPv6VPN,现在应该是这个样子:
persist maxfail 0 pty "pptp tserv3.fmt2.ipv6.he.net --nolaunchpppd" lock noauth nobsdcomp nodeflate name bearice%63106 remotename IPv6VPN ipparam IPv6VPN updetach
在文件的开头我添加了“persist”和“maxfail 0” 使ppp进程在链接终端以后自动重连。
然后修改/etc/network/interfaces 添加如下内容:
auto he-vpn iface he-vpn inet ppp provider IPv6VPN auto he-ipv6 iface he-ipv6 inet6 v4tunnel endpoint 72.52.104.74 local 184.104.13.193 address 2001:470:1f04:cab::2 netmask 64 up ip -6 route add default dev he-ipv6 down ip -6 route del default dev he-ipv6 mtu 1420 ttl 255
使隧道可以开机后自动连接。
但是现在6in4隧道还不能正常使用。如果你进行嗅探的话会发现所有出站的IPv6数据包没有使用PPTP隧道进行封装而是直接向网关发出。
这里困扰了我很久,最后在he.net的论坛里找到了答案:
使用PPTP隧道会在路由表内添加一条指向服务器的路由,由于这条路由的存在使我们的流量通过PPTP隧道传出,要解决这个问题需要添加一条策略路由:如果IP源地址等于我们的PPTP隧道地址则使用一个特殊的路由表进行路由。
实际上的操作如下:
首先执行
echo "1 pptp" >> /etc/iproute2/rt_tables
向系统添加一个路由表。
然后在/etc/ppp/ip-up.d下建立一个vpn_route文件(名字无所谓) chmod +x这个文件然后添加下面的内容:
#!/bin/sh -e ip route add default dev $PPP_IFACE table pptp ip rule add from $PPP_LOCAL table pptp exit 0
使得PPP可以在连接建立以后自动的添加这条策略路由。为了严谨,我们在PPP链接断开后删除路由:/etc/ppp/ip-down.d/vpn_route
#!/bin/sh -e ip route del default dev $PPP_IFACE table pptp ip rule del from $PPP_LOCAL table pptp exit 0
现在,你就可以使用ifup he-vpn建立PPTP隧道,使用ping6 2001:470:1f04:cab::1测试6in4隧道连接。
今天就到这,下一次的内容是如何在内部网络建立IPv6路由结构,OSPFv3、quagga的配置。
Mozilla/5.0 (X11; U; Linux i686; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2 ChromePlus
原来在HE的论坛发贴的就是阁下,受教了
Mozilla/5.0 (X11; Linux x86_64; rv:12.0) Gecko/20100101 Firefox/12.0
纯纯的技术文章阿。可惜我不太懂网络,看不懂。