之前不是一直L2TP搭建失败么,因为是买的openvz的vps,所以总是失败,几经周折找了个8.5$一年的低端的KVZ的vps,买完就折腾,后台挂载了debian的映像,VNC连接上进行了系统的安装,然后就是对L2TP IPSEC 的安装。

他哥这个连vim都木有,用不惯vi,所以先装个vim(记得用su命令切换到root权限下)

apt-get -y install vim

进入opt下,新建一个文件

mkdir test.sh

编辑文件

vim test.sh

复制以下内容进去后保存,账号密码啥的自己看着改。

#!/bin/sh
 
#VPN 账号
vpn_name="test"
 
#VPN 密码
vpn_password="test123456"
 
#设置 PSK 预共享密钥
psk_password="test123456"
 
#获取公网IP
ip=`ifconfig | grep 'inet addr:' | grep -v '127.0.0.1' | cut -d: -f2 | awk '{ print $1}'`
 
 
#安装 openswan、xl2tpd(有弹对话框的话直接按回车就行)
apt-get install -y openswan xl2tpd screen
 
 
#备份 /etc/ipsec.conf 文件
ipsec_conf="/etc/ipsec.conf"
if [ -f $ipsec_conf ]; then
    cp $ipsec_conf $ipsec_conf.bak
fi
echo "
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
    dpddelay=40
    dpdtimeout=130
    dpdaction=clear
" > $ipsec_conf
 
 
 
#备份 /etc/ipsec.secrets 文件
ipsec_secrets="/etc/ipsec.secrets"
if [ -f $ipsec_secrets ]; then
    cp $ipsec_secrets $ipsec_secrets.bak
fi
echo "
$ip   %any:  PSK \"$psk_password\"
" >> $ipsec_secrets
 
 
 
#备份 /etc/sysctl.conf 文件
sysctl_conf="/etc/sysctl.conf"
if [ -f $sysctl_conf ]; then
    cp $sysctl_conf $sysctl_conf.bak
fi
echo "
net.ipv4.ip_forward = 1
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
" >> $sysctl_conf
sysctl -p
 
for each in /proc/sys/net/ipv4/conf/*
do
    echo 0 > $each/accept_redirects
    echo 0 > $each/send_redirects
done
 
 
#设置 l2tp
xl2tpd="/etc/xl2tpd/xl2tpd.conf"
if [ -f $xl2tpd ]; then
    cp $xl2tpd $xl2tpd.bak
fi
echo "
[global]
ipsec saref = yes
 
[lns default]
ip range = 10.1.2.2-10.1.2.255
local ip = 10.1.2.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
" > $xl2tpd
 
 
#设置 ppp
options_xl2tpd="/etc/ppp/options.xl2tpd"
if [ -f $options_xl2tpd ]; then
    cp $options_xl2tpd $options_xl2tpd.bak
fi
echo "
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
" > $options_xl2tpd
 
#添加 VPN 账号
chap_secrets="/etc/ppp/chap-secrets"
if [ -f $chap_secrets ]; then
    cp $chap_secrets $chap_secrets.bak
fi
echo "
$vpn_name * $vpn_password *
" >> $chap_secrets
 
 
#设置 iptables 的数据包转发
iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
 
 
/etc/init.d/ipsec stop
 
/etc/init.d/xl2tpd stop
 
/etc/init.d/ipsec start
 
screen -dmS xl2tpd xl2tpd -D
 
ipsec verify
 
echo "###########################################"
echo "##    L2TP VPN SETUP COMPLETE!"
echo "##    VPN IP          :   $ip"
echo "##    VPN USER        :   $vpn_name"
echo "##    VPN PASSWORD    :   $vpn_password"
echo "##    VPN PSK         :   $psk_password"
echo "###########################################"

然后按ESC,按“:”键,输入wq!保存退出。

接下来赋予脚本可执行权限。

chmod +x test.sh

执行脚本自动安装

./test.sh

稍后就会提示安装完毕了。
看看这,执行了
ipsec verify后一切OK。

Version check and ipsec on-path                                 [OK]
Linux Openswan U2.6.28/K2.6.32-5-686 (netkey)
Checking for IPsec support in kernel                            [OK]
NETKEY detected, testing for disabled ICMP send_redirects       [OK]
NETKEY detected, testing for disabled ICMP accept_redirects     [OK]
Checking that pluto is running                                  [OK]
Pluto listening for IKE on udp 500                              [OK]
Pluto listening for NAT-T on udp 4500                           [OK]
Checking for 'ip' command                                       [OK]
Checking for 'iptables' command                                 [OK]

至此,就可以用移动设备使用L2TP/IPSec PSK模式进行VPN的连接了。

事情还没有完,还要编辑添加开机启动:

sudo vim /etc/init.d/rc.local

在尾部添加

iptables --table nat --append POSTROUTING --jump MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
/etc/init.d/ipsec restart

保存后,重启,测试下VPN如果连接正常,就都OK了。

对于linux真的不太了解,但好歹是解开了之前没有搞定L2TP的心结。
实体机就用SSH就好了~

以上脚本内容参考:http://dhq.me/one-key-deploy-ipsec-l2tp-vpn-on-debian-CentOS

20170823 博主留言:VPN协议基本都被吃透了,想出去的话,放弃VPN改用其他方式架设吧,比如Shadowsocks,自己搜博文。

Related Posts: Debian-L2TP-VPN搭建流程 :