Chinaunix首页 | 论坛 | 博客

  • 博客访问: 916106
  • 博文数量: 226
  • 博客积分: 10077
  • 博客等级: 上将
  • 技术积分: 2708
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-25 14:36
文章分类

全部博文(226)

文章存档

2010年(15)

2009年(82)

2008年(129)

我的朋友

分类: LINUX

2009-12-30 14:40:36

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服务器本机地址)

奇怪的是,我把上面红色的两句注释掉,仍然能正常拔号,不知道是怎么回事.
阅读(1864) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~