在CentOS 7系统建立基于IPSEC上的L2TP VPN服务器

前言:有时候出于安全考虑,对某些地址、端口的访问会做些限制,比如像外出人员访问内网资源时,就不能让直接访问,这时最简易快速的方法就是搭建一台VPN服务器,通常为了稳定我们会选择LINUX系统,在LINUX系统上建立拨号VPN的方式通常有PPTP、L2TP、OPENVPN等。

以下为linux的最新系统centos7/rhel7上的l2tpd服务器配置方法。

本文为在linux的最新系统centos7和rhel7上的l2tpd服务器配置方法。
在Centos7上提供L2TP服务的最新程序包为:xl2tpd-1.3.6-8.el7.x86_64,提供IPSEC服务最新程序包为:libreswan-3.15-5.el7_1.x86_64 。在早些版本的LINUX系统提供IPSEC服务是由openswan包提供,但在Centos7中,openswan更名为libreswan

一 , 安装相关的软件包,xl2tpd提供l2tp服务,libreswan提供ipsec服务,在centos7 版本后, 提供ipsec 服务包由libreswan替代了openswan

[root@linuxcc.com]#yum install xl2tpd
[root@linuxcc.com]#yum install libreswan

注:如果系统找不到包,请在http://linuxcc.com 选择linux包搜索,进行搜索下载。

二,配置和启用linux系统的ipsec服务,如果版本一致,站内的配置文件可以直接覆盖你的配置,本站测试的系统版本为centos7

1,修改ipsec 主配置文件:

[root@linuxcc.com]#vi /etc/ipsec.conf

# /etc/ipsec.conf - Libreswan IPsec configuration file

# This file:  /etc/ipsec.conf
#
# Enable when using this configuration file with openswan instead of libreswan
#version 2
#
# Manual:     ipsec.conf.5

# basic configuration
config setup
    # which IPsec stack to use, "netkey" (the default), "klips" or "mast".
    # For MacOSX use "bsd"
    protostack=netkey
    #
    # Normally, pluto logs via syslog. If you want to log to a file,
    # specify below or to disable logging, eg for embedded systems, use
    # the file name /dev/null
    # Note: SElinux policies might prevent pluto writing to a log file at
    #       an unusual location.
    #logfile=/var/log/pluto.log
    #
    # The interfaces= line is only required for the klips/mast stack
    #interfaces="%defaultroute"
    #interfaces="ipsec0=eth0 ipsec1=ppp0"
    #
    # If you want to limit listening on a single IP - not required for
    # normal operation
    #listen=127.0.0.1
    #
    # Do not set debug options to debug configuration issues!
    #
    # plutodebug / klipsdebug = "all", "none" or a combation from below:
    # "raw crypt parsing emitting control kernel pfkey natt x509 dpd
    #  private".
    # Note: "crypt" is not included with "all", as it can show confidential
    #       information. It must be specifically specified
    # examples:
    # plutodebug="control parsing"
    # plutodebug="all crypt"
    # Again: only enable plutodebug or klipsdebug when asked by a developer
    #plutodebug=none
    #klipsdebug=none
    #
    # Enable core dumps (might require system changes, like ulimit -C)
    # This is required for abrtd to work properly
    # Note: SElinux policies might prevent pluto writing the core at
    #       unusual locations
    dumpdir=/var/run/pluto/
    #
    # NAT-TRAVERSAL support
    # exclude networks used on server side by adding %v4:!a.b.c.0/24
    # It seems that T-Mobile in the US and Rogers/Fido in Canada are
    # using 25/8 as "private" address space on their wireless networks.
    # This range has never been announced via BGP (at least upto 2015)

    #在配置文件里加入这一行,充许传透nat建立l2tp连接
    nat_traversal=yes
    virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12,%v4:25.0.0.0/8,%v4:100.64.0.0/10,
     %v6:fd00::/8,%v6:fe80::/10

# For example connections, see your distribution's documentation directory,
# or https://libreswan.org/wiki/
#
# There is also a lot of information in the manual page, "man ipsec.conf"
#
# It is best to add your IPsec connections as separate files in /etc/ipsec.d/
include /etc/ipsec.d/*.conf

2,建立ipsec 与 l2tp 服务关联的配置文件:

[root@linuxcc.com]#cd /etc/ipsec.d/
[root@linuxcc.com]#vi l2tp_psk.conf 
conn L2TP-PSK-NAT
    rightsubnet=vhost:%priv
    also=L2TP-PSK-noNAT
conn L2TP-PSK-noNAT
    authby=secret
    pfs=no
    auto=add
    keyingtries=3
    dpddelay=30
    dpdtimeout=120
    dpdaction=clear
    rekey=no
    ikelifetime=8h
    keylife=1h
    type=transport
    left=123.57.255.228
    #123.57.255.228对外提供连接的ip地址
    leftprotoport=17/1701
    right=%any
    rightprotoport=17/%any

3,当建立l2tp连接时,需要输入预共享密匙,以下为预共享密匙的配置文件:

[root@linuxcc.com]# vi /etc/ipsec.secrets 
include /etc/ipsec.d/*.secrets  
#却省配置中已包含这行,请确认
[root@linuxcc.com]#cd /etc/ipsec.d/
[root@linuxcc.com]#touch linuxcc_l2tp.secrets
[root@linuxcc.com]#vi linuxcc_l2tp.secrets
123.57.255.228 %any: PSK "l2tppass"
#123.57.255.228 为对外提供l2tp连接的服务器地址

4,修改内核支持,可以对照以下配置修改,或者直接复制,修改完后运行sysctl -p 使配置生效

[root@linuxcc.com]#vi /etc/sysctl.conf 
# System default settings live in /usr/lib/sysctl.d/00-system.conf.
# To override those settings, enter new settings here, or in an /etc/sysctl.d/<name>.conf file
#
# For more information, see sysctl.conf(5) and sysctl.d(5).

vm.swappiness = 0
net.ipv4.neigh.default.gc_stale_time=120
net.ipv4.conf.all.rp_filter=0
net.ipv4.conf.default.rp_filter=0
net.ipv4.conf.default.arp_announce = 2
net.ipv4.conf.all.arp_announce=2
net.ipv4.tcp_max_tw_buckets = 5000
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 1024
net.ipv4.tcp_synack_retries = 2
net.ipv4.conf.lo.arp_announce=2
net.ipv4.ip_forward = 1
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_source_route = 0
#如果不需要建立ipv6建接支持,ipv6的配置可以省略
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 =

5,检验ipsec服务配置:

[root@linuxcc.com]# ipsec setup start
[root@linuxcc.com]# ipsec verify
Verifying installed system and configuration files

Version check and ipsec on-path                         [OK]
Libreswan 3.15 (netkey) on 3.10.0-123.9.3.el7.x86_64
Checking for IPsec support in kernel                    [OK]
NETKEY: Testing XFRM related proc values
         ICMP default/send_redirects                    [OK]
         ICMP default/accept_redirects                  [OK]
         XFRM larval drop                               [OK]
Pluto ipsec.conf syntax                                 [OK]
Hardware random device                                  [N/A]
Two or more interfaces found, checking IP forwarding    [OK]
Checking rp_filter                                      [OK]
Checking that pluto is running                          [OK]
Pluto listening for IKE on udp 500                     [OK]
Pluto listening for IKE/NAT-T on udp 4500              [OK]
Pluto ipsec.secret syntax                              [OK]
Checking 'ip' command                                   [OK]
Checking 'iptables' command                             [OK]
Checking 'prelink' command does not interfere with FIPSChecking for obsolete ipsec.conf options                 [OK]
Opportunistic Encryption                                [DISABLED]
#当出现类似于这样,无报错的输出时,恭喜你ipsec服务配置完成。

6,报错处理,当出现以下错误提示时 ,不用在意,可以继续。


[root@linuxcc.com]# ipsec verify
Verifying installed system and configuration files

Version check and ipsec on-path [OK]
Libreswan 3.15 (netkey) on 3.10.0-229.el7.x86_64
Checking for IPsec support in kernel [OK]
NETKEY: Testing XFRM related proc values
ICMP default/send_redirects [OK]
ICMP default/accept_redirects [OK]
XFRM larval drop [OK]
Pluto ipsec.conf syntax [OK]
Hardware random device [N/A]
Two or more interfaces found, checking IP forwarding [OK]
Checking rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/enp2s0/rp_filter [ENABLED]
/proc/sys/net/ipv4/conf/enp3s7/rp_filter [ENABLED]
rp_filter is not fully aware of IPsec and should be disabled
Checking that pluto is running [OK]
Pluto listening for IKE on udp 500 [OK]
Pluto listening for IKE/NAT-T on udp 4500 [OK]
Pluto ipsec.secret syntax [OK]
Checking ‘ip’ command [OK]
Checking ‘iptables’ command [OK]
Checking ‘prelink’ command does not interfere with FIPSChecking for obsolete ipsec.conf options [OK]
Opportunistic Encryption [DISABLED]

ipsec verify: encountered 5 errors – see ‘man ipsec_verify’ for help

6,启动ipsec服务:

[root@linuxcc.com]# systemctl start ipsec
[root@linuxcc.com]# systemctl enable ipsec
ln -s '/usr/lib/systemd/system/ipsec.service' '/etc/systemd/system/multi-user.target.wants/ipsec.service'
#设置为开机启动

三,安装配置xl2tpd服务

1,修改xl2tpd主配置文件:

#安装提供l2tp的服务包
[root@linuxcc.com]#yum install xl2tpd
#打开修改xl2tpd主配置文件
[root@linuxcc.com]#vi /etc/xl2tpd/xl2tpd.conf
;
; This is a minimal sample xl2tpd configuration file for use
; with L2TP over IPsec.
;
; The idea is to provide an L2TP daemon to which remote Windows L2TP/IPsec
; clients connect. In this example, the internal (protected) network 
; is 192.168.1.0/24.  A special IP range within this network is reserved
; for the remote clients: 192.168.1.128/25
; (i.e. 192.168.1.128 ... 192.168.1.254)
;
; The listen-addr parameter can be used if you want to bind the L2TP daemon
; to a specific IP address instead of to all interfaces. For instance,
; you could bind it to the interface of the internal LAN (e.g. 192.168.1.98
; in the example below). Yet another IP address (local ip, e.g. 192.168.1.99)
; will be used by xl2tpd as its address on pppX interfaces.

[global]
#启用xl2tpd的ipsec支持
ipsec saref = yes
#123.57.255.228为对外提供连接的服务器地址
listen-addr = 123.57.255.228
;listen-addr = 192.168.1.98
;
; requires openswan-2.5.18 or higher - Also does not yet work in combination
; with kernel mode l2tp as present in linux 2.6.23+
; ipsec saref = yes
; Use refinfo of 22 if using an SAref kernel patch based on openswan 2.6.35 or
;  when using any of the SAref kernel patches for kernels up to 2.6.35.
; saref refinfo = 30
;
; force userspace = yes
;
; debug tunnel = yes

[lns default]
#设置建立连接后,分配给客户端的ip地址
ip range = 192.168.1.128-192.168.1.254
local ip = 192.168.1.99
require chap = yes
refuse pap = yes
require authentication = yes
name = linuxcc_l2tp_server
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

2,修改xl2tpd属性配置文件:

[root@linuxcc.com]# vi /etc/ppp/options.xl2tpd
require-mschap-v2
#require-mschap-v2 用来支持windows 7,windows8 连接
ipcp-accept-local
ipcp-accept-remote
#8.8.8.8为分配给客户端的dns
ms-dns  8.8.8.8
# ms-dns  192.168.1.1
# ms-dns  192.168.1.3
# ms-wins 192.168.1.2
# ms-wins 192.168.1.4
noccp
auth
crtscts
idle 1800
mtu 1410
mru 1410
nodefaultroute
debug
lock
proxyarp
connect-delay 5000
# To allow authentication against a Windows domain EXAMPLE, and require the
# user to be in a group "VPN Users". Requires the samba-winbind package
# require-mschap-v2
# plugin winbind.so
# ntlm_auth-helper '/usr/bin/ntlm_auth --helper-protocol=ntlm-server-1 --require-membership-of="EXAMPLE\\VPN Users"' 
# You need to join the domain on the server, for example using samba:
http://rootmanager.com/ubuntu-ipsec-l2tp-windows-domain-auth/setting-up-openswan-xl2tpd-with-native-windows-clients-lucid.html

3,建立xl2tpd连接的用户,建立l2tp连接需要输入的用户名和密码就在该文件里配置:

[root@linuxcc.com]# vi /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
#linuxcc_l2tpduser为连接用户,linuxcc_l2tp123为连接密码,中间以空格和tab键分割
linuxcc_l2tpuser * linuxcc_l2tp123 *

4,启动和检验xl2tpd服务配置,然后进行连接测试

[root@linuxcc.com]# systemctl start xl2tpd
[root@linuxcc.com]# systemctl status xl2tpd
xl2tpd.service - Level 2 Tunnel Protocol Daemon (L2TP)
   Loaded: loaded (/usr/lib/systemd/system/xl2tpd.service; disabled)
   Active: active (running) since Thu 2015-12-31 23:36:24 CST; 9s ago
  Process: 1322 ExecStartPre=/sbin/modprobe -q l2tp_ppp (code=exited, status=0/SUCCESS)
Main PID: 1324 (xl2tpd)
   CGroup: /system.slice/xl2tpd.service
           1324 /usr/sbin/xl2tpd -D

Dec 31 23:36:24 Linuxdc_USA systemd[1]: Starting Level 2 Tunnel Protocol Daemon (L2TP)...
Dec 31 23:36:24 Linuxdc_USA systemd[1]: Started Level 2 Tunnel Protocol Daemon (L2TP).
Dec 31 23:36:24 Linuxdc_USA xl2tpd[1324]: xl2tpd[1324]: Not looking for kernel SAref support.
Dec 31 23:36:24 Linuxdc_USA xl2tpd[1324]: xl2tpd[1324]: Using l2tp kernel support.
Dec 31 23:36:24 Linuxdc_USA xl2tpd[1324]: xl2tpd[1324]: xl2tpd version xl2tpd-1.3.6 started on Linuxdc_USA PID:1324
Dec 31 23:36:24 Linuxdc_USA xl2tpd[1324]: xl2tpd[1324]: Written by Mark Spencer, Copyright (C) 1998, Adtran, Inc.
Dec 31 23:36:24 Linuxdc_USA xl2tpd[1324]: xl2tpd[1324]: Forked by Scott Balmos and David Stipp, (C) 2001
Dec 31 23:36:24 Linuxdc_USA xl2tpd[1324]: xl2tpd[1324]: Inherited by Jeff McAdams, (C) 2002
Dec 31 23:36:24 Linuxdc_USA xl2tpd[1324]: xl2tpd[1324]: Forked again by Xelerance (www.xelerance.com) (C) 2006
Dec 31 23:36:24 Linuxdc_USA xl2tpd[1324]: xl2tpd[1324]: Listening on IP address 0.0.0.0, port 1701

结束:

基于centos7 和rhel7的l2tpd服务器其本配置完成 ,欢迎测试,有其他问题,可在站内该文的评论外留言。

转载请注明出处 ,更多好文请收藏linuxcc.org,谢谢!

时间: 2024-10-22 01:36:02

在CentOS 7系统建立基于IPSEC上的L2TP VPN服务器的相关文章

CentOS 6.4 x86_64上部署PPTP VPN 服务器的教程

背景介绍: 搭建PPTP VPN Server应该是非常容易的,可身边有不少朋友在参考了一些文章后仍然来求助于我,走了不少的弯路. 因此,觉得自己有必要写一篇文章来讲解一下.毕竟我写文章的习惯是边操作边记录,所以一步一步照着做就可以完成,大家都喜欢看. 相关配置: OS: CentOS 6.4 x86_64 Minimal 1. 安装EPEL扩展库 # yum install http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8

在WINXP下建立VPN服务器的方法_服务器

最近想在WinXP上创建一个VPN服务器,在网上找了找,找到了相关资料,转来贴之. 利用WINXP不需要第三方软件,可以直接构建一个VPN服务器,如果没有采用SOFTETHER,虚拟HUB的必要的话,要实现VPN,可以直接用WINXP来实现.     接下来,我们以WINXP操作系统,宽带连接来构建一个虚拟专用网络.     第一步: VPN服务器的建立     右单击,网上邻居,选属性,打开网络连接属性. 在"网络任务"里选择,创建一个新的连接. 打开新建连接向导. 然后,点 下一步

在Linux系统下建立基于MPICH2的高性能分布式并行计算环境

MPICH2 提供了在现有的软硬件架构下对大数据进行并行.分布式处理的一个平台.本文将介绍如何在 Linux 系统下建立基于 MPICH2 的高性能分布式并行计算环境. MPI(Message Passing Interface)是由 MPI 委员会制定的一个消息传递标准,其中定义了一系列用于分布式环境中进行进程间通信的编程接口,目前有 MPI-1 和 MPI-2 两个版本.MPICH2 就是对 MPI 的一个具体实现,MPICH2 在保证高性能的同时保持了高度的可移植性,支持包括 AIX.Li

如何在CentOS/RHEL中安装基于Web的监控系统 linux-dash

如何在CentOS/RHEL中安装基于Web的监控系统 linux-dash Linux-dash是一款为Linux设计的基于web的轻量级监控面板.这个程序会实时显示各种不同的系统属性,比如CPU负载.RAM使用率.磁盘使用率.网速.网络连接.RX/TX带宽.登录用户.运行的进程等等.它不会存储长期的统计.因为它没有后端数据库. 本篇文章将会向你展示如何安装和设置Linux dash,这里所使用的web服务器是Nginx. 安装 首先我们要启用EPEL 仓库. 接下来,我们需要用下面的命令安装

CentOS 6系统上借助docker快速搭建openvpn服务

一.安装docker 1.在CentOS6上安装docker除去编译之外还可以通过yum安装,不过是用EPEL源来安装 [root@li760-160 ~]# yum clean all [root@li760-160 ~]# yum makecache [root@li760-160 ~]# yum install -y epel-release 2.安装docker 和rzsz命令方便等下传输ovpn配置文件 [root@li760-160 ~]# yum install -y docker

基于整数上同态加密的云存储密文检索系统

基于整数上同态加密的云存储密文检索系统 中国海洋大学   张雪娇 本文在对现有的同态加密算法进行分析比较的基础上,选出一种适用于本系统的同态加密算法:并利用该同态加密算法设计出一套检索算法,有效地完成了范围检索.利用XML构建结构化索引文件,元素的属性值是文件索引词的密文,检索时仅对索引文件的元素属性值进行检索,XML的结构化性质便于检索的实施,既保证了原文件的安全性,又能快速有效地检索到用户想要的数据.针对本文使用的同态加密算法为对称加密算法的情况,引入了RSA加密算法作为会话密钥,采用二级密

在CentOS/RHEL/Scientific Linux 6 &amp; 7 上安装Telnet

在CentOS/RHEL/Scientific Linux 6 & 7 上安装Telnet 声明: 在安装和使用Telnet之前,需要记住以下几点. 在公网(WAN)中使用Telnet是非常不好的想法.它会以明文的格式传输登入数据.每个人都可以看到明文. 如果你还是需要Telnet,强烈建议你只在局域网内部使用. 你可以使用SSH作为替代方法.但是确保不要用root用户登录. Telnet是什么? Telnet 是用于通过TCP/IP网络远程登录计算机的协议.一旦与远程计算机建立了连接,它就会成

CentOS上配置主DNS服务器的简易指南

CentOS上配置主DNS服务器的简易指南任何运作中的域名至少有两台DNS服务器,一台称为主域名服务器(比如叫做ns1),而另一台称为从域名服务器(比如叫做ns2).这些服务器通常用于故障转移:如果一台宕机,另外一台就激活成为DNS服务器(译注:此处译者有不同意见,事实上两个或更多的DNS服务器是共同工作的,并不是第一台停止服务后,第二台才接替工作.解析器是随机选择一个DNS服务器进行询问,如果超时则会询问下一个,这是多个DNS的故障容错机制).也可以实现包括负载均衡.防火墙和集群在内的更为复杂

CentOS Linux系统搭建Android开发环境详细介绍_Linux

CentOS Linux系统搭建Android开发环境详细介绍        很多人都是在Windows下进行Android开发,但是对于Linux,Android开发环境方面的资料比较少,今天在网上找到了一位网友分享的在CentOS Linux系统中搭建Android开发环境的过程.下面就是其介绍的配置的详细步骤原文:        由于我最近每天使用的是CentOS 5.5,所以选择CentOS5.5作为我的开发环境.        主要包括以下步骤: 1.JDK安装 2.Eclipse安装