作者:邓聪聪

1

L2TP(Layer 2 Tunnel Protocol二层隧道协议l),上图说明了VPN的一些特点,出差员工或者外出员工通过拨特定号码的方式接入到企业内部网络;

-------------------------------------------------

 1、搭建环境
  Centos6.8
  所需软件:openswan、xl2tpd、rp-l2tp 链接:https://pan.baidu.com/s/1C9plODlCXlVO3x51_OFcNQ 密码:1ry8
  yum安装所需的程序
yum install -y ppp iptables make gcc gmp-devel xmlto bison flex libpcap-devel lsof vim-enhanced man

2、安装openswan

cd openswan-2.6./
make programs install

3、安装xl2tpd和rp-l2tp

cd rp-l2tp-0.4
./configure
make
cp handlers/l2tp-control /usr/local/sbin/
mkdir /var/run/xl2tpd/
ln -s /usr/local/sbin/l2tp-control /var/run/xl2tpd/l2tp-control
------------------------------------------------------------------
cd xl2tpd-1.3.8
make && make install

4、配置

(1)编辑配置文件/etc/ipsec.conf

config setup
nat_traversal=yes
virtual_private=%v4:10.0.0.0/,%v4:192.168.0.0/,%v4:172.16.0.0/
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=
rekey=no
ikelifetime=8h
keylife=1h
type=transport
left=接口上的公网IP地址
leftid=接口上的公网地址
leftprotoport=/
right=%any
rightid=%any
rightprotoport=/%any

(2)设置共享密钥PSK 编辑配置文件/etc/ipsec.secrets

ServerIP %any: PSK "YourPSK"

(3)修改内核设置,使其支持转发,编辑/etc/sysctl.conf文件并生效

sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sed -i 's/net.ipv4.conf.default.rp_filter = 1/net.ipv4.conf.default.rp_filter = 0/g' /etc/sysctl.conf sysctl -p

  编辑个一个脚本修改参数,防火墙配置nat转发

#!/bin/sh

for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
echo 0 > $each/rp_filter
echo 0 > $each/rp_filter
echo 0 > $each/rp_filter
done
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -A POSTROUTING --jump MASQUERADE

(4)验证ipsec运行状态;查看系统IPSec安装和启动的正确性

ipsec setup start
ipsec verify

  如果没有报错那么就没有问题,如果有报错逐一检查!!!

(5) 编辑配置文件/etc/xl2tpd/xl2tpd.conf

[global]
ipsec saref = yes
[lns default]
ip range = (vpn拨号所需的自定义内网地址)
local ip = (vpn本地的内网地址)
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes

配置ppp 建立/etc/ppp/options.xl2tpd文件

require-mschap-v2
ms-dns 219.141.140.10
ms-dns 114.114.
asyncmap
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval
lcp-echo-failure

(6)配置用户名,密码:编辑 /etc/ppp/chap-secrets

#default user & password set
#username server password client-ipaddress
vpn l2tpd vpnpwd *

(7)添加自启动

chkconfig ipsec on

chkconfig xl2tpd on

(8)检查ipsec配置的正确性,启动服务并验证服务是否正常启动

[root@heju ~]# ipsec verify
Checking if IPsec got installed and started correctly: Version check and ipsec on-path [OK]
Openswan U2.6.50/K2.6.32-.el6.x86_64 (netkey)
See `ipsec --copyright' for copyright information.
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]
Hardware random device check [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 [OK]
Pluto listening for IKE on tcp [NOT IMPLEMENTED]
Pluto listening for IKE/NAT-T on udp [OK]
Pluto listening for IKE/NAT-T on tcp [NOT IMPLEMENTED]
Pluto listening for IKE on tcp (cisco) [NOT IMPLEMENTED]
Checking NAT and MASQUERADEing [TEST INCOMPLETE]
Checking 'ip' command [OK]
Checking 'iptables' command [OK]
------表示无异常 [root@heju ~]# netstat -lntup
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0.0.0.0: 0.0.0.0:* LISTEN /sshd
tcp 127.0.0.1: 0.0.0.0:* LISTEN /master
tcp ::: :::* LISTEN /sshd
tcp ::: :::* LISTEN /master
udp 127.0.0.1: 0.0.0.0:* /pluto
udp 192.168.168.250: 0.0.0.0:* /pluto
udp X.X.X.X: 0.0.0.0:* /pluto
udp 127.0.0.1: 0.0.0.0:* /pluto
udp 192.168.168.250: 0.0.0.0:* /pluto
udp X.X.X.X: 0.0.0.0:* /pluto
udp X.X.X.X: 0.0.0.0:* /xl2tpd
udp ::: :::* /pluto
------端口检查中存在500、、,即表示服务已启动
记录用户名和登录时间:
在/etc/ppp/ip-up 脚本中加入
echo "****************************************************" >>  /var/log/xl2tpd-${}-up.log
echo "username: $PEERNAME" >> /var/log/xl2tpd-${}-up.log
echo "clientIP: $6" >> /var/log/xl2tpd-${}-up.log
echo "device: $1" >> /var/log/xl2tpd-${}-up.log
echo "vpnIP: $4" >> /var/log/xl2tpd-${}-up.log
echo "assignIP: $5" >> /var/log/xl2tpd-${}-up.log
echo "logintime: `date -d today +%F_%T`" >> /var/log/xl2tpd-${}-up.log
echo "****************************************************" >> /var/log/xl2tpd-${1}-up.log
在/etc/ppp/ip-down 脚本中加入
echo "****************************************************" >> /var/log/xl2tpd-${}-down.log
echo "downtime: `date -d today +%F_%T`" >> /var/log/xl2tpd-${}-down.log
echo "bytes sent: $BYTES_SENT" >> /var/log/xl2tpd-${}-down.log
echo "bytes received: $BYTES_RCVD" >> /var/log/xl2tpd-${}-down.log
echo "connect time: $CONNECT_TIME" >> /var/log/xl2tpd-${}-down.log
echo "****************************************************" >> /var/log/xl2tpd-${}-down.log
===================================================================

Liunx之xl2TP的一键搭建的更多相关文章

  1. 一键搭建vpn服务器

    今天花了很多时间搭建vpn服务器,后来找到一篇一键搭建服务器的文章,那叫一个爽,附上链接收藏~~~看开以后要写脚本了 http://www.centoscn.com/image-text/instal ...

  2. Centos6一键搭建L2TP VPN服务器

    用VPS在墙上打洞还有一种叫L2TP,也是常见的一种方式.本脚本结合了L2TP(Layer Tunneling Protocol)和IPSec(Internet Protocol Security), ...

  3. redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(多机)

    redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(多机) 一.概述 此教程介绍如何在windows系统中多个服务器之间,布置redis哨兵模式(主从复制),同时要以后台服务的模式运行 ...

  4. redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(单机)

    redis在Windows下以后台服务一键搭建哨兵(主从复制)模式(单机) 一.概述 此教程介绍如何在windows系统中单机布置redis哨兵模式(主从复制),同时要以后台服务的模式运行.布置以脚本 ...

  5. redis在Windows下以后台服务一键搭建集群(多机器)

    redis在Windows下以后台服务一键搭建集群(多机器) 一.概述 此教程介绍如何在windows系统中多台机器之间布置redis集群,同时要以后台服务的模式运行.布置以脚本的形式,一键完成.多台 ...

  6. redis在Windows下以后台服务一键搭建集群(单机--伪集群)

    redis在Windows下以后台服务一键搭建集群(单机--伪集群) 一.概述 此教程介绍如何在windows系统中同一台机器上布置redis伪集群,同时要以后台服务的模式运行.布置以脚本的形式,一键 ...

  7. 用Python一键搭建Http服务器的方法

    用Python一键搭建Http服务器的方法 Python3请看 python -m http.server 8000 & Python2请看 python -m SimpleHTTPServe ...

  8. 免费AWS云服务器一键搭建Trojan详细教程

    前言 想要撸AWS服务器的可以看我上一篇博客,这里就不介绍了,以下步骤有问题的朋友可以私信或者评论区留言. 配置AWS云服务器 选择语言,博主写了博客后才看到,前面都是使用谷歌翻译. 选择地区 创建虚 ...

  9. Docsify+腾讯云对象存储 COS,一键搭建云上静态博客

    最近一直在想如何利用 COS 简化静态博客的搭建过程.搜了很多的静态博客搭建过程,发现大部分的静态博客都要通过编译才能生成静态页面.功夫不负有心人,终于让我找到了一个超简洁博客的搭建方法. 效果预览 ...

随机推荐

  1. 【openssl】利用openssl完成X509证书和PFX证书之间的互转

    利用openssl完成X509证书和PFX证书之间的互转 # OpenSSL的下载与安装: 1.下载地址: 官方网址—— https://www.openssl.org/source/ OpenSSL ...

  2. Java面试题全集(上)转载

    Java面试题全集(上)   2013年年底的时候,我看到了网上流传的一个叫做<Java面试题大全>的东西,认真的阅读了以后发现里面的很多题目是重复且没有价值的题目,还有不少的参考答案也是 ...

  3. win10的cmd中显示:telnet不是内部或外部命令也不是可运行的程序或批处理?

    win10的cmd中显示:telnet不是内部或外部命令也不是可运行的程序或批处理? 摘录自:https://blog.csdn.net/haijing1995/article/details/664 ...

  4. Redis 高可用分布式集群

    一,高可用 高可用(High Availability),是当一台服务器停止服务后,对于业务及用户毫无影响. 停止服务的原因可能由于网卡.路由器.机房.CPU负载过高.内存溢出.自然灾害等不可预期的原 ...

  5. 谈一谈Elasticsearch的集群部署

      Elasticsearch天生就支持分布式部署,通过集群部署可以提高系统的可用性.本文重点谈一谈Elasticsearch的集群节点相关问题,搞清楚这些是进行Elasticsearch集群部署和拓 ...

  6. Linux命令(十四)gdb调试

    1. gdb调试 fun.c #include <stdio.h> #include "head.h" int sum(int a, int b) { printf(& ...

  7. freemarker迭代list、map等常规操作,将数据放到模板中

    转自:https://blog.csdn.net/wickedvalley/article/details/65937189 一.controller开始准备模型.数据1.po类 package co ...

  8. Python正则的贪婪和非贪婪示例

    贪婪匹配 import re info = """ saas12 [STREAM] codec_type=audio111 [/STREAM]-- [STREAM] co ...

  9. JS判断是电脑浏览器还是手机端浏览器,并根据不同的终端跳转到不同的网址

    <!DOCTYPE html> <html> <script> function browserRedirect() { var sUserAgent = navi ...

  10. url 组成部分

    NSURL其实就是我们在浏览器上看到的网站地址,这不就是一个字符串么,为什么还要在写一个NSURL呢,主要是因为网站地址的字符串都比较复杂,包括很多请求参数,这样在请求过程中需要解析出来每个部门,所以 ...