公司生产环境使用的是阿里云主机,采用的是两台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. Linux(Ubuntu 13)下安装Eclipse

    1.本机配置及软件情况: Ubuntu版本:Ubuntukylin-13.10-desktop-i386(32位) JDK:jdk1.7.0_15(jdk-7u15-i856.gz) eclipse: ...

  2. spring学习笔记---第三方SDK(Rest API)和Jaskson的巧用

    前言: 其实我以前一直不懂电商, 以及电商中所涉及的业务概念. 对于SKU等名词, 觉得有些玄乎. 对其背后的数据模型, 也有莫名的未知恐惧感: 庞大而理不清头绪. 不过最近有机会接触了微商(有赞), ...

  3. [转]国内良心DNS汇集

    http://www.changbizi.net/archives/664.html 长鼻子实验室 湖北电信的DNS服务器真是烂到掉渣,曾经有一年我给他们的售后打电话到人家都记住我的手机号码,但是DN ...

  4. haar-like特征(转载)

    浅析人脸检测之Haar分类器方法  [补充] 这是我时隔差不多两年后, 回来编辑这篇文章加的这段补充, 说实话看到这么多评论很是惊讶, 有很多评论不是我不想回复, 真的是时间久了, 很多细节我都忘记了 ...

  5. kuangbin_ShortPath M (POJ 1062)

    提出了一个错误的算法 以为能优化到只运行两次dij 然而我还是too naive 还是乖乖dij n 次吧... #include <iostream> #include <stri ...

  6. Linux内核源代码的结构(转)

    源代码所有在目录:/usr/src/linux (大部分linux发行版本中)  init 内核初始化代码  kernel 内核核心部分:进程.定时.程序执行.信号.模块...  mm 内存处理  a ...

  7. sqlite3编程使用简介

    sqlite3使用范围 SQLite不同于其他大部分的SQL数据库引擎,因为它的首要设计目标就是简单化: 1.易于管理 2.易于使用 3.易于嵌入其他大型程序 4.易于维护和配置  许多人喜欢SQLi ...

  8. PS要点

    1.通道 意味着我们同过不同的角度来看图像,可以得到不同的图像信息,PS是以灰度图像来表现这种信息的强弱. 我们能看到什么取决于我们的视角.任何灰度图像都可以按照不同的规则来构成彩色图像. 通道除了能 ...

  9. SQLServer三种自定义函数

    自定义函数"是我们平常的说法,而"用户定义的函数"是 SQL Server 中书面的说法. SQL Server 2000 允许用户创建自定义函数,自定义函数可以有返回值 ...

  10. 使用面向对象思想处理cookie

    实例:使用面向对象思想处理cookie如果读者对cookie 不熟悉,可以在第七章学习它的使用方法,虽然在那里创建了几个通用函数用于cookie 的处理,但这些函数彼此分离,没有体现出是一个整体.联想 ...