[整理 :张子萌 如有转载请保留整理人信息]
测试系统为redhat linux
搭建pptpd VPN服务需要内核支持mppe,内核为2.6以后的内核支持该选项。
查看内核命名# uname -r。注意:如果要远程安装调试,首先将防火墙设置为
不随操作系统启动。
1. 需要安装ppp和pptp服务,本文为使用yum安装。如果希望手动安装请到
http://poptop.sourceforge.net下载pptp源码包。
#yum -y install ppp
#yum -y install pptpd
查看内核是否加载 mppe 模块
# lsmod | grep ppp
如下图:
说明pptp 所又模块加载成功
2. 修改配置文件
安装完成后修改配置文件
2.1 配置pptpd.conf文件
#vi /etc/pptpd.conf
option /etc/ppp/options.pptpd # PPP使用的配置文件位置
stimeout 10 # 控制pptp连接超时,单位为秒
localip 192.168.0.1 # 服务器VPN虚拟接口将分配的IP地址
remoteip 192.168.0.234-238,192.168.0.245 # 客户端VPN连接成功后将分配的IP或IP地址范围。
说明localip和remoteip 不需要必须在同一网段,网络可以连通网段均可。
2.2 配置options.pptpd文件,此处只是对配置文件中部分配置做说明,如无特殊要求可以使用默认配置。
# vi /etc/ppp/options.pptpd
lock
auth # 启用身份验证
name cc3 # 相当于身份验证时的域,这里填上VPN服务器的名字
refuse-pap # 拒绝pap身份验证
refuse-chap # 拒绝chap身份验证
refuse-mschap # 拒绝mschap身份验证
refuse-eap # 拒绝eap身份验证
require-mschap-v2 #使用mschap-v2身份验证,使用windows可以直接建客户端
require-mppe-128 # 要求128位MPPE加密
nomppe-stateful # 无状态,有状态有mppe-stateful
ms-dns 202.106.46.151 # VPN客户端连接成功后将被分配的DNS参数,如只是ip访问可以不用此项
ms-wins 64.32.16.8 # VPN客户端连接成功后将被分配的WINS参数
proxyarp # 启用ARP代理
2.3 创建用户名和密码,可以再文件中直接编写,也可以使用命令创建。推荐使用命令创建。
2.3.1 创建用户
账户为vpntest 密码为123
#vpnuser add vpntest 123
2.3.2 删除用户:
删除 vpntest账户
#vpnuser del vpntest
2.3.3 查看当前用户表
# vpnuser show
2.3.4 直接文件编辑修改账户
#vi /etc/ppp/chap-secrets
格式如下
test pptpd 123 *
注:末尾“*”为分配给vpn客户端ip池的地址,也就是上面设置的remoteip部分。如需要分配指定IP,可以直接打入IP地址。
3. 启动pptpd服务
#service pptpd start
或
# /etc/init.d/pptpd start
pptpd参数有start|stop|restart|restart-kill|status,分别为启动、停止、重启、直接杀进程后重启、查看进程运行状态。
要查看连入vpn服务器的客户端信息,可以使用route命令,Use Iface列为ppp的为连入vpn服务器的客户信息。也可以使用ifconfig查看。
到此linux pptp vpn配置完成,可以使用windows来连接看看是否正常。
4. 安全防范
VPN使用GRE协议用的47端口 也需要开放 1723,如果使用防火墙需要添加如下配置。
#i ptables -A INPUT -p gre -j ACCEPT
如果开启selinux 还需要设置
#setsebool pppd_disable_trans 1
#setsebool pptp_disable_trans 1
如果客户端想用vpn server来上网的话,需要打开vpn server上的ip_forward
# echo “1” > /proc/sys/net/ipv4/ip_forward
永久更改:
# vi /etc/sysctl.conf
net.ipv4.ip_forward = 0 将 0 改为 1
保存后运行# sysctl –p 是参数生效。
设置ip伪装
#iptables -t nat -A POSTROUTING -o eth0 -j SNAT –to-source XXX.XXX.XXX.XXX (vpn 服务器公网ip)
#iptables -t nat -A FORWARD -o eth0 -j ACCEPT
如果还想访问vpn server所在的局域网,还需要在vpn server上添加路由
* 使用route 命令配置路由表 */
//添加到主机路由
# route add –host 192.168.168.110 dev eth0:1
# route add –host 192.168.168.119 gw 192.168.168.1
//添加到网络的路由
# route add –net IP netmask MASK eth0
# route add –net IP netmask MASK gw IP
# route add –net IP/24 eth1
//添加默认网关
# route add default gw IP
//删除路由
# route del –host 192.168.168.110 dev eth0
5. 常见问题处理
a) MGR: Maximum of 10 connections reduced to 3, not enough IP addresses given
说明配置文件中最大连接为10,但是只分配了3个地址。通过/etc/pptpd.conf配置文件修改
b)连接vpn后经常断线
pppd[18052]: Terminating on signal 15
pppd[18052]: Modem hangup
pppd[18052]: Connect time 1.0 minutes.
pppd[18052]: Sent 12143 bytes, received 4968 bytes.
pppd[18052]: MPPE disabled
pppd[18052]: Connection terminated.
pppd[18052]: Exit.
查看日志发现以上信息:
“Connect time 1.0 minutes.”说明用户连接vpn服务器后只连接了1分钟就断开了。
“Sent 12143 bytes, received 4968 bytes.”说明客户在连接后与vpn服务器间的传输量也不大。如
果流量过大,需要注意检查是否存在攻击。
“Terminating on signal 15”此条信息比较主要,说明vpn程序是被系统其它程序发出停止命令后强行
中断连接的。具体信号可以查看http://simon-zzm.blog.163.com/blog/static/8880952220103110240877/