链条传动

砥砺前行,不忘初心!

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

公司生产环境使用的是阿里云主机,采用的是两台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-238,192.168.0.245  
修改成  
localip 192.168.1.10
remoteip 192.168.1.234-238,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 123456  *         *表示所有IP

test  pptpd  123456 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=0  
改成net.ipv4.ip_forward=1  
将net.ipv4.tcp_syncookies= 1  
改成 #net.ipv4.tcp_syncookies= 1  

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

[root@kuro ~]#sysctl -p  

 


添加iptables转发规则  

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -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-128

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

 

 

 

posted on 2016-07-12 11:57  链条君  阅读(845)  评论(0编辑  收藏  举报