***服务大家都知道,虚拟专用网络,今天我们就来说说怎么用linux搭建pptp *** 说实话,我这也算是第一次照着命令敲然后成功了的,最后才搞明白怎么回事,特贡献出来给大家,希望大家共同进步
系统环境: 2.6.18-92.el5
2.6.18 内核已经集成了 MPPE 和高版本的 ppp ,可以跳过安装 MPPE 和 ppp 。直接安装 PPTP 否则请编译内核
用yum安装先决条件
yum -y install gcc gcc-c++ autoconf libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel zlib zlib-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel libidn libidn-devel openssl openssl-devel openldap openldap-devel nss_ldap openldap-clients openldap-servers
安装pptpd
① 编译安装方法 下载 pptpd 源代码:wget http://www.hnisp.net/attachment/pptpd-1.3.4.tar.gz
一、编译安装:
注意:可能需要 libcap、libcap-devel ncurses-devel RPM 包支持,如果没有请安装 libcap、libcap-devel RPM 包!
#./configure -prefix=/app/pptpd -enable-bcrelay -with-libwrap
#make
#make install
②:RPM包安装方法:
yum install -y ppp iptables
wget http://www.hnisp.net/attachment/pptpd-1.3.4-1.rhel5.1.i386.rpm
rpm -ivh pptpd-1.3.4-1.rhel5.1.i386.rpm
二、配置 PPTP
编译安装完成后,首先需要手工建立一些目录以及复制原始的 pptpd 配置文件:
#mkdir /app/pptpd/etc
#cp samples/pptpd.conf /app/pptpd/etc/
#cp samples/options.pptpd /app/pptpd/etc/
上面cp的两个文件是 pptpd 的两个配置文件。
pptpd.conf 是 pptpd 的基本配置文件;
options.pptpd 是 pptpd 的扩展功能属性配置文件。
三.修改配置文件
1、 对 pptpd.conf 进行设置:
# vi /app/pptpd/etc/pptpd.conf
以下是我的配置文件:
option /app/pptpd/etc/options.pptpd
logwtmp
debug
localip 192.168.1.1
remoteip 192.168.1.1-200
说明:
option /app/pptpd/etc/options.pptpd
指定 pptpd 扩展属性配置文件 options.pptpd 的位置
debug
开启调试模式,有关 pptpd 的信息和错误都会记录在 /var/logs/message 中,方便排错和调试
stimeout 30
设置客户端连接 pptpd server 时的最长连接等待时间(连接超时时间),30 秒
localip 192.168.1.1
pptpd server 所在服务器的 IP 地址,可以设置为服务器上绑定的任意一个 IP 地址
remoteip 192.168.1.1-200
设置客户端连接到 pptpd server 后可供分配的 IP 地址范围(192.168.1.1- 192.168.1.200),也可以这样设置:192.168.1.188,192.168.1.189,192.168.1.188-238效果是一样的
2、 对 options.pptpd 进行配置:
# vi /app/pptpd/etc/options.pptpd
以下是我的配置文件:
name pptpd
refuse-pap
refuse-chap
refuse-mschap
require-mschap-v2
require-mppe-128
proxyarp
lock
nobsdcomp
novj
novjccomp
nologfd
idle 2592000
ms-dns 8.8.8.8
ms-dns 8.8.4.4
说明:
name ***-Server pptpd server 的名称。
refuse-pap 拒绝 pap 身份验证模式。
refuse-chap 拒绝 chap 身份验证模式
refuse-mschap 拒绝 mschap 身份验证模式。
ms-dns 202.96.209.5
ms-dns 202.96.209.133p pp 为 Windows 客户端提供 DNS 服务器 IP 地址,第一个 ms-dns 为 DNS Master,第二个为 DNS Slave。
proxyarp 建立 ARP 代理键值。
debug 开启调试模式,相关信息同样记录在 /var/logs/message 中。
lock 锁定客户端 PTY 设备文件。
nobsdcomp 禁用 BSD 压缩模式。
novj
novjccomp 禁用 Van Jacobson 压缩模式。
nologfd 禁止将错误信息记录到标准错误输出设备(stderr)
OK,配置好上面的两个文件后,开始添加 pptpd server 连接帐户。
四.添加帐户
pptpd server 连接帐户控制文件位于:/etc/ppp/chap-secrets
vi /etc/ppp/chap-secrets 配置文件,添加如下内容:
# client server secret IP addresses
"name" pptpd "pw123456" *
上面第二行代码的四项内容分别对应第一行中的四项。
"client" 是Client端的***用户名
"server"对应的是***服务器的名字,该名字必须和/etc/ppp/options.pptpd文件中指明的一样,或者设置成"*"号来表示自动识别服务器;
"secret"对应的是登录密码
"IP addresses"对应的是可以拨入的客户端IP地址,如果不需要做特别限制,可以将其设置为“*”号.
五.设置IP伪装转发
配置文件/etc/sysctl.conf
vi /etc/sysctl.conf
修改以下内容:
net.ipv4.ip_forward = 1
保存、退出后执行:
/sbin/sysctl -p
六.启动 pptpd server
#/app/pptpd/sbin/pptpd -c /app/pptpd/etc/pptpd.conf -o /app/pptpd/etc/options.pptpd
检查 pptpd server 是否启动成功:
# netstat -ntlp|grep 1723
如果看到有进程 tcp 1723 端口监听就说明 pptpd server 已经启动成功了!
# tail -f /var/log/messages
/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 192.168.1.0/24 -j MASQUERADE //NAT转发代理
配置iptables
/sbin/iptables -F FORWARD
/sbin/iptables -A FORWARD -p udp --dport 53 -j ACCEPT
/sbin/iptables -A FORWARD -p tcp --dport 1723 -j ACCEPT //允许***的服务端口
/sbin/iptables -A FORWARD -p gre -j ACCEPT
/sbin/iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/etc/rc.d/init.d/iptables save
加入自启动: /etc/rc.d/rc.local
chkconfig pptpd on chkconfig iptables on
七.测试连接
在 Windows XP/2003 中新建一个 *** 连接,填写相应的 pptpd server IP 地址、用户名、密码进行连接测试。
附加:解决问题的根本
查看/var/log/message发现报错
/usr/lib/pptpd/pptpd-logwtmp.so: cannot open shared object file: No such file or directory
#mkdir /usr/lib/pptpd/ -p
#ln -s /app/pptpd/lib/pptpd/pptpd-logwtmp.so /usr/lib/pptpd/
再次加载库文件时报版本错误
Plugin /usr/lib/pptpd/pptpd-logwtmp.so is for pppd version 2.4.3, this is 2.4.4
Solution
修改下源文件版本信息,重新编译生成pptpd-logwtmp.so并替换现有的
切换到源码包目录,pptpd-logwtmp.so源文件在源码包的plugins目录下
将patchlevel.h中的#define VERSION "2.4.3" 改成 #define VERSION "2.4.4"
#cd pptpd-1.3.4/plugins/ (安装源文件夹下)
#cp patchlevel.h patchlevel.h.bak
#mv pptpd-logwtmp.so pptpd-logwtmp.so.bak
#sed -i 's/2\.4\.3/2\.4\.4/' patchlevel.h
#make
#mkdir /usr/lib/pptpd/
#cp pptpd-logwtmp.so /app/pptpd/lib/pptpd/pptpd-logwtmp.so
启动 pptpd server后
# tail -f /var/log/messages
Plugin /usr/lib/pptpd/pptpd-logwtmp.so loaded. (提示加载成功)
[root@localhost plugins]# cat patchlevel.h
/* upstream patchlevel.h,v 1.60 2004/01/13 04:46:52 paulus Exp */
/* $Id: patchlevel.h,v 1.4 2005/02/24 01:25:34 quozl Exp $ */
#define VERSION "2.4.4"
#define DATE "13 Jan 2004"
再次连接,即可正常连接PPTP *** Server。
linux下配置 PPTP *** 公网***②
安装方法前面我都介绍过了,具体可以看前面的文章。 现在我们需要注意以下几点就可以配置公网***了。
①:注意pptpd.conf里面的配置
option /app/pptpd/etc/options.pptpd
logwtmp
debug
localip 192.168.1.1
remoteip 192.168.1.1-200
需要把localip 192.168.1.1改为公网IP
然后在remoteip 下面添加一行
listen 公网IP
然后添加NAT映射:
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source
公网IP
保存配置
/etc/rc.d/init.d/iptables save
重启pptpd服务生效。