自从上次成功的搞定Linux下的IPv6隧道以后,我一直在想还能怎么玩这个/48的路由。前几天某人需要一个国内的VPN,于是在搭建VPN的时候研究了一下如何在VPN上分配IPv6地址。现在吧过程记录如下:
1.安装一个普通的PPTP
VPN,不会的自己去Google,其实不只是PPTP,L2TP或者其他基于pppd的隧道都可以使用下面的方法支持IPv6 2.编辑相应的pppd
options文件,比如pptpd的是 /etc/ppp/pptp-options,添加下面的选项:
ipparam pptpd ipv6
,
注意ipv6后面是空格和逗号
3.安装radvd,从 http:///69 下载tdhcpd
4.新建文件夹/etc/ppp/ipv6-radvd,新建文件/etc/ppp/ipv6-up.d/radvd:
CODE: #!/bin/sh if
test $PPP_IPPRARM != pptpd ;then exit 0 fi
ADDR=$(echo
$PPP_REMOTE | cut -d : -f 3,4,5,6)
if test x$ADDR == x ; then
echo "Unable to generate IPv6 Address" exit
0 fi ADDR=2001:470:8192:BEEF:$ADDR
#add route route -6 add
$ADDR/128 dev $PPP_IFACE
#generate radvd
config RAP=/etc/ppp/ipv6-radvd/$PPP_IFACE RA=$RAP.conf
cat
<<EOF >$RA interface $PPP_IFACE{ AdvManagedFlag off;
AdvOtherConfigFlag on; AdvSendAdvert on;
MinRtrAdvInterval 5; MaxRtrAdvInterval 100; UnicastOnly
on; AdvSourceLLAddress on; prefix 2001:470:8192:BEEF::/64
{}; }; EOF
#start radvd /usr/sbin/radvd -C $RA -p
$RAP.pid
#start tchdpd /usr/sbin/tdhcpd
\ --dns-server=2001:470:20::2
\ --dns-name=$PPP_IFACE.tunnel.ipv6.icybear.net \ --pid-file=$RAP.dhcp.pid
\ --local-id=tunnel.ipv6.icybear.net -L debug\ $PPP_IFACE
#update
dns ARPA=$(ipv6_rev $ADDR) nsupdate << EOF update delete
$ARPA update add $ARPA 10 ptr
$PPP_IFACE.tunnel.ipv6.icybear.net send update delete
$PPP_IFACE.tunnel.ipv6.icybear.net update add
$PPP_IFACE.tunnel.ipv6.icybear.net 10 aaaa $ADDR send EOF
exit
0 在注意吧里面的2001:470:8192:BEEF
改成你自己要分配的/64地址,但是注意一定要/64的,我试过更小的地址段都不成功,可能是客户端做自动分配地址时是需要使用EUI-64的原因吧。 另外最后的nsupdate那段如果不需要修改dns记录或者根本就没有DNS服务器就可以去掉,不影响。
5.然后是/etc/ppp/ipv6-down.d/radvd:
CODE: #!/bin/sh RAP=/etc/ppp/ipv6-radvd/$PPP_IFACE kill
`cat $RAP.pid` || true kill `cat $RAP.dhcp.pid` || true rm -f
$RAP.* ADDR=$(echo $PPP_REMOTE | cut -d : -f
3,4,5,6) ADDR=2001:470:8192:BEEF:$ADDR ARPA=$(ipv6_rev $ADDR) nsupdate
<< EOF update delete $ARPA send update delete
$PPP_IFACE.tunnel.ipv6.icybear.net send EOF exit
0 6.现在就可以使用P支持IPv6的PTP客户端(比如Windows
Vista以上)获取IPv6地址了,另外需要注意的是如果有内网的话记着添加相应的路由记录,比如我使用OSPFv3路由重分发 参考资料:http:///66
|