对于Ipv6-in-Ipv4的隧道,比较可行的方案有两种:l2tp和gre。gre如果通过nat与另外一端联通,需要一个私网nat之后的公网地址,使用的情况比较复杂。如果是使用l2tp的解决方案,无论内网使用何种拨号方式或者nat,只要客户端和服务器可以ping通,就可以建立隧道和传输Ipv6数据包。
(1) wgetmirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpm,并安装这个yum源的软件包。
(2) yum install xl2tp (附带安装pppd,同时在server上和client上操作)
(3) server配置:
xl2tp.conf
[root@lbmaster reyzar]# cat /etc/xl2tpd/xl2tpd.conf |grep -v '^;'
[global]
#填写您的真实地址
listen-addr = 192.168.3.11
port = 1701
auth file =/etc/ppp/chap-secrets
[lns default]
ip range =192.168.1.128-192.168.1.254
local ip = 192.168.1.99
require chap = yes
refuse pap = yes
require authentication = yes
name = LinuxVPNserver
ppp debug = yes
pppoptfile =/etc/ppp/options.xl2tpd
length bit = yes
#ppp的配置文件
options.xl2tpd:
[root@lbmaster reyzar]# cat/etc/ppp/options.xl2tpd | grep -v '^#'
ipcp-accept-local
ipcp-accept-remote
ms-dns 8.8.8.8
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
#l2tp的使用的用户名和密码
chap-secrets:
[root@lbmaster reyzar]# cat /etc/ppp/chap-secrets
# Secrets for authenticationusing CHAP
# client server secret IP addresses
"prin" * "prin" *
(4) Client配置:
xl2tp.conf
[root@rs1 ~]# cat /etc/xl2tpd/xl2tpd.conf | grep -v"^;"
[global]
[lac vpn1]
#name必须是和vpn1.l2tp的user一致
name = prin
lns = 192.168.3.11
pppoptfile = /etc/ppp/peers/vpn1.l2tpd
ppp debug = yes
vpn1.l2tp:
remotename vpn1
user "prin"
password "prin"
unit 0
lock
nodeflate
nobsdcomp
noauth
persist
nopcomp
noaccomp
maxfail 5
(5) 运行xl2tpd
service xl2tpd start (clientand server)
echo "c vpn1" >/var/run/xl2tpd/l2tp-control (client)
几秒钟之后,在/var/log/messages下可以看到l2tp隧道建立、ppp0接口开启的日志输出
(6) 配置路由
客户端:
ip -6 route add default devppp0
服务器:
Ip -6 route add2001:192:168:3::/64 dev ppp0 (2001:192:168:3::/64是服务器所在的IPv6网段)
(7) crontab配置
使用crontab来实现ppp接口的例行检查和断线重连。
客户端:(这里是openwrt)
* * * * * test -n $( ifconfig | grep ppp0 ) && echo 'c vpn1' >/tmp/run/xl2tpd/l2tp-control && sleep 3 && ip -6 route adddefault dev ppp0
* * * * * test -n $( ip -6 route show | grep ppp0 ) && ip -6route add default dev ppp0
服务器:(Centos)
* * * * * root test -n $( ip -6 route show | grep ppp0 ) && ip -6route add 2001:192:168:3::/64 dev ppp0
重启,拨号测试,断线重连测试