CentOS7中PPTP的配置
最近做各种vpn,记录一下pptp的流程
#yum install -y perl ppp iptables //centos默认安装了iptables和ppp
#yum install pptpd
3. 修改配置文件
3.1 配置文件/etc/ppp/options.pptpd
#cp /etc/ppp/options.pptpd /etc/ppp/options.pptpd.bak
#vi /etc/ppp/options.pptpd
将如下内容添加到到options.pptpd中(如果需要使用代码来启动进程方式,需要修改name,这个name和chap-secets文件中的第二项对应):
ms-dns 8.8.8.8
ms-dns 8.8.4.4
然后保存这个文件。
解析:ms-dns 8.8.8.8, ms-dns 8.8.4.4是使用google的dns服务器
3.2 配置文件/etc/ppp/chap-secrets
#cp /etc/ppp/chap-secrets /etc/ppp/chap-secrets.bak
#vi /etc/ppp/chap-secrets
chap-secrets内容如下:
# Secrets for authentication using CHAP
# client server secret IP addresses
myusername pptpd mypassword *
PS:
//myusername是你的vpn帐号
pptpd和options.pptpd中的name对应
mypassword是你的vpn的密码
*表示允许任何ip连接该pptp vpn
我这里根据这个格式,假设我的vpn的帐号是ksharpdabu,密码是 sky。那么,应该如下:
ksharpdabu pptpd sky *
3.3 配置文件/etc/pptpd.conf
#cp /etc/pptpd.conf /etc/pptpd.conf.bak
#vi /etc/pptpd.conf
修改下面:
connection 100 #最大连接数
localip 192.168.9.1 #vpn服务占用的ip
remoteip 192.168.9.11-30 //表示vpn客户端获得ip的范围
3.4 配置文件/etc/sysctl.conf
#vi /etc/sysctl.conf //修改内核设置,使其支持转发
将net.ipv4.ip_forward = 0 改成 net.ipv4.ip_forward = 1
保存修改后的文件
#/sbin/sysctl -p
4. 启动pptp vpn服务和iptables
#service pptpd start
经过前面步骤,我们的VPN已经可以拨号登录了,但是还不能访问任何网页。
最后一步就是添加iptables转发规则了,输入下面的指令:
启动iptables和nat转发功能,很关键的呀:
#/sbin/service iptables start //启动iptables
#iptables -t nat -A POSTROUTING -p tcp --syn -s 192.168.9.0/24 -j TCPMSS --set-mss 1356 #这里主要是解决pptp无法访问https站点的问题,还有一种方法是连接后修改ppp0的mtu值,但是每次都需要手动修改太麻烦了
#iptables -t nat -A POSTROUTING -s 192.168.9.0/24 -j SNAT --to-source 207.210.83.140 #添加转发规则
//注意:
需要注意的是,“192.168.9.0/24”是根据之前的配置文件中的“localip”网段来改变的(这个网段是用户自定义的 ),比如你设置的 “10.0.0.1”网段,则应该改为“10.0.0.0/24”
to-source 的值写外网网卡的ip地址即可
#/etc/init.d/iptables save //保存iptables的转发规则
#/sbin/service iptables restart //重新启动iptables
5. 重启pptp vpn
#service pptpd restart
客户端如何拨号登陆vpn,我就不写了,大家可以自行google
6. 设置pptp vpn 开机启动
#chkconfig pptpd on //开机启动pptp vpn服务 #chkconfig iptables on //开机启动iptables
7. 过程中遇到的问题
之前pptp测试都是好的,可是在其他环境部署的时候出现了问题
LCP: timeout sending Config-Requests
Jun 3 14:52:05 localhost pppd[29491]: Connection terminated.
Jun 3 14:52:05 localhost pppd[29491]: Modem hangup
Jun 3 14:52:05 localhost pppd[29491]: Exit.
Jun 3 14:52:05 localhost pptpd[29490]: GRE: read(fd=6,buffer=7fc6156eb480,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs
Jun 3 14:52:05 localhost pptpd[29490]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
Jun 3 14:52:05 localhost pptpd[29490]: CTRL: Client 192.168.1.112 control connection finished
往上各种说法,可能情况不同
基本上是:
1. 注释pptpd.conf中的logwtmp(版本不匹配的原因)
2. 注释options.pptpd中的require-mschap-v2和require-mppe-128
尝试后都没有成功,最终找到了解决方案:
是两个内核模块没有在机器启动的时候加载进来:nf_conntrack_pptp和nf_conntrack_proto_gre
原因是这样的:
在内核版本为3.18或者更高时,模式在开机时已经加载了nf_conntrack_pptp模块
如果低版本内核,开机没有加载该模块,需要手动加载modprobe nf_conntrack_pptp
iptables支持pptp gre模块的规则过滤需要有上述模块的支持,在没有加载的该模块的时候iptables都会将pptp和gre的数据包识别为invalid类型,drop掉
手动加载
# modprobe nf_conntrack_pptp
开机加载
sudo touch /etc/modules-load.d/nf_conntrack_pptp.conf
sudo echo "nf_conntrack_pptp" > /etc/modules-load.d/nf_conntrack_pptp.conf
希望可以帮到同样问题的人
CentOS7中PPTP的配置的更多相关文章
- centos7中安装、配置、验证、卸载redis
本文介绍在centos7中安装.配置.验证.卸载redis等操作,以及在使用redis中的一些注意事项. 一 安装redis 1 创建redis的安装目录 利用以下命令,切换到/usr/local路径 ...
- CentOs7中的网卡配置工具
CentOs7中的网卡配置工具 摘自:https://blog.51cto.com/13572810/2087991 misslaziness1人评论2715人阅读2018-03-17 22:09:1 ...
- CentOS7中OpenVPN的配置
最近需要在openstack中集成openvpn功能,故熟悉了一下openvpn的搭建流程,记录下来,供参考 版本:openvpn-2.3.4.tar.gz 下载地址:http://pan.baidu ...
- centos7中安装、配置jdk(转载)
参考命令:http://www.jb51.net/os/RedHat/73016.html来进行安装 安装说明 系统环境:centos7安装方式:rpm安装软件:jdk-8u25-linux-x64. ...
- centos7中redis安装配置
1.官网下载对应版本,本例以5.0.5为例 2.tar -zxvf xxxxx 并mv到安装目录 3.进入redis-5.0.5目录下,执行编译命令 make 4.编译完成后,经redis安装到指定目 ...
- Centos7 中lvs DR配置
服务器主机: 10.200.3.100 DirectServer 10.200.3.99 RealServer1 10.200.3.101 RealServer2 10.2 ...
- CentOS7中GreVPN的配置
目前只实现了三层的GRE隧道,但其实二层也可以实现的,但是没有找到很好的方法,待研究 环境如下: host A : 121.207.22.123 host B: 111.2.33.28 1. 在ho ...
- docker 在centos7中设置 DOCKER_OPTS
不同于Ubuntu目录 /etc/default/docker. 在 CentOS7中Docker默认配置的路径在 /usr/lib/systemd/system/docker.service [例如 ...
- CentOS-7.0.中安装与配置Tomcat-7的方法
安装说明 安装环境:CentOS-7.0.1406安装方式:源码安装 软件:apache-tomcat-7.0.29.tar.gz 下载地址:http://tomcat.apache.org/down ...
随机推荐
- 设计模式之架构型MVC,MVP,MVVM模式
一.MVCMVC,Model View Controller,是软件架构中最常见的一种设计模式,简单来说就是通过Controller的控制去操作Model层的数据,并且返回给view层展示.View跟 ...
- 如何让多个li居中于ul中间
设置ul的display:table,text-align:center. 注意:不可以设置ul的宽,不然无法实现.
- (56)Wangdao.com第八天_JavaScript 流程控制语句
流程控制语句 条件判断语句 if 条件分支语句 switch 循环语句 for .while switch 和 if 都可以相互转换,switch 的性能更优于 if 1. 条件判断语句 if 在某条 ...
- thinkphp 区间查询 查符合某个字段的数据 但是n个条件 用and or 配合
function get_arbeit_yuexin($screen){ $data = get_money_data_s($screen,2); dump($data['url_id']);//$d ...
- Linux命令 file
查看文件类型:
- LeetCode 78 - 子集
给定一组不含重复元素的整数数组 nums,返回该数组所有可能的子集(幂集). 说明:解集不能包含重复的子集. 示例: 输入: nums = [1,2,3]输出:[ [3], [1], [2], [1, ...
- robot 中文 乱码 问题 的处理
第一种方式: def unic(item): if isinstance(item, unicode): return item if isinstance(item, (bytes, ...
- flask基础三
一.路由和视图(基础二上补充) (1)有参装饰器 路由采用的是有参装饰器实现的 @app.route("/index",methods=["GET"," ...
- 软件工程第二次作业-VSTS单元测试
一.选择开发工具 开发工具选择 Visual studio 2017 社区版,开发语言为C 由于之前已经安装完毕,所以不上传安装过程,主界面如下: 二.练习自动单元测试 使用的测试工具是VSTS,具体 ...
- C语言学习随笔记
第一次接触C语言,心中对新知识还是充满好奇的.最开始是从晓鹏老师那听说的C语言,记得当时晓鹏老师是在给我们介绍软考,叫我们去准备软考的时候说到了C语言告诉我们C语言是基础,C语言很重要,叫我们能学多好 ...