之前不是一直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,自己搜博文。
如您从本文得到了有价值的信息或帮助,请考虑扫描文末二维码捐赠和鼓励。
如本文对您有用,捐赠和留言 将是对我最好的支持~(捐赠可转为站内积分)
如愿意,请向朋友推荐本站,谢谢。
尊重他人劳动成果。转载请务必附上原文链接,我将感激不尽。