当前位置导航:炫浪网>>网络学院>>操作系统>>Linux教程

MPPE加密VPN服务器详解

环境:
PIII450/128M/10G/G200
SLACKWARE 10.0 (核心2.4.26)
默认安装
1.首先下载需要的文件(下载到/root目录下)

PHP 代码: wget ftp://slackware.no/linux/kernel/v2.4/linux-2.4.26.tar.bz2
wget http:
//www.polbox.com/h/hs001/linux-2.4.26-mppe-mppc-1.0.patch.gz
wget http:
//linuxpackages.slackwaresupport.com/Slackware-10.0/Daemon/pptpd/pptpd-1.1.4-i386-1ah.tgz
然后补丁核心:
PHP 代码: cd /root
tar xfvj linux
-2.4.26.tar.
bz2
gunzip linux
-2.4.26-mppe-mppc-1.0.patch.
gz

mv linux
-2.4.26 /usr/src/linux-2.4.26-
VPN
cd
/usr/src
/
ln -s linux-2.4.26-VPN/
linux

cd
/usr/src/
linux
zcat
/root/linux-2.4.26-mppe-mppc-1.0.patch.gz |patch -
p1
cp
/boot/config-ide-2.4.26 .
config
make oldconfig
当出现MPPE选项时选择m,编译成内核模块,接着编译内核:
PHP 代码: make dep
make bzImage
make modules
(很长时间,我好象用了40分钟
)
make modules_install

cp arch
/i386/boot/bzImage /boot/bzImage-2.4.26-
VPN
cp System
.map /boot/System.map-vpn-
2.4.26
cp
.config /boot/config-vpn-
2.4.26

cd
/
boot
ln
-sf config-vpn-
2.4.26 config
ln
-sf System.map-vpn-2.4.26 System.
map
然后更改/root/lilo.conf文件配置
把 image = /boot/vmlinuz 一句
改为
PHP 代码: image = /boot/bzImage-2.4.26-VPN
再打开/etc/rc.d/rc.modules
在最后一行增加
PHP 代码: /sbin/modprobe ppp_mppe_mppc

2.安装pptpd:

PHP 代码: cd /root
installpkg pptpd
-1.1.4-i386-1ah.
tgz

编辑 /etc/pptpd.conf
内容:

PHP 代码: debug
option  
/etc/ppp/options.
pptpd
localip 10.87.200.1
remoteip 10.87.200.2
-
10
pidfile
/var/run/pptpd.
pid


 

编辑 /etc/ppp/options.pptpd
内容:

PHP 代码: mtu 1450 #(发送包大小;据说很重要)
mru 1450
#(接收包大小;单位:bytes)
-chap
#(不使用CHAP验证方式)
-mschap
#(不使用MSCHAP验证方式)
+mschap-v2
#(使用mschap-v2验证方式)
lcp-echo-
failure 30
lcp
-echo-
interval 5
ipcp
-accept-
local
ipcp
-accept-
remote
proxyarp
#(Create proxy ARP entry)
lock
#(锁定PTY设备文件,没有研究出到底什么含义,我看WEBMIN中这样翻译的.)
auth
#(是否需要使用/etc/ppp/chap-secrets文件来验证,我这里需要验证)
name pptpd  
#(PPTPD服务器名称,和下边要设置的chap-secrets 对应)
ms-dns 202.102.227.68
#(拨入VPN后的的DNS地址)
ms-dns 10.87.13.86
#(可以设置两个)
#ms-wins *.*.*.* #(过时了,我没有设置)
#netmask 255.255.255.0 #(这个选项是其他文章中抄来的,不管怎样设置子网都是#255.255.255.255.ppp就是点对点协议,所以子网必须是255.255.255.255)

require-mppe
#(使用MPPE加密)
require-chap
#(使用验证)
require-mppe-40
#(使用 40-bit MPPE 加密)
require-mppe-128
#(使用 128-bit MPPE 加密)
编辑/etc/ppp/chap-secrets
内容:
PHP 代码: # Secrets for authentication using CHAP
# client        server          secret          IP addresses
# example_user  *               <password>      *
recoilest  pptpd  123456  
"*"
#"recoilest"是拨入VPN用户名称; "pptpd" 是服务器名称; "123456"是拨入VPN密码;
#如果允许VPN自动分配远程接入IP地址,那么可以像上边一样设置为"*";
#如果需要指定远程IP地址的话可以这样:
#recoilest  pptpd  123456  10.87.200.6
这样设置就完成了,通过
PHP 代码: sh /etc/rc.d/rc.pptpd start

可以启动PPTPD服务,启动后netstat -a可以看到
PHP 代码: tcp        0      0 *:pptp                  *:*                     LISTEN
说明服务已经启动了.
如果需要服务器启动时启动PPTPD服务可以在rc.local中加入:
PHP 代码: sh /etc/rc.d/rc.pptpd start
在使用过程中,我发现使用 sh /etc/rc.d/rc.pptpd stop 不是很有效,不如killall pptpd

3.通过VPN转发数据:

我的iptables设置:
PHP 代码: modprobe ip_tables
modprobe iptable_filter
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp

iptables
-t nat -A POSTROUTING -o eth0 -s 10.87.200.0/24 -
j MASQUERADE

iptables
-A FORWARD -p udp -s 10.87.200.0/24 --dport 53 -
j ACCEPT
iptables
-A FORWARD -p tcp -s 10.87.200.0/24 --dport 1723 -
j ACCEPT
iptables
-A FORWARD -p gre -s 10.87.200.0/24 -
j ACCEPT
iptables
-A FORWARD -m state --state ESTABLISHED,RELATED -
j ACCEPT

4.通过XP拨入VPN

开始--〉设置--〉网络连接--〉创建一个新的连接,下一步--〉连接到我的工作场所的网络--〉虚拟专用网络连接--〉名子--〉初始连接-- 〉主机或者IP地址--〉完成

使用帐户: recoilest 密码:123456 拨入.



5.拨入后网络访问的问题

重要提示1以上设置只能默认通过ETH0来转发数据
如果需要访问其他网络资源,需要增加静态路由表(在服务器端,根据环境设置)

PHP 代码: route add -net 10.87.1.0/24 gw 10.87.2.254

重要提示2如果你拨入以后不能访问本地网络,请手动更改路由表(在工作站端,根据环境)
或者把 VPN连接属性中---IP设置-----高级----在远程网络上使用默认网关 选项取消对钩

上一页  [1] [2] 

相关内容
赞助商链接