PPTP部署

安装 PPTP 需要 MPPE 和较高版本的 ppp ( > 2.4.3 ) 支持,不过 CentOS 5.0/RHEL 5 的 2.6.18 内核已经集成了 MPPE 和高版本的 ppp 。因此可以跳过安装配置 MPPE 和 ppp 的过程直接安装 PPTP。

如果需要检查 MPPE 是否存在可以使用以下命令:

shell> modprobe ppp-compress-18 && echo ‘MPPE found !’

1.安装 pptpd

32位

#确保安装了ppp 和 iptables
yum install -y ppp iptables
wget http://acelnmp.googlecode.com/files/pptpd-1.3.4-1.rhel5.1.i386.rpm
rpm
-ivh pptpd-1.3.4-1.rhel5.1.i386.rpm
  1. Notice:

  2. 官网http://poptop.sourceforge.net/已经删掉了1.3.4版的pptpd的RPM,所以只好在这个地方下载 
  3. 判断CentOS系统是32位还是64位? getconf LONG_BIT
2.配置文件编写

①.配置文件/etc/ppp/options.pptpd

mv /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
cat >>/etc/ppp/options.pptpd<<EOF
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
idle 2592000
ms-dns 8.8.8.8
ms-dns 8.8.4.4
EOF

name pptpd : pptpd server 的名称。

refuse-pap : 拒绝 pap 身份验证模式。

refuse-chap : 拒绝 chap 身份验证模式。

refuse-mschap : 拒绝 mschap 身份验证模式。

require-mschap-v2 : 在端点进行连接握手时需要使用微软的 mschap-v2 进行自身验证。

require-mppe-128 : MPPE 模块使用 128 位加密。

ms-dns 8.8.8.8

ms-dns 8.8.4.4 : ppp 为 Windows 客户端提供 DNS 服务器 IP 地址,第一个 ms-dns 为 DNS Master,第二个为 DNS Slave。

proxyarp : 建立 ARP 代理键值。

debug : 开启调试模式,相关信息同样记录在 /var/logs/message 中。

lock : 锁定客户端 PTY 设备文件。

nobsdcomp : 禁用 BSD 压缩模式。

novj

novjccomp : 禁用 Van Jacobson 压缩模式。

nologfd : 禁止将错误信息记录到标准错误输出设备(stderr)。

②.配置文件/etc/ppp/chap-secrets

mv /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
vi /etc/ppp/chap-secrets

输入以下内容

# Secrets for authentication using CHAP
# client server secret IP addresses
myusername pptpd mypassword *

③.配置文件/etc/pptpd.conf

mv /etc/pptpd.conf /etc/pptpd.conf.bak
cat >>/etc/pptpd.conf<<EOF
#pptpd.conf
option /etc/ppp/options.pptpd
logwtmp
localip 10.82.18.1
remoteip 10.82.18.2-254
EOF

注:为拨入VPN的用户动态分配10.82.18.2~10.82.18.254之间的IP

④.配置文件/etc/sysctl.conf(修改内核转发参数)

上一篇博文所述,可以sysctl -w net.ipv4.ip_forward=1,也可以

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

直接替换/etc/sysctl.conf的内容。这样写的好处在于不必在启动脚本/etc/rc.local中添加sysctl -w net.ipv4.ip_forward=1,一劳永逸。

IPSec+L2TP部署

这部分部署方法已经有现成的一键脚本,怕麻烦的用户可以直接拿去跑。但是本着不求甚解的原则还是一步步列出。

L2TP (Layer 2 Tunneling Protocol) 是VPN隧道协议的一种,它使用UDP的1701端口进行通信。L2TP本身并没有任何加密,但是我们可以使用IPSec对L2TP包进行加密。更多关于L2TP的理论知识可以访问这个Wiki

因为联通和移动陆续封掉了 PPTP 数据包,所以L2TP是移动设备VPN几乎唯一选择(OpenVPN配置稍显麻烦)。

Linux环境下,有很多方法配置L2TP;一个选项是采用openl2tpd,但是他对老版本的ppp隧道支持不好。更重要的是在CentOS环境下,它要求内核需要patch,我想没多少人希望没事给内核patch吧。

基于这个原因,本文选择了xl2tpd & rp-l2tpdxl2tpd 是由 Xelerance Corporation 维护的l2tpd应用。但是xl2tpd 没有l2tp-control,需要从rp-l2tp这个里面提取。

1.安装OpenSwan

经典的2.6.24这个版本和最新的2.6.41都可以。

#安装依赖
yum install make gcc gmp-devel bison flex
wget https://download.openswan.org/openswan/openswan-2.6.41.tar.gz --no-check-certificate
tar zxvf openswan-2.6.41.tar.gz
cd openswan-2.6.41
make programs install

①.修改配置文件/etc/ipsec.conf

mv /etc/ipsec.conf /etc/ipsec.conf.bak
cat >>/etc/ipsec.conf<<EOF
#ipsec.conf
version 2.0
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
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
ikelifetime=8h
keylife=1h
type=transport
left=YOUR.SERVER.IP.ADDRESS
leftprotoport=17/1701
right=%any
rightprotoport=17/%any
EOF

②.设置 PSK

rm -r /etc/ipsec.secrets
cat >>/etc/ipsec.secrets<<EOF
YOUR.SERVER.IP.ADDRESS %any: PSK "YourSharedSecret"
EOF

③.修改包转发设置

for each in /proc/sys/net/ipv4/conf/*
do
echo 0 > $each/accept_redirects
echo 0 > $each/send_redirects
done
#若PPTP部分设置过,则下面不必在设置
sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sysctl -p

重新启动 ipsec,并测试运行效果

service ipsec restart
ipsec verify

若无FAIL即为正常。
这个时候 ipsec 部分完成了,可以测试一下,新建一个 ipsec+l2tp 的连接,填好服务器地址和 SharedKey,点连接。在服务端

tail -f /var/log/secure
#若出现以下内容,这代表IPSec一切正常
#pppd[3624]: IPSec connection established

2.安装xl2tpd和rp-l2tp

①.下载编译安装

#安装依赖,xl2tpd从1.3.0版本,开始增加了xl2tpd-control,此步骤若安装1.3.0版本,则可放弃
yum install libpcap-devel ppp
#rp-l2tp
wget http://downloads.sourceforge.net/project/rp-l2tp/rp-l2tp/0.4/rp-l2tp-0.4.tar.gz
tar zxvf rp-l2tp-0.4.tar.gz
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
#xl2tpd
cd..
wget https://download.openswan.org/xl2tpd/xl2tpd-1.3.1.tar.gz --no-check-certificate
tar zxvf xl2tpd-1.3.1.tar.gz
cd xl2tpd-1.3.1
make install

②.写配置文件

mkdir /etc/xl2tpd
rm -f /etc/xl2tpd/xl2tpd.conf
cat >>/etc/xl2tpd/xl2tpd.conf<<EOF
#/etc/xl2tpd/xl2tpd.conf
[global]
ipsec saref = yes
[lns default]
ip range = 10.82.88.2-10.82.88.254
local ip = 10.82.88.1
refuse chap = yes
refuse pap = yes
require authentication = yes
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
length bit = yes
EOF
rm -f /etc/ppp/options.xl2tpd
cat >>/etc/ppp/options.xl2tpd<<EOF
#/etc/ppp/options.xl2tpd
require-mschap-v2
ms-dns 8.8.8.8
ms-dns 8.8.4.4
asyncmap 0
auth
crtscts
lock
hide-password
modem
debug
name l2tpd
proxyarp
lcp-echo-interval 30
lcp-echo-failure 4
EOF

③.设置密码/etc/ppp/chap-secrets

输入以下内容

# Secrets for authentication using CHAP
# client server secret IP addresses
myusername l2tpd mypassword *

服务启动

1.配置防火墙iptables

service iptables start
#可以考虑
#iptables -t nat -A POSTROUTING -o eth0 -s 10.82.18.0/24 -j MASQUERADE
#iptables -t nat -A POSTROUTING -o eth0 -s 10.82.88.0/24 -j MASQUERADE
#考虑到之后还要配置L2TP,直接一下倒显得更加简便
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

OpenVZ用户将eth0换成venet0即可。

2.启动
service pptpd start
ipsec verify
service ipsec restart
xl2tpd

3.配置自启动脚本,添加以下内容到/etc/rc.local

iptables --table nat --append POSTROUTING --jump MASQUERADE
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
/usr/local/sbin/xl2tpd

参考资料:

http://logicmd.net/2010/12/setup-pptp-and-l2tp-over-ipsec-on-centos/

【转】CentOS上部署PPTP和L2TP over IPSec简要笔记的更多相关文章

  1. Centos 上部署 tomcat7

     在 Centos 上部署 tomcat7 搜索tomcat,选下面红色框框的官网 选箭头指着的版本7, 选 tar.gz 格式, 下载完压缩包,使用 ftpx 工具,放在 centos 的 /opt ...

  2. CentOS上部署Django+Nginx+Uwsgi环境

    在CentOS上部署Django+Nginx+Uwsgi环境 奇谭  2016-09-01 评论  Linux  python django nginx uwsgi VirtualEnv的作用:创建隔 ...

  3. 在CentOS上部署kubernetes1.9.0集群

    原文链接: https://jimmysong.io/kubernetes-handbook/cloud-native/play-with-kubernetes.html (在CentOS上部署kub ...

  4. WTM asp.net core应用程序在Ubuntu上和CentOS上部署

    wtm在Ubuntu上和CentOS上部署 项目发布 在Visual Studio中右击Web项目,选择发布,如下图: Ubuntu安装.net core运行时 Ubuntu我是用的Vmware虚拟机 ...

  5. VPN 隧道协议PPTP、L2TP、IPSec和SSLVPN的区别

    最近软矿频繁地介绍了各种VPN,有免费的PacketiX.NET和Hotspot Shield,有付费的Astrill VPN,iVPN和PureVPN.在介绍这些VPN的时候,常常会说到PPTP.L ...

  6. CentOS上部署Apache、MySQL和PHP

    centos上yum安装很方便,下面介绍编译安装的方式. 第一步要在CentOS上安装gcc.g++等开发工具 可以从系统光盘上安装,或者 #yum groupinstall "Develo ...

  7. CentOS上部署JAVA服务【转】

    http://www.th7.cn/Program/java/201511/686437.shtml 本文将介绍如何在CentOS上运行Java Web服务,其中将包括如何搭建JAVA运行环境.如何开 ...

  8. 【BIGDATA】在Centos上部署ElasticSearch 7.3.2及kibana

    一.下载: 首先,下载ElasticSearch和kibana安装包,版本自选,官方下载页https://www.elastic.co/cn/downloads/ 二.版本检查 很重要的一步,要检查C ...

  9. PPTP、L2TP、IPSec和SSLVPN的区别

    VPN (虚拟专用网)发展至今已经不在是一个单纯的经过加密的访问隧道了,它已经融合了访问控制.传输管理.加密.路由选择.可用性管理等多种功能,并在全球的信息安全体系中发挥着重要的作用.也在网络上,有关 ...

随机推荐

  1. ElasticSearch+ElasticGeo+Geoserver发布ES地理数据

    依赖GeoserverElasticSearchElasticGeo部署部署ElasticGeo使用创建ES数据源并发布发布 依赖 Geoserver 环境搭建参考: ElasticSearch 环境 ...

  2. centos6.5 mysql-server 5.1.73启动失败

    yum install mysql-server 安装mysql服务端会把相应的客户端也装上 service mysqld start  启动mysql服务 解决办法: 1.chomod 777  / ...

  3. virut详细分析

    Virut分析 0x00.综合描述 virut样本的执行过程大体可以分为六步:第一步,解密数据代码,并调用解密后的代码:第二步,通过互斥体判断系统环境,解密病毒代码并执行:第三步,创建内存映射文件,执 ...

  4. How do I get the path of the current executed file in Python?

    First, you need to import from inspect and os from inspect import getsourcefile from os.path import ...

  5. day21

    1.文件上传     a. Html Form表单提交     b. Ajax提交         原生XMLHttpRequest             XmlHttpReqeust() 类    ...

  6. Oracle客户端工具出现“Cannot access NLS data files or invalid environment specified”错误的解决办法

    Oracle客户端工具出现"Cannot access NLS data files or invalid environment specified"错误的解决办法 方法一:参考 ...

  7. 完整mybatis应用

    <?xml version="1.0" encoding="UTF-8" ?><!DOCTYPE mapper PUBLIC "-/ ...

  8. android 4.4/5.1上使用aar的问题

    在Android6.0上可以使用LOCAL_STATIC_JAVA_AAR_LIBRARIES.build脚本会把指定的aar解压缩到临时目录,并将class.jar和res添加到对应的变量. LOC ...

  9. cocos2d-x for android配置 & 运行 Sample on Linux OS

    1.从http://www.cocos2d-x.org/download下载稳定版 比如cocos2d-x-2.2 2.解压cocos2d-x-2.2.zip,比如本文将其解压到 /opt 目录下 3 ...

  10. Android源码阅读 – Zygote

    @Dlive 本文档: 使用的Android源码版本为:Android-4.4.3_r1 kitkat (源码下载: http://source.android.com/source/index.ht ...