在Ubuntu下配置L2TP VPN

编译自:https://help.ubuntu.com/community/L2TPServer
转自:LCTT https://linux.cn/article-3409-1.html

使用L2TP/IPSec 的VPN。

1、安装软件包

sudo apt-get install xl2tpd openswan ppp

2、IPSec / Openswan

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

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,%v4:!10.152.2.0/24
        # 这里包含的网络地址允许配置为远程客户端所在的子网。换句话说,
        # 这些地址范围应该是你的NAT路由器后面的客户端的地址。
        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
        # Apple 的 iOS 不会发送 delete 提醒,
        # 所以我们需要通过死亡对端(dead peer)检测来识别断掉的客户端
        dpddelay=30
        dpdtimeout=120
        dpdaction=clear
        # 设置 ikelifetime 和 keylife 和 Windows 的默认设置一致
        ikelifetime=8h
        keylife=1h
        type=transport
        # 替换 IP 地址为你的本地IP (一般是,私有地址、NAT内的地址)
        left=x.x.x.x
        # 用于升级过的 Windows 2000/XP 客户端
        leftprotoport=17/1701
        # 要支持老的客户端,需要设置 leftprotoport=17/%any
        right=%any
        rightprotoport=17/%any
        # 强制所有连接都NAT,因为 iOS
        forceencaps=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 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 start
    /etc/init.d/xl2tpd start
;;
  stop)
    echo "Stopping my Ipsec VPN"
    iptables --table nat --flush
    echo 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 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
    /etc/init.d/xl2tpd restart
;;
  *)
    echo "Usage: /etc/init.d/ipsec.vpn  {start|stop|restart}"
    exit 1
;;
esac

这会配置防火墙转发。记得修改上面文件的本地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

3、L2TP

修改 /etc/xl2tpd/xl2tpd.conf :

[global]
ipsec saref = no

[lns default]
ip range = 10.152.2.2-10.152.2.254
local ip = 10.152.2.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 ,填入你的密码:

* * exampleforchallengestring

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

refuse-mschap-v2
refuse-mschap
ms-dns 8.8.8.8
ms-dns 8.8.4.4
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验证文件里面。

4、添加用户

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

user1 l2tpd chooseagoodpassword *
user2 * chooseagoodpassword *

每行包括如下字段:

客户端 = 用户名称
服务器 = 在上面的 /etc/ppp/options.xl2tpd 定义的名字
密码 = 用户密码,你应该设置一个足够复杂的密码
IP 地址 = * 表示用户可以从任何地址连接,否则设置用户只能从特定的地址连接
注意:你可以添加多个用户。

5、IP转发

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

net.ipv4.ip_forward=1

载入新的配置:

sysctl -p

6、启动VPN

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

7、排除故障

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

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

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

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

这里aaa.bbb.ccc.ddd 是你的客户端的公网地址。

本文主要整理自 https://help.ubuntu.com

时间: 2024-10-17 16:02:27

在Ubuntu下配置L2TP VPN的相关文章

Ubuntu下搭建L2TP VPN Server

这是本人第一篇博客,也算是自己的尝试,以前学习东西,一般都是以文档的方式记录.文档有时候容易丢失,所以开始尝试用博客记录学习历程.毕业在即,在此记录毕设的一部分内容. 内容:Ubuntu下搭建L2TP VNP服务器(校园网Intranet VPN)   1 查看服务器主机网络信息 :$ ifconfig eth0      Link encap:Ethernet  HWaddr fa:16:3e:a0:64:0c             inet addr:172.16.0.61  Bcast:

ubuntu下配置vpn支持訪问外网

公司的开发环境都是局域网的,在公司内部使用没有什么问题.可是有时候确实要在外部比方家里.出差使用,这时候就须要配置vpn连接公司内网了.vpn的配置非常easy,但有时我们连了vpn后还须要公网资源.比方qq接收文件.查资料之类的,断了vpn再连外网.查完资料后再连vpn,非常烦.这就须要vpn同一时候也能訪问外网.windows环境下这样的配置非常easy.vpn的连接属性上.把ipv4的属性改为"自己主动获得IP地址"和"自己主动获得DNSserver地址"即可

CentOS 6、7下IPSEC/L2TP VPN一键安装脚本(openswan+xl2tpd)

CentOS 6.7下IPSEC/L2TP VPN一键安装脚本(openswan+xl2tpd) 概念性的东西这里不再赘述,网上有太多,一键安装脚本也有很多,但是很多不能用,能用的也仅仅只是在CentOS6下使用,CentOS7基本没看到这些安装脚本.于是花了一些时间来折腾测试,写这个脚本方便以后VPN的一键安装搭建.其中用的开源软件包是openswan和xl2tpd,,中间碰到过很多很多问题,如openswan和xl2tpd之间的兼容性问题. 请容许我这样做,脚本依赖<OneinStack>

cisco anyconnect, ubuntu 下配置

cisco anyconnect, ubuntu 下配置 windows/mac/android/ios 下都可以到 cisco的网站下载anyconnect软件,都有可视化的软件可以用. linux 下的用vpnc 就可以连接 到cisco vpn 了. sudo apt-cache search vpnc 你可以看到返回了若干个相关的包.其中vpnc 就是我们需要的了.所以 sudo apt-get install vpnc 这个是core,不带GUI,输入 sudo vpnc 启动,会引导

Ubuntu下配置tftp服务和NFS服务

Ubuntu下配置tftp服务和NFS服务 配置tftp 方法一:(推荐方法)Ubuntu10.04 测试通过 1.安装TFTP软件 sudo apt-get install tftp-hpa tftpd-hpa tftp-hpa是客户端,tftpd-hpa是服务器端 2.建立tftpboot目录,作为服务器的目录sudo mkdir ~/tftpboot释放权限:(服务器目录,需要设置权限为777,chomd 777)sudo chmod 777 ~/tftpboot 3.配置TFTP服务器

ubuntu 下配置Python wxWidgets (复制自官方网站)

全系统英文官网操作地址:http://wxpython.org/download.php Ubuntu 英文操作地址:http://wiki.wxpython.org/InstallingOnUbuntuOrDebian Installing wxWidgets and wxPython On Ubuntu Or Debian There are wxWidgets and wxPython packages in the standard software repositories for D

Ubuntu Or Debian L2TP VPN 一键安装脚本

#!/bin/bash if [ $(id -u) != "0" ]; then printf "Error: You must be root to run this tool!\n" exit 1 fi clear printf " #################################################### # # # This is a Shell-Based tool of l2tp installation # #

Ubuntu下配置Tomcat以指定(非root)身份运行

My Blog:http://www.outflush.com/ 通常情况下,在配置Tomcat生产环境时,通常会配置Tomcat以特定的身份运行(非root),这样有利于提高安全性,防止网站被黑后的进一步权限提升. 本文依赖的环境: Ubuntu(其实大部分同样适用于CentOS) JVM(安装并已配置好环境变量) gcc.make等编译工具 JAVA_HOME=/usr/lib/jvm/jdk1.7.0_55 CATALINA_HOME=/usr/local/apache-tomcat-7.

Ubuntu下配置Sublime到Dash board 以及 VI/VIM编辑文件时无权限保存的问题

[1]Ubuntu下配置Sublime到Dash board Ubuntu是个好系统,Sublime Text 是个好编辑器. 下载&安装 个人习惯喜欢到官网下载软件,http://www.sublimetext.com/2 选择合适的包下载回来的格式是.tar.bz2格式,需要进行解压. 1. 解压: tar -xvf Sublime\ Text\ 2.0.2.tar.bz2 2.为了在Terminal的任何位置都能执行./sublime_text文件,将解压后他的目录保存到环境变量$PATH