如何在Ubuntu下配置L2TP VPN

如何在Ubuntu下配置L2TP VPN,第1张

安装软件包

sudo apt-get install xl2tpd openswan ppp

IPSec / Openswan

打开 /etc/ipsec.conf 文件,做如下配置:

config setupnat_traversal=yesvirtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:!10.152.2.0/24# 这里包含的网络地址允许配置为远程客户端所在的子网。换句话说,# 这些地址范围应该是你的NAT路由器后面的客户端的地址。oe=offprotostack=netkey conn L2TP-PSK-NATrightsubnet=vhost:%privalso=L2TP-PSK-noNAT conn L2TP-PSK-noNATauthby=secretpfs=noauto=addkeyingtries=3rekey=no# Apple 的 iOS 不会发送 delete 提醒,# 所以我们需要通过死亡对端(dead peer)检测来识别断掉的客户端dpddelay=30dpdtimeout=120dpdaction=clear# 设置 ikelifetime 和 keylife 和 Windows 的默认设置一致ikelifetime=8hkeylife=1htype=transport# 替换 IP 地址为你的本地IP (一般是,私有地址、NAT内的地址)left=x.x.x.x# 用于升级过的 Windows 2000/XP 客户端leftprotoport=17/1701# 要支持老的客户端,需要设置 leftprotoport=17/%anyright=%anyrightprotoport=17/%any# 强制所有连接都NAT,因为 iOSforceencaps=yes

注意你的ipsec.conf文件,"config setup" 和 "L2TP-PSK-NAT"、 "L2TP-PSK-NAT"应该顶着行头写,而其它行应该以8个空格缩进。

打开 /etc/ipsec.secrets,配置:

x.x.x.x %any: PSK "somegoodpassword"

这里x.x.x.x 替换为你的服务器的IP地址,并设置一个复杂的密码。

启动 IPSEC 服务:

/etc/init.d/ipsec start

使用如下命令确认 ipsec 是否工作正常:

sudo ipsec verify

应该没有任何错误才行:

Checking your system to see if IPsec got installed and started correctly:Version check and ipsec on-path [OK]Linux Openswan U2.6.28/K2.6.32-32-generic-pae (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]Opportunistic Encryption Support[DISABLED]

在 /etc/init.d 下创建一个名为 ipsec.vpn 的文件,内容如下:

case "$1" in start)echo "Starting my Ipsec VPN"iptables -t nat -A POSTROUTING -o eth0 -s 10.152.2.0/24 -j MASQUERADEecho 1 >/proc/sys/net/ipv4/ip_forwardfor each in /proc/sys/net/ipv4/conf/*do echo 0 >$each/accept_redirects echo 0 >$each/send_redirectsdone/etc/init.d/ipsec start/etc/init.d/xl2tpd start stop)echo "Stopping my Ipsec VPN"iptables --table nat --flushecho 0 >/proc/sys/net/ipv4/ip_forward/etc/init.d/ipsec stop/etc/init.d/xl2tpd stop restart)echo "Restarting my Ipsec VPN"iptables -t nat -A POSTROUTING -o eth0 -s 10.152.2.0/24 -j MASQUERADEecho 1 >/proc/sys/net/ipv4/ip_forwardfor each in /proc/sys/net/ipv4/conf/*do echo 0 >$each/accept_redirects echo 0 >$each/send_redirectsdone/etc/init.d/ipsec restart/etc/init.d/xl2tpd restart *)echo "Usage: /etc/init.d/ipsec.vpn {start|stop|restart}"exit 1esac

这会配置防火墙转发。记得修改上面文件的本地IP地址池10.152.2.0/24为你自己的。

然后给这个文件设置可执行权限:

sudo chmod 755 ipsec.vpn

禁止默认的 ipsec 服务脚本运行:

sudo update-rc.d -f ipsec remove

然后,启用我们刚才定制的这个:

sudo update-rc.d ipsec.vpn defaults

L2TP

修改 /etc/xl2tpd/xl2tpd.conf :

[global]ipsec saref = no [lns default]ip range = 10.152.2.2-10.152.2.254local ip = 10.152.2.1require chap = yesrefuse pap = yesrequire authentication = yesppp debug = yespppoptfile = /etc/ppp/options.xl2tpdlength bit = yes

配置说明如下:

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

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

refuse pap = 拒绝 pap 认证

ppp debug = 测试时打开

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

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

* * exampleforchallengestring

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

refuse-mschap-v2refuse-mschapms-dns 8.8.8.8ms-dns 8.8.4.4asyncmap 0authcrtsctsidle 1800mtu 1200mru 1200lockhide-passwordlocal#debugname l2tpdproxyarplcp-echo-interval 30lcp-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 ,做如下配置:

user1 l2tpd chooseagoodpassword *user2 * chooseagoodpassword *

每行包括如下字段:

客户端 = 用户名称

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

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

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

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

IP转发

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

net.ipv4.ip_forward=1

载入新的配置:

sysctl -p

启动VPN

sudo /etc/init.d/ipsec.vpn restartsudo /etc/init.d/xl2tpd restart

排除故障

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

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

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

sudo tcpdump -i eth0 host aaa.bbb.ccc.ddd and not port ssh

打开手机主菜单,选择“设置”,然后选择“无线和网络” 选择“虚拟专用网设置” 请选择“添加虚拟专用网” 选择“添加VPN PPTP” 进入PPTP连接设置界面 请输入虚拟专用网名称“pptp”(此名称可自己随便定义) 点击填写你在好代理后台看到的登录名及密码(。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/tougao/11316965.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-15
下一篇 2023-05-15

发表评论

登录后才能评论

评论列表(0条)

保存