centos6.5配置 pptpd 搭建VPN服务
一、检查:
1、检查系统内核是否支持MPPE补丁
modprobe ppp-compress-18 &&echo success
显示success说明系统支持MPPE补丁,如果不支持,需要先安装kernel-devel
yum install kernel-devel
2、检查系统是否开启TUN/TAP支持
cat /dev/net/tun
如果这条指令显示结果为下面的文本,则表明通过:
cat: /dev/net/tun: File descriptor in bad state
3、检查系统是否开启ppp支持
cat /dev/ppp
如果这条指令显示结果为下面的文本,则表明通过:
cat: /dev/ppp: No such device or address
上面三条必须同时满足,否则不能安装pptp vpn
二、安装:
系统环境:centos 6.5 x64 双网卡 外网IP:210.xxxxx 内网IP:172.16.7.10
安装 ppp 以及所需
yum -y install make libpcap iptables gcc-c++ logrotate tar cpio perl pam tcp_wrappers dkms kernel_ppp_mppe ppp
下载PPTPd,需对应系统的ppp版本,本系统的版本是ppp-2.4.5
Wget http://poptop.sourceforge.net/yum/stable/packages/pptpd-1.4.0-1.el6.`uname -m`
.rpm
rpm -Uvh pptpd-1.4.0-*
三、配置:
vim /etc/pptpd.conf
找到“locapip”和“remoteip”这两个配置项
localip 172.16.7.10 # 服务器IP
remoteip 172.16.7.11-15 (最大限制4个连接) #vpn客户端的ip段
配置DNS:
#vim /etc/ppp/options.pptpd
ms-dns 202.106.0.20
ms-dns 8.8.8.8
debug 开启pptpd日志,默认日志在/var/log/messages里
创建帐号:
编辑/etc/ppp/chap-secrets:
格式:“用户名“ 服务器名 “密码” 允许IP,多个账号就写多行,一行一个:
"hitman" * "fuckyou" *
四、网络配置:
开转发:
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
开防火墙:
iptables -t filter -A INPUT -p tcp -m multiport --dport 22,1723 -j ACCEPT;
iptables -A FORWARD -p tcp --syn -s 172.16.7.0/24 -j TCPMSS --set-mss 1356; #解决上网慢的问题,修改MTU值
iptables -t nat -A POSTROUTING -o eth1 -s 172.16.7.0/24 -j MASQUERADE; #地址伪装,使client内网能通
iptables -t nat -A POSTROUTING -o eth0 -s 172.16.7.0/24 -j SNAT --to-source 外网ip; #SNAT,使client能上网
启动:
service pptpd start
./iptables.sh
chkconfig pptpd on 开机启动
chkconfig iptables on
问题汇总:
如果出现你的vpn安装好拨号时候提示错误619则输入命令:
mknod /dev/ppp c 108 0
在安装完毕之后也出现了619,执行完毕上面命令后,不知道为什么没有生效,只有重启了vps,重启后拨号上网成功!
如果提示“Warning: a pptpd restart does not terminate existing
connections, so new connections may be assigned the same IP
address and cause unexpected results. Use restart-kill to
destroy existing connections during a restart.”错误信息,则执行一下命令:
service pptpd restart-kill
service pptpd start
解决pptp搭建的vpn代理上网很慢
用pptp搭建了linux平台的vpn服务器,拨入后访问内网ftp,下载文件极慢;用其作网关上网,除了baidu外,大部分网站访问速度极慢,几乎 无法访问。 解决: 在pptp所在的linux服务的iptables的*filter表中加入
-I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356
或:
/sbin/iptables -I FORWARD -p tcp –syn -i ppp+ -j TCPMSS –set-mss 1356 原因分析
=====在断开vpn链接的情况下:
在windowsXP下用ping -f -l XXXXXX 192.168.0.1一步一步测试(XXXXXXX为MTU大小,可以从1500开始,逐渐减小,知道可以ping通)
我们可以得到可以ping通的MTU最大为1426;
=====在连接vpn的前提下
在windowsXP下用ping -f -l XXXXXX 192.168.0.1一步一步测试(XXXXXXX为MTU大小,可以从1500开始,逐渐减小,知道可以ping通)
我们可以得到可以ping通的MTU最大为1372; 超过这个数则不能通,
====拨通vpn,在服务器上用netstat –i查看接口,得到
Iface MTU Met RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
eth0 1500 0 102528561 0 0 0 194391413 0 0 0 BRU
eth1 1500 0 519820535 954 11553 924 208798037 0 0 0 BRU
lo 16436 0 151062 0 0 0 151062 0 0 0 LRU
ppp0 1396 0 19 0 0 0 8 0 0 0 OPRU 可知ppp的最大mtu为1396,当然,对应的mss应为(mtu-20字节的IP头部+20字节的TCP 头部=)1356 【小知识1】计算机网络中的MSS:
MSS: Maximum Segment Size 最大分段大小
MSS最大传输大小的缩写,是TCP协议里面的一个概念。
MSS就是TCP数据包每次能够传输的最大数据分段。为了达到最佳的传输效能,TCP协议在建立连接的时候通常要协商双方的MSS值,这个值TCP协议在 实现的时候往往用MTU值代替(需要减去IP数据包包头的大小20Bytes和TCP数据段的包头20Bytes)所以往往MSS为1460。通讯双方会 根据双方提供的MSS值得最小值确定为这次连接的最大MSS值。
备注:
多ip服务器转发指定规则
iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -j SNAT –to-source 192.168.8.1
or
iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -j SNAT –to-source 服务器外网ip
如果iphone之类的设备能连上,访问网页或者youtube特别慢,需要做如下修改:
vim /etc/ppp/ip-up
增加一行
/sbin/ifconfig $1 mtu 1400
或者修改iptables规则
iptables -A FORWARD -p tcp –syn -s 192.168.8.0/24 -j TCPMSS –set-mss 1356
1356的值可能需要自己调整,调节到能保证网络正常使用情况下的最大值。
本文出自 “Fate” 博客,请务必保留此出处http://yyzll.blog.51cto.com/4283444/1654005
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。