公司生产环境使用的是阿里云主机,采用的是两台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下搭建VPN服务的更多相关文章

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

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

  2. CenOS下搭建PPTP服务

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

  3. Ubuntu14.04下搭建VPN服务

    直接上步骤: 1.第一步需要安装PPTP,以用来提供VPN服务. sudo apt-get install pptpd 如果有问题的话比如提示找不到之类的,apt-get update 一下应该就可以 ...

  4. 搭建VPN服务器之PPTP

    搭建VPN服务器之PPTP 1. 查看系统是否支持PPP 一般自己的系统支持,VPS需要验证. [root@oldboyedu ~]# cat /dev/ppp cat: /dev/ppp: No s ...

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

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

  6. Linux下搭建VPN服务器(CentOS、pptp)转

    先说我搭建过程中出现的问题吧: 按照 教程搭建好之后出现了619错误,查看日志:/var/log/messages: Nov 20 09:46:20 localhost pptpd[7498]: GR ...

  7. 转载-Linux下搭建VPN服务器(CentOS、pptp)

    转自:http://www.cnblogs.com/sixiweb/archive/2012/11/20/2778732.html 搭建过程参考这篇文章 先说我搭建过程中出现的问题吧: 按照 教程搭建 ...

  8. 转 Windows server 2008 搭建VPN服务

    VPN英文全称是“Virtual Private Network”,就是“虚拟专用网络”.   虚拟专用网络就是一种虚拟出来的企业内部专用线路.这条隧道可以对数据进行几倍加密达到安全使用互联网的目的. ...

  9. Linux下搭建ftp服务

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

随机推荐

  1. 监听turtlesim仿真器,发送数据到实际的机器人--20

    摘要: 原创博客:转载请表明出处:http://www.cnblogs.com/zxouxuewei/ 1.0.本教程教你写实际的ros程序,控制自己的机器人.采用的是PC端的ubuntu+ros.终 ...

  2. Python 判断一个字符串是否在列表中任何一个字符串中出现过

    strlist = ['a1', 'a2', 'b1'] if any("a" in s for s in strlist):

  3. Windows7下QT5开发环境搭建 分类: QT开发 2015-03-09 23:44 65人阅读 评论(0) 收藏

    Windows7下QT开法环境常见搭配方法有两种. 第一种是:QT Creator+QT SDK: 第二种是:VS+qt-vs-addin+QT SDK: 以上两种均可,所需文件见QT社区,QT下载地 ...

  4. java多线程:并发包中ReentrantLock锁的公平锁原理

    一:锁的原理结构 (1)锁对象内部维护了一个同步管理器的对象AbstractQueuedSynchronizer,AbstractOwnableSynchronizer (2)该对象其实是一个抽象类, ...

  5. Java设计模式之适配器设计模式

    1.适配器模式( Adapter)定义将一个类的接口转换成客户希望的另外一个接口.Adapter 模式使得原来由于接口不兼容而不能一起工作的 那些类可以一起工作. 现实案例如下:  墙上电源类(22 ...

  6. 暂且解决INSTALL_FAILED_SHARED_USER_INCOMPATIBLE错误

    有时候我们在APK安装时由于工程制定了UID,换过签名后可能出现 类似 INSTALL_FAILED_SHARED_USER_INCOMPATIBLE 或 INSTALL_FAILED_UPDATE_ ...

  7. Unity3d 根据重力自动翻转

    玩游戏时,经常有这样的体验.我正常是左横屏,手机翻转过来为右横屏,游戏界面也随着翻转为右横屏. Unity3D引擎,不需要写任何代码,只需要 Player Setting 设置即可: 如图所示:

  8. MySQL : interactive_timeout v/s wait_timeout

    Most of the database intensive applications are worring about the default values of these variables ...

  9. 怎么保护PDF文档和扫描文件里的机密信息

    从事商务工作的人,必然要处理带有机密信息的文档,需要分享这些文档的时候,如何谨慎小心地对待那些机密信息,说到底还是取决于自己.分享文档的目的不同,对文档的保护类型和级别也不一样.例如,只有授权的读者才 ...

  10. 002. 在HTML页面嵌入循环代码

    <%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default2.aspx.cs ...