CentOS 5搭建PPTP VPN服务器手记

--------------------------------------------------------------------------------
服务端配置部分
--------------------------------------------------------------------------------

天煞的CentOS,源里面居然没有pptpd,还要自己下载编译
奶奶的
先装ppp和iptables(如果没有装的话)
确保内核有mppe

[bash]modprobe ppp-compress-18 && echo ok [/bash]

[bash]yum install -y ppp iptables[/bash]

看他的ppp版本是2.4.4据说只能通pptpd 1.3.4
截止到我今天部署的时候,官方没有rpm包放出来
自己编译了啊

[bash]wget http://downloads.sourceforge.net/project/poptop/pptpd/pptpd-1.3.4/pptpd-1.3.4.tar.gz?use_mirror=ncu
rpmbuild -ta pptpd-1.3.4.tar.gz
cd /usr/src/redhat/RPMS/i386/
rpm -ivh pptpd-1.3.4-1.i386.rpm
[/bash]

可以到我这里下载这个rpm(太晚了,下次放出来)
然后开始配置,这里写下我的配置文件

[bash]#cat /etc/ppp/options.pptpd|grep -v ^#|sed /^$/d
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 8.8.8.8
#cat /etc/pptpd.conf|grep -v ^#|sed /^$/d
option /etc/ppp/options.pptpd
logwtmp
localip 192.168.2.1
remoteip 192.168.2.11-15
[/bash]

插一句话,在后面我遇到了一个问题,就是拨号619错误
查资料发现是logwtmp选项的问题,注释即可

最后仔细查看
cat /var/log/messages |grep logwtmp
发现了问题
Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is 2.4.4
原因如下
This error is fatal and pppd stops. It was caused by you building pptpd
without changing plugins/patchlevel.h to match the version of pppd on
your system. Edit the file and recompile. Or use a packaged pptpd
where this has already been done for you.
see http://old.nabble.com/error-619-td13264829.html
彻底解决办法,重新编译pptpd,修改源代码的中版本号信息
cd pptpd-1.3.4/plugins
nano patchlevel.h
修改 2.4.3为2.3.4
然后重新make
最后 cp pptpd-logwtmp.so /usr/lib/pptpd/pptpd-logwtmp.so
重启服务器即可

然后把用户名和密码写入/etc/ppp/chap-secrets
里面即可

chap-secrets文件示例

[bash]cat /etc/ppp/chap-secrets
# Secrets for authentication using CHAP
# client server secret IP addresses
####### redhat-config-network will overwrite this part!!! (begin) ##########
####### redhat-config-network will overwrite this part!!! (end) ############
ihipop pptpd ihipopPASSwords *
[/bash]

对以关系

用户名 服务名 用户密码 分配的虚拟IP(*表示任意)

如果服务名字段使用*,则表示这个用户适合所有服务的认证。比如l2tp Over IPSec等。
--------------------------------------------------------------------------------

网络配置部分

--------------------------------------------------------------------------------

清除所有的NAT规则先,mangle表也可以清空先

[bash]iptables -t nat -F
iptables -t mangle -F
[/bash]

如果你是在远程操作,千万记得不要执行iptables -F,为什么你自己想
然后

[bash]nano /etc/sysctl.conf
net.ipv4.ip_forward=1
#然后保存退出,执行使得生效
sysctl -p[/bash]

如果只是
1) #echo 1 > /proc/sys/net/ipv4/ip_forward
或者
2) #sysctl -w net.ipv4.ip_forward=1
都只是零时改变,重启系统后就没了

八卦下关于sysctl
命令格式:
sysctl [-n] [-e] -w variable=value
sysctl [-n] [-e] -p (default /etc/sysctl.conf)
sysctl [-n] [-e] -a
常用参数的意义:
-w 临时改变某个指定参数的值,如
sysctl -w net.ipv4.ip_forward=1
-a 显示所有的系统参数
-p 从指定的文件加载系统参数,如不指定即从/etc/sysctl.conf中加载

已经开启了系统的路由功能,下面就是配置防火墙了

[bash]iptables -A INPUT -p tcp –dport 1723 -j ACCEPT
iptables -A INPUT -p tcp –dport 47 -j ACCEPT
iptables -A INPUT -p gre -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#如果是要求再配置的严格一点,可以配置只允许虚拟IP地址进行nat转发
iptables -t nat -A POSTROUTING -s 192.168.8.0/24 -o eth0 -j MASQUERADE [/bash]

如果是CentOS 只做这样的默认策略是不行的,因为默认他没有开放DNS查询端口,需要手动开开UDP 53端口
我就是这样的,pptp连接成功,ping 8.8.8.8 一点问题也没有,直接访问
http://202.12.29.205/templates/yourip.html
显示的也是服务器IP,但就是无法解析域名
需要加一句话

[bash]iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT[/bash]

嗯,基本上就是这么多了

Author Info :
  • From:CentOS 5搭建PPTP VPN服务器手记
  • URL:https://blog.ihipop.com/2010/06/1265.html
  • Please Reserve This Link,Thanks!
  • 《CentOS 5搭建PPTP VPN服务器手记》上有4条评论

    1. 我看了你的设置,但是我拨号上来的用户好像还是不能解析,请教一下还有什么可能性? 我的qq 323207534

    发表回复

    您的电子邮箱地址不会被公开。 必填项已用 * 标注