07月16, 2018

Ubuntu下配置L2TP VPN服务

一、安装软件包

sudo apt-get install xl2tpd ppp


二、修改配置

sudo vim /etc/xl2tpd/xl2tpd.conf
[global]
ipsec saref = no
  
[lns default]
ip range = 192.168.0.2-192.168.0.254
local ip = 192.168.0.1
require chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

配置说明如下:

ip range = 可以连接VPN服务的客户端IP地址范围

local ip = VPN 服务器的IP,必须在客户端IP范围之外

refuse pap = 拒绝 pap 认证

ppp debug = 测试时打开


选择一个复杂的挑战-响应式验证字符串。虽然没有最短长度限制,不过它应该至少有16个字符,也应该足够复杂才能保证安全。


打开文件 /etc/xl2tpd/l2tp-secrets ,填入你的密码:

vim /etc/xl2tpd/l2tp-secrets
* * exampleforchallengestring

打开文件 /etc/ppp/options.xl2tpd,做如下配置:

vim /etc/ppp/options.xl2tpd
refuse-mschap-v2
refuse-mschap
ms-dns 223.5.5.5
ms-dns 223.6.6.6
asyncmap 0
auth
crtscts
idle 1800
mtu 1200
mru 1200
lock
hide-password
local
#debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4

ms-dns 选项设置要给客户端分配的 DNS 服务器,当客户端连接时,就会被分配这些 DNS。如果要加入多个 DNS,就每行一个,分别写几行。

如果你要给客户端推送wins设置,可以分别设置如下选项。

mtu 和 mru 按照openswan.org的说法,减小 mru/mtu 的大小非常重要。因为  l2tp/ipsec 会封装几次,可能导致性能下降,减小这个配置的大小可以一次性传输全部的包。 

proxyarp 可以将连接的客户端的IP地址和以太网地址加入的系统的ARP表中。这会影响到本地局域网内其它客户端。

name l2tpd 用在 PPP验证文件里面。


三、添加用户

打开文件 /etc/ppp/chap-secrets ,做如下配置:

vim /etc/ppp/chap-secrets
user1 l2tpd chooseagoodpassword *
user2 * chooseagoodpassword *

每行包括如下字段:

客户端 = 用户名称

服务器 = 在上面的 /etc/ppp/options.xl2tpd 定义的名字

密码 = 用户密码,你应该设置一个足够复杂的密码

IP 地址 = * 表示用户可以从任何地址连接,否则设置用户只能从特定的地址连接

注意:你可以添加多个用户。


四、IP转发

打开文件 /etc/sysctl.conf,修改配置:

vim /etc/sysctl.conf
net.ipv4.ip_forward=1

载入新的配置:

sysctl -p

然后开启NAT转发.

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

192.168.0.0/24是你在上面设置的IP段,让这个段转发

注意eth0是你连接外网的那块网卡,不一定是0也有可能是1或者看你的机器哪块网卡连的外网了。这样就以NAT的方式请求外网的东西了。不知道你的机器哪块网卡连的外网的话ifconfig一下看看哪个网卡是外网IP就知道了。


设置永久转发

先将防火墙规则保存到/etc/iptables.up.rules文件中

iptables-save > /etc/iptables.up.rules

然后修改脚本/etc/network/interfaces,在对应网卡末尾添加一行,在网络启动时应用防火墙规则:

pre-up iptables-restore < /etc/iptables.up.rules


五、启动VPN

sudo /etc/init.d/xl2tpd restart


六、排除故障

如果遇到了问题,以下命令可以帮助你找到问题:

sudo tcpdump -i ppp0
sudo tail -f /var/log/auth.log
sudo tail -f /var/log/syslog

你可以可以在服务器上使用如下命令来监控:

sudo tcpdump -i eth0 host xxx.xxx.xxx.xxx and not port ssh

这里xxx.xxx.xxx.xxx 是你的客户端的公网地址。

本文链接:https://lxyit.com/article/show/135.html

-- EOF --