pptp服务器配置与管理 |
一、 pptpd的安装
环境:RedHat9 下载pptpd-1.1.3-rh9_20030409_1.i386.rpm并安装 rpm -ivh pptpd-1.1.3-rh9_20030409_1.i386.rpm 这里直接使用了pptpd-1.1.3的RH9安装包。 如果要使用更高版本的,需要升级相关kernel与ppp 如pptpd-1.3.1所需软件为: 二、配置与运行pptpd 配置pptpd只需要改以下三个文件 /etc/pptpd.conf #speed 115200 /etc/ppp/options.pptpd #debug /etc/ppp/chap-secrets # Secrets for authentication using CHAP 这里定义了用户帐号与密码,t1密码为123 IP为192.168.0.3 设置好三个文件后就可以运行pptpd pptpd 使用netstat -ln 可以看到 tcp 0 0 0.0.0.0:1723 0.0.0.0:* LISTEN 使用service pptpd status 可以看到 pptpd已经正常运行了。 如果服务器本地需要使用ppp,如ADSL等,这样也要调用了以上三个配置文件,这时可以把这三个文件放在别的目录,在运行pptpd时使用参数指定打三这些文件的目录,具体的可以看help 三、客户端登录 windows系统: 直接在网络与拔号联接中新建VPN联接,以上的配置是不加密的,所以不要选择要求数据加密。 linux系统: 安装pptp 下载pptp-linux-1.3.1.tar.gz tar zxvf pptp-linux-1.3.1.tar.gz cd pptp-linux-1.3.1 make;make install 安装完成! 配置pptp /etc/ppp/chap-secrets # Secrets for authentication using CHAP 登录pptpd pptp 服务器IP user 用户名 使用ifconfig可以看到ppp联接已经成功。 断开ppp联接使用以下命令。 killall pppd; killall pptp; rm -rf /var/run/pptp/ ip-up与ip-down 在ppp联接后系统会自动运行ip-up,如果需要联接后运行什么东西可以直接加入ip-up中就行了。 在ppp断开后会运行ip-down,同可如果要运行什么也可以直接加入。 四、多个PPTP VPN客户机通过LINUX网关连接VPN服务器 PPTP方式的VPN使用了GRE协议,这个协议跟TCP/UDP是同一级的协议。因为GRE协议没有端口的概念,LINUX不能像TCP/UDP那样IP伪装。所以,LINUX网关后面的pptp vpn客户机连接vpn时总会遇见这种那种的问题。 所以,当只有单个客户机通过linux网关连接VPN的时候,最简单的办法是用iptables把所有GRE协议的包转发给客户机。比如客户机的ip是192.168.0.2,iptables命令是 iptables -t nat -I PREROUTING -p gre -j DNAT –to-destination 192.168.0.2 上面的命令感觉很奇怪,当这个规则输入了,即使立刻删除,也依旧生效,一直过了好久才断掉。 当然,如果客户机连接的vpn ip地址互不相同,还可以根据源ip地址DNAT。但是,当多台机器要连接相同的pptp vpn服务器时,问题就出现了,简单的DNAT规则并不能生效,因为他们都是GRE协议。唯一能分辨的就只有GRE包里面的Class ID。这个ID在默认的linux防火墙上并没有得到支持。解决方法有两个 1,使用2.0版本以上的iptables,里面内置了ip_nat_gre等模块用于支持gre包的ip伪装。这个方案比较复杂,工程浩大,还要给内核打补丁。以后更新内核的时候也更加麻烦。 2,使用pptp proxy(http://www.mgix.com/pptpproxy/)。这是一个用户空间下的gre包转发工具。只要下载源码,编译,得到了pptpproxy。比如你的linux网关内网ip是192.168.0.254,vpn服务器是202.202.202.202,只要运行 pptpproxy -p 192.168.0.254,202.202.202.202 就可以了 这时,vpn客户机只要把192.168.0.254作为vpn服务器ip地址就可以了。 当然,让pptp监听在127.0.0.1,然后配合一些iptables转发规则,甚至可以做成一个透明pptpproxy代理。 pptpproxy还支持多vpn server代理。 |