Linux 下PPTP ××× 服务器搭建,系统为RHEL 5.3,内核2.6.18,已支持mppe,mppc(低版本内核可能要重新编译加入支持),并且系统已安装好ppp软包
# rpm -qa | grep ppp
ppp-2.4.4-2.el5
rp-pppoe-3.5-32.1
下载最新的pptpd源码包 http://www.poptop.org/ 这里下的版本是1.3.4,解压安装
# tar -zxf pptpd-1.3.4.tar.gz
# cd pptpd-1.3.4
# ./configure –prefix=/usr/local/pptpd
# make && make install
将源码包中samples目录下的几个示例配置文件放到/usr/local/pptpd/etc下
# mkdir /usr/local/pptpd/etc && cp samples/* /usr/local/pptpd/etc
可以看下有哪些配置文件
# ls -1 /usr/local/pptpd/etc/
chap-secrets –>安全选项,这个其实用不到,只是告诉你在ppp中的用户\密码格式
options.pptpd –>配置选项,如***客户端的dns等
pptpd.conf –>这个是pptpd的主要配置文件
基本的pptp-***,要改动的配置并不多,并且一部分选项可以在pptpd程序运行时指定,pptpd默认的配置文件是/etc/pptpd.conf,实际运用中,应尽量避免程序运行时指定参数,可做个软链接
# ln -s /usr/local/pptpd/etc/pptpd.conf /etc/pptpd.conf
将pptpd.conf中options 值改成/usr/local/pptpd/etc/options.pptpd,sed去掉空行和注释,配置文件如下:
# sed -e ‘/^#/d;/^$/d’ /usr/local/pptpd/etc/pptpd.conf
option /usr/local/pptpd/etc/options.pptpd –>选项配置文件
debug –>debug,运行与错误信息写入系统日志
logwtmp –>将*** client登陆写入wtmp信息
localip 192.168.66.1 –>本机×××服务IP,可任意指定
remoteip 192.168.66.2-3 –>可分配给*** client的IP
强烈建议打开debug选项,对排错很有帮助,另外为避免冲突,localip、remoteip最好不要与服务器当前内网或经常拨入的客户端内网地址在同一网段
在options.pptpd中加入ms-dns就可以了,
# sed -e ‘/^#/d;/^$/d’ /usr/local/pptpd/etc/options.pptpd
name pptpd –> 服务名,可指定,但要与/etc/ppp/chap-secrets文件中的server列一致
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
debug
lock
nobsdcomp
novj
novjccomp
nologfd
ms-dns 192.168.61.2 –> 首选DNS
ms-dns 61.139.2.69 –> 辅DNS
配置已经完成,最后添加***用户,vi /etc/ppp/chap-secrets 添加一行,第一个字段是用户名,第二个是服务名,与options.pptpd中的name项一致,第三个是密码,第四个是分配给该拨入用户的IP,"*"或者空间表示任意从remoteip列表中按顺序选取一个
***user01 pptpd 123456 *
启动pptpd,/usr/local/pptpd/sbin/pptpd
检查有无相关进程,ps aux | grep pptpd,检查1723端口是否在监听 netstat -antl | grep 1723
这里有点问题,日志文件显示找不到一个库文件/usr/lib/pptpd/pptpd-logwtmp.so,
Dec 14 07:19:27 localhost pppd[20519]: /usr/lib/pptpd/pptpd-logwtmp.so: cannot open shared object file: No such file or directory
Dec 14 07:19:27 localhost pppd[20519]: Couldn’t load plugin /usr/lib/pptpd/pptpd-logwtmp.so
Dec 14 07:19:27 localhost pptpd[20518]: GRE: read(fd=6,buffer=8058f40,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by u
nexpected termination of pppd, check option syntax and pppd logs
编译时应该已经生成了这个文件,在/usr/local/pptpd/lib/下面,做个软链接到/usr/lib/pptpd/pptpd-logwtmp.so
ln -s /usr/local/pptpd/lib/pptpd-logwtmp.so /usr/lib/pptpd/pptpd-logwtmp.so
再运行,还是不行,日志显示版本不对
Dec 14 07:21:17 localhost pppd[20537]: Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is 2.4.4
Dec 14 07:21:17 localhost pptpd[20536]: GRE: read(fd=6,buffer=8058f40,len=8196) from PTY failed: status = -1 error = Input/output error, usually caused by u
nexpected termination of pppd, check option syntax and pppd logs
Dec 14 07:21:17 localhost pptpd[20536]: CTRL: PTY read or GRE write failed (pty,gre)=(6,7)
修改下源文件版本信息,重新编译生成pptpd-logwtmp.so并替换现有的,切换到源码包目录,pptpd-logwtmp.so源文件在源码包的plugins目录下,将patchlevel.h中的#define VERSION "2.4.3" 改成 #define VERSION "2.4.4"
# cd plugins
# sed -e ’s/2\.4\.3/2\.4\.4/’ patchlevel.h
# make
make后,目录下会生成pptpd-logwtmp.so,用这个文件替换/usr/local/pptpd/lib/pptpd-logwtmp.so
再运行/usr/local/pptpd/sbin/pptpd,成功
开启内核包转发功能及配置iptables,以支持***客户端通过服务器上网、访问服务器内网等
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t filter -P FORWARD -j DROP
iptables -t filter -A -s 192.168.66.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.66.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.66.0/24 -j MASQUERADE
当然,结合iptables还可以让*** 客户端提供web、ftp服务,看你的考虑了.附上一段***客户端提供ftp服务的iptables配置,当然还要载入iptables用于ftp连接跟踪、nat后的ftp服务的模块,ip_conntrack_ftp、ip_nat_ftp, 不然自己配置很是麻烦,client_ip 为提供服务的***客户端ip
iptables -t nat -A PREROUTING -p tcp -m state –state NEW –dport 21 -j DNAT –to client_ip
iptables -t filter -A FORWARD -p tcp -m state –state NEW -d client_ip –dport 21 -j ACCEPT
iptables -t filter -A FORWARD -m state –state ESTABLISHED,RELATED -j ACCEPT
-----------------iptables ------------
iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -j SNAT --to 119.128.75.195
转载于:https://blog.51cto.com/chinawl/689921