1、确认核心版本
#uname -r
2.6.9-34.EL
版本低于2.6.15需要打补丁
从
上下载dkms-2.0.10-1.noarch.rpm
kernel_ppp_mppe-1.0.2-3dkms.noarch.rpm 安装内核MPPE(Microsoft
Point to Point Encryption,微软点对点加密)
pptpd-1.3.3-1.rhel4.i386.rpm
ppp-2.4.3-5.rhel4.i386.rpm
安装PPP(Point-to-Point
Protocol,点到点协议)
pptp-1.7.0-1.i386.rpm
安装它们
用以下命令检查内核MPPE补丁是否安装成功:
#modprobe ppp-compress-18
用以下命令检查PPP是否支持MPPE:
#strings '/usr/sbin/pppd' |grep -i mppe | wc --lines
如果以上命令输出为“0”则表示不支持;输出为“30”或更大的数字就表示支持。
修改配置文件
1.修改modules.conf文件
编辑/etc/modules.conf配置文件,加入如下内容:
alias char-major-108 ppp_generic
alias tty-ldisc-3 ppp_async
alias tty-ldisc-14 ppp_synctty
alias ppp-compress-18 ppp_mppe
alias ppp-compress-21 bsd_comp
alias ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
alias net-pf-47 ip_gre
2.修改pptpd.conf文件
编辑/etc/pptpd.conf配置文件,添加如下内容,确定本地VPN服务器的IP地址和客户端登录后分配的IP地址范围。
ppp /usr/sbin/pppd
debug
option /etc/ppp/options.pptpd
localip 192.168.0.254 #本地VPN服务器的IP
remoteip 192.168.0.1-253 #客户端被分配的IP范围
3.修改options.pptpd文件
编辑/etc/ppp/options.pptpd配置文件,替换成如下内容:
auth
lock
debug
proxyarp
lock
name rh9vpn #VPN服务器的名字
multilink
refuse-pap
refuse-chap
refuse-mschap
refuse-eap
refuse-mschap-v2
require-mppe
ms-wins 192.168.1.2
#把想要在网络邻居中看到的机器的IP填写到这里
ms-dns 192.168.1.2 #DNS服务器地址
dump
logfile /var/log/pptpd.log #日志存放的路径
4.修改chap-secrets文件
编辑/etc/ppp/chap-secrets配置文件,添加如下内容:
# client server secret IP addresses
"abc1" * "test" *
上面第二行代码的四项内容分别对应第一行中的四项。“abc1”是Client端的VPN用户名;“server”对应的是VPN服务器的名字,该名字必
须和/etc/ppp/options.pptpd文件中指明的一样,或者设置成“*”号来表示自动识别服务器;“secret”对应的是登录密
码;“IP
addresses”对应的是可以拨入的客户端IP地址,如果不需要做特别限制,可以将其设置为“*”号。
5.设置IP伪装转发
只有设置了IP伪装转发,通过VPN连接上来的远程计算机才能互相ping通,实现像局域网那样的共享。用下面的命令进行设置:
#echo 1 > /proc/sys/net/ipv4/ip_forward
可以将这条命令放到文件/etc/rc.d/rc.local里面,以实现每次开机时自动运行该命令。
6.打开防火墙端口
将Linux服务器的1723端口和47端口打开,并打开GRE协议。
#/sbin/iptables -A INPUT -p tcp --dport 1723 -j ACCEPT
#/sbin/iptables -A INPUT -p tcp --dport 47 -j ACCEPT
#/sbin/iptables -A INPUT -p gre -j ACCEPT
到这里Linux服务器的设置就完成了,下面将利用Windows客户端进行测试。
如果要求外网机器通过vpn连接其它网段的机器,还要用iptable做NAT转发
在实际应用中,我的防火墙是这样设置的:
#!/bin/sh
# load any special modules
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
# delete any existing chains
iptables -F
iptables -F -t nat
iptables -X
iptables -Z
# turn on ip forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -P INPUT DROP
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
iptables -t nat -P OUTPUT ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j
ACCEPT
iptables -A INPUT -i eth0 -p
tcp --dport
22 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p
tcp --dport
21 -m state --state
NEW,ESTABLISHED,RELATED -j ACCEPT
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 -t nat -A
POSTROUTING -s 192.168.0.0/24 -j
SNAT --to-source 192.168.1.2#(VPN服务器本机地址)
奇怪的是,我把上面红色的两句注释掉,仍然能正常拔号,不知道是怎么回事.
阅读(1860) | 评论(0) | 转发(0) |