一、环境准备
安装Debian Linux 7.0服务器一台,并有外网配置
二、安装步骤
1、安装IPSec
# apt-get update && apt-get upgrade && apt-get dist-upgrade && apt-get install openswan
ERR:提示某些库版本太低
ANS:更新系统后重试
2、配置IPSec
将/etc/ipsec.conf修改为以下内容
version 2.0
config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
oe=off
protostack=netkey
conn L2TP-PSK-NAT
rightsubnet=vhost:%priv
also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
authby=secret
pfs=no
auto=add
keyingtries=3
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=本地IP地址
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
在/etc/ipsec.secrets后添加以个内容
本机IP地址 %any: PSK "YourSharedSecret"
汉字修改为相应地址
3、运行以下命令
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
4、检查IPSec能否工作
# ipsec verify
ERR:can not load config '/etc/ipsec.conf': /etc/ipsec.conf:58: syntax error, unexpected CONN [conn]
ANS:查看ipsec.conf文件在conn行前面有无空格或者tab
5、重启IPSec服务
/etc/init.d/ipsec restart
6、安装L2TP软件
# apt-get install xl2tpd
7、/etc/xl2tpd/xl2tpd.conf文件添加以下内容
[global]
ipsec saref = yes
[lns default]
ip range = 192.168.1.2-192.168.1.254
local ip = 本机虚拟IP地址,姑且改为192.168.1.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
8、安装PPP
# apt-get install ppp
9、新建/etc/ppp/options.xl2tpd文件并添加以下内容
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
11、添加VPN用户
# vi /etc/ppp/chap-secrets
username * password *
username改为连接VPN的用户名,password改为密码,*代表不指定服务端,不指定接入IP
# /etc/init.d/xl2tpd restart
重启xl2tpd服务
12、设置iptables转发
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
13、添加开机启动项
# vi /etc/rc.local
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
/etc/init.d/ipsec restart
添加以上内容
三、注意事项
1、其中"echo 1 > /proc/sys/net/ipv4/ip_forward"可以通过修改文件"/etc/sysctl.conf",取掉"net.ipv4.ip_forward = 1"的注释并执行命令"sysctl -p"来实现。
2、有人说在文件"/etc/ppp/options.xl2tpd"中添加"
mtu 1400
noccp
connect-delay 5000"行,可以解决IOS/Mac OS无法连接的问题,笔者试了后发现并不有效。
3、VPN日志文件为"/var/log/auth.log",连接不上可以看日志,具体问题具体谷歌。
4、windows连接不上时,试试修改注册表项"[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\RasMan\Parameters]"添加"DWORD"项"ProhibitIpSec=dword:00000001"
5、如果连接上之后不能访问外网,检查是不是iptables转发不合适,试试命令"iptables -t nat -A POSTROUTING -s 改为你的虚拟IP地址段比如192.168.1.0/24 -o venet0 -j MASQUERADE"
6、上述步骤搭建的VPN,iOS、Mac果断连接不上,即使Windows一切正常。试了试pptp的VPN,结果出乎意料地连接上了,以下上需要修改的文件及安装的软件。
四、搭建pptp VPN服务器
1、安装软件
# apt-get install pptpd ppp
2、修改配置文件
vi /etc/pptpd.conf
添加以下内容(文件中被注释,直接删掉“#”就可)
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.254
vi /etc/ppp/pptpd-options
添加以下内容
ms-dns 8.8.8.8
ms-dns 8.8.4.4
注意:"require-mppe-128"一定不能注释,要不然Mac连不上的。
添加帐户
vi /etc/ppp/chap-secrets
testuser l2tpd password *
注意:如果做了上面的操作,那么创建好的VPN名子缺省是l2tpd,该文件第二个字段如上面内容所示,表示该用户连接的VPN名称,第一字段为用户名,第三字段为密码,最后一字段为IP,“*”表示不限接入IP。
接下来,连上VPN,你懂得。
后记:
IOS设备通过pptp连接VPN表现极不稳定,或许跟VPS地域有关,或许跟PPTP有关,通过“tail -f /var/log/auth.log”跟踪连接日志,发下“message ignored because it contains an unknown or unexpected payload type (ISAKMP_NEXT_SAK) at the outermost leve”错误。谷歌之下,找到“ http://superuser.com/questions/740545/l2tp-ipsec-stopped-working-after-openssl-upgrade“的网页,纠其原因,还是”openswan“的版本问题,执行以下命令即可解决。
# apt-get install openswan=1:2.6.37-3
# /etc/init.d/xl2tpd restart
# /etc/init.d/ipsec restart
经测试,IOS可正常连接,但网速并无改观。刚连接上时正常,但时间稍长就会无响应。怀疑是GWF的原因,但windows却很稳定。