北肙

当你不能够再拥有,唯一可以做的,就是令自己不要忘记。

Debian Linux 7.0 搭建l2tp和pptp VPN服务器

一、环境准备 安装Debian Linux 7.0服务器一台,并有外网配置 二、安装步骤 1、安装IPSec Bash # apt-get update && apt-get upgrade && apt-get dist-upgrade && apt-get install openswan ERR:提示某些库版本太低 ANS:更新系统后重试 2、配置IPSec 将/etc/ipsec.conf修改为以下内容 Bash 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后添加以个内容 ActionScript 本机IP地址 %any: […]

一、环境准备
安装Debian Linux 7.0服务器一台,并有外网配置
二、安装步骤
1、安装IPSec

Bash
# apt-get update && apt-get upgrade && apt-get dist-upgrade && apt-get install openswan

ERR:提示某些库版本太低
ANS:更新系统后重试
2、配置IPSec
将/etc/ipsec.conf修改为以下内容

Bash
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后添加以个内容

ActionScript
     本机IP地址   %any:  PSK "YourSharedSecret"

汉字修改为相应地址
3、运行以下命令

Bash
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done

4、检查IPSec能否工作

Bash
# 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服务

Bash
/etc/init.d/ipsec restart

6、安装L2TP软件

Bash
# apt-get install xl2tpd

7、/etc/xl2tpd/xl2tpd.conf文件添加以下内容

Bash
[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文件并添加以下内容

Bash
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用户

Bash
# vi /etc/ppp/chap-secrets

username        *        password        *
username改为连接VPN的用户名,password改为密码,*代表不指定服务端,不指定接入IP
# /etc/init.d/xl2tpd restart
重启xl2tpd服务
12、设置iptables转发

Bash
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

13、添加开机启动项

Bash
# vi /etc/rc.local
Bash
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、安装软件

Bash
# apt-get install pptpd ppp

2、修改配置文件

Bash
vi /etc/pptpd.conf

添加以下内容(文件中被注释,直接删掉“#”就可)

Bash
localip 192.168.0.1
remoteip 192.168.0.234-238,192.168.0.254
Bash
vi /etc/ppp/pptpd-options

添加以下内容

Bash
ms-dns 8.8.8.8
ms-dns 8.8.4.4

注意:"require-mppe-128"一定不能注释,要不然Mac连不上的。
添加帐户

Bash
vi /etc/ppp/chap-secrets
Bash
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“的版本问题,执行以下命令即可解决。

Bash
# apt-get install openswan=1:2.6.37-3
# /etc/init.d/xl2tpd restart
# /etc/init.d/ipsec restart

经测试,IOS可正常连接,但网速并无改观。刚连接上时正常,但时间稍长就会无响应。怀疑是GWF的原因,但windows却很稳定。

Leave a Reply

Your email address will not be published. Required fields are marked *