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的原因吧。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路由重分发 联系客服