公司生产环境使用的是阿里云主机,采用的是两台nginx主机进行反向代理,现在需要内网一台服务器能够访问公网,所以在nginx服务器上搭建了VPN服务,用于进行内网访问公网。

系统环境:CenOS 6.5

所需软件软件:ppp、pptp

系统拓扑:

服务器端:

1 服务器端安装软件  

1.1 首先安装ppp,命令:  

[root@kuro ~]#yum install -y ppp*

提示Complete! ,安装成功;

1.2安装pptp,安装命令如下:

[root@kuro ~]#yum install –y pptpd*

2 配置pptp  

2.1编辑/etc/pptpd.conf,命令如下  

[root@kuro ~]#vi /etc/pptpd.conf

#localip 192.168.0.1
#remoteip 192.168.0.234-,192.168.0.245
修改成
localip 192.168.1.10
remoteip 192.168.1.234-,192.168.1.245
即将这两行第一个字符“#”去掉,保存退出

localip填写VPN服务器本地内网ip

remoteip填写的是要分配给VPN客户端的地址池

2.2编辑/etc/ppp/options.pptpd,命令如下  

[root@kuro ~]#vi /etc/ppp/options.pptpd

#ms-dns 10.0.0.1
#ms-dns 10.0.0.2
改成
ms-dns 10.202.72.116
ms-dns 10.202.72.116
即将这两行第一个字符“#”去掉,而后修改DNS的IP(本处使用的是阿里云默认dns)。

2.3设置使用pptp的用户名和密码  
命令:

[root@kuro ~]#vi /etc/ppp/chap-secrets  

打开后只有两行,而且一个账号都没有

# Secrets for authentication using CHAP
# client server secret IP addresses

根据您的需要添加账号,每行一个。按照:“用户名 pptpd 密码 ip地址”的格式输入,每一项之间用空格分开,

例如:

kuro pptpd   *         *表示所有IP

test  pptpd   192.168.1.234     还可以指定静态ip(192.168.1.234),表示使用test账号登录的用户就分配指定的静态ip(192.168.1.234)给客户端

保存并退出。

修改内核设置,使其支持转发  
命令:

[root@kuro ~]#vi /etc/sysctl.conf
将net.ipv4.ip_forward=
改成net.ipv4.ip_forward=
将net.ipv4.tcp_syncookies=
改成 #net.ipv4.tcp_syncookies=

保存并退出  
 
执行以下命令使修改后的内核生效

[root@kuro ~]#sysctl -p  

添加iptables转发规则  

iptables -t nat -A POSTROUTING -s 192.168.1.0/ -o eth1 -jMASQUERADE 

(注意:由于阿里云是双网卡,内网eth0,外网eth1,所以这块特别容易误写为eth0,这也是为什么很多杂乱的教程无法配置成功的原因之一)  
 
添加好转发规则后保存一下并重启iptables

[root@kuro ~]#/etc/init.d/iptables save
[root@kuro ~]#/etc/init.d/iptablesrestart

重启pptp服务

[root@kuro ~]#/etc/init.d/pptpd restart  

这里要注意一下,其实此时pptp还没运行起来。所以使用restart重启,会显示Shutting down pptp [FAILED]。还会有一个警告,可以忽略。如不放心可以再用以上命令重启一下pptp就非常顺利的运行了。

设置pptpiptables随系统启动  

[root@kuro ~]#chkconfig pptpd on
[root@kuro ~]#chkconfig iptables on

至此,pptp服务端安装结束。

FAQ

/var/log/messages日志中出现下面的错误,如何解决?

错误日志内容:from PTY failed: status = -1 error = Input/output error, usually caused by unexpected termination of pppd, check option syntax and pppd logs

解决办法:

修改 /etc/pptpd.conf 文件,注释掉logwtmp 这行,重启pptpd服务。

1.    #logwtmp

2.    # /etc/init.d/pptpd restart

再次尝试连接vpn客户端,可以成功验证用户和口令了。


 

客户端:

1确认是否安装ppp

#rpm -qa | grep ppp

如果没有,需要安装ppp的rpm,CentOS光盘中有

#yum install ppp* -y

2、安装客户端pptd

#yum install pptp* -y

3、配置

配置命令模板:

 pptpsetup --create tunnelname --server xxx.xxx.xxx.xxx--username 用户名 --password 密码

然后使用pptpsetup命令建立拨号连接:

pptpsetup --create test --server x.x.x.x --username vpnusername --password xxx

这样会生成一个名为test的vpn拨号账号,    然后编辑账号配置文件:

vi /etc/ppp/peers/test

# written by pptpsetup

pty "pptp xxx.xxx.xxx --nolaunchpppd"

lock

noauth

nobsdcomp

nodeflate

name vpnusername

remotename test

ipparam test

defaultroute #使用本连接作为默认路由

persist #当连接丢失时让pppd再次拨号

require-mppe-

refuse-pap

refuse-chap

refuse-eap

refuse-mschap

改为以上内容

或者将ipparam test下面的 改为一句

file /etc/ppp/options.pptp

4、连接

# pppd call tunnelname

ifconfig 可以看到 vpn连接ppp0出来了.

5、 断开

# killall pppd

6、注意事项
在处理路由的时候采用client to lan方式,需要增加对方lan的路由或者目标网络的路由.

# route add -net 0.0.0.0 dev ppp0

CenOS下搭建PPTP服务的更多相关文章

  1. CenOS下搭建VPN服务

    公司生产环境使用的是阿里云主机,采用的是两台nginx主机进行反向代理,现在需要内网一台服务器能够访问公网,所以在nginx服务器上搭建了VPN服务,用于进行内网访问公网. 系统环境:CenOS 6. ...

  2. 如何在Windows Server 2008 R2下搭建FTP服务

    在Windows Server 2008 R2下搭建FTP服务,供客户端读取和上传文件 百度经验:jingyan.baidu.com 工具/原料 Windows Server 2008 R2 百度经验 ...

  3. Ubuntu14.04下搭建VPN服务 -pptp

    在Ubantu下采用PPTP搭建VPN,优点是配置简单快捷.本教程亲自测试,熟练了在新机器上5分钟搞定VPN. - - - - - - - - - - - - - - - - - - - - - - ...

  4. Linux下搭建ftp服务

    Linux下ftp服务可以通过搭建vsftpd服务来实现,以CentOS为例,首先查看系统中是否安装了vsftpd,可以通过执行命令 rpm -qa | grep vsftpd 来查看是否安装相应的包 ...

  5. 00004 - CentOS 7下安装pptp服务端

    主要配置步骤 1. 安装前检查系统支持 a. 在安装之前查看系统是否支持PPTP modprobe ppp-compress-18 && echo success 应该输出:succe ...

  6. CentOS 7下安装pptp服务端手记 ok

    主要配置步骤 1. 安装前检查系统支持 2. 安装必要包 3. 修改相关配置文件 4. 设置开机自动启动 pptpd, iptables 5. iptables配置网络 6. 阿里云ECS可能还需要几 ...

  7. windows server2008下搭建ftp服务

    在工作中不光使用linux系统下的ftp服务,也得使用windows下的,今天领导让我做一个,踩了很多坑,终于是做完了,重现下过程,我们就来一步一步搭建我们的windows下的ftp服务器: 1.环境 ...

  8. linux下搭建DHCP服务

    一键搭建dhcpd服务脚本 [root@dhcp-server~]# cat auto_install_dhcpd.sh #!/bin/sh . /etc/init.d/functions #安装dh ...

  9. windows 下搭建 MQTT 服务

    1.首先搭建起MQTT服务 1.1安装mosquitto,mosquitto是开源的MQTT代理服务器,它的Windows安装包地址:https://mosquitto.org/download/ 1 ...

随机推荐

  1. VS 提升代码辨识度 (工欲善其事必先利其器)新手开发必备!

    VS简化编译.提高生产 本文提供全流程,中文翻译. Chinar 坚持将简单的生活方式,带给世人!(拥有更好的阅读体验 -- 高分辨率用户请根据需求调整网页缩放比例) Chinar -- 心分享.心创 ...

  2. 一台机器上安装两个tomcat

    1.使用压缩版的tomcat不能使用安装版的.  2.第一个tomcat的配置不变.  3.增加环境变量CATALINA_HOME2,值为新的tomcat的地址:增加环境变量CATALINA_BASE ...

  3. 【javaScript】数组的相关操作

    数组的创建 var arrayObj = new Array(); //创建一个数组 var arrayObj = new Array([size]); //创建一个数组并指定长度,注意不是上限,是长 ...

  4. 使用python比较两个文件的不同之处

    比较两个文件的不同之处用处还是比较大的,特别是比较两个版本的不同之处 [root@localhost python]# cat diftest.py #!/usr/bin/python import ...

  5. is_null, empty, isset的区别

    参考博客: http://www.jb51.net/article/24666.htm http://www.jb51.net/article/36223.htm is_null, empty, is ...

  6. ASP.NET WebApi使用Swagger生成api说明文档

    最近做的项目使用mvc+webapi(非.Net Core),采取前后端分离的方式,后台提供API接口给前端开发人员.这个过程中遇到一个问题后台开发人员怎么提供接口说明文档给前端开发人员,最初打算使用 ...

  7. 如何让你的 KiCad 在缩放时不眩晕?

    如何让你的 KiCad 在缩放时不眩晕? 使用 KiCAD 第一感觉是打开速度非常快,而且 PCB 拉线也非常快,封装库又多. 但有一个问题,缩放时总给人一种眩晕,原来是因为鼠标自动跑到屏幕中间去了, ...

  8. Tornado 文件操作笔记

    import tornado.web import tornado.ioloop import tornado.options import tornado.httpserver from torna ...

  9. python json.dumps(output) ^ SyntaxError: invalid syntax

    问题 下面代码在有些机器上执行正常,有些机器上执行报错: import json output={} print json.dumps(output) python代码报错: line 277 pri ...

  10. VMware Ubuntu如何连接互联网

    Brigde——桥接 :默认使用VMnet0  1.原理:  Bridge 桥”就是一个主机,这个机器拥有两块网卡,分别处于两个局域网中,同时在”桥”上,运行着程序,让局域网A中的所有数据包原封不动的 ...