pptp 配置文件简析

搞了几年的IPsec,不太了解SSLPPTPL2TP也有点说不过去,以前也很想知道它们之间的真正的区别,各种原因和借口没看成,现在发现我又有了很强的求知欲,并很想知道它们的真正区别和原理,所以挤挤海绵中的时间也当是自我充电。先来看看PPTP吧。

 

基本概念:

PPTPPoint to Point Tunneling Protocol),即点对点隧道协议。该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网(VPN),可以通过密码验证协议(PAP)、可扩展认证协议(EAP)等方法增强安全性。可以使远程用户通过拨入ISP、通过直接连接Internet或其他网络安全地访问企业网。

PPP协议:Point to Point Protocol,即点对点协议。PPTP使用PPP协议对用户数据进行封装,然后将PPP数据帧封装在IP数据报里,经由IP网络传播。

MPPEMicrosoft Point-to-Point EncryptionPPTPMPPE技术提供了用以对保密数据进行封装与加密的VPN服务。MPPE通过MS-CHAPMS-CHAP v2身份验证过程所生成的加密密钥对PPP帧进程加密。

MS-CHAPMicrosoft挑战握手认证协议。MS-CHAPv1(RFC2433)MS-CHAPv2(RFC2759)

PPTP协议号:47

PPTP端口号:1723

 

    看下win7支持的VPN类型,如下图所示,有PPTPL2TP/IPsecSSTPIKEv2

1.         验证内核是否支持MPPE模块

内核的MPPE模块用于支持,主流的Linux Desktop也都有MPPE支持,执行如下命令并显示如下结果说明正常。

         [root@localhost ~]# lsmod|grep mppe

ppp_mppe                4463  0

ppp_generic            18207  1 ppp_mppe

2.         安装所需软件

n  安装ppp: yum install ppp

n  安装pptpd:

方法一(建议使用此法):通过源码安装,到时可以看源代码比较方便,使用法二无法看源码。具体编译过程请看《编译调试技巧》。

方法二:使用rpm直接安装

         下载pptpd-1.3.4-2.rhel5.i386.rpm

         执行:rpm -ivh pptpd-1.3.4-2.rhel5.i386.rpm

 

安装完后可以查看pptpd版本:

[root@localhost source]# ./pptpd --version

pptpd v1.3.4

 

3.         配置PPPPPTP配置文件

n  配置PPP:

需要编辑它的两个配置文件,一个是option(选项)文件,一个是用户账户文件。首先编辑option文件:

vim /etc/ppp/options.pptpd

name pptpd

refuse-pap

refuse-chap

refuse-mschap

require-mschap-v2

require-mppe-128

ms-dns 8.8.8.8

ms-dns 8.8.4.4

proxyarp

lock

nobsdcomp

novj

novjccomp

nologfd

 

其中name后面的pptpd是服务名称,可以任意修改成你喜欢的名字,在后面的配置中将对应的pptpd替换为你在这里修改的名字即可。

接下来的几行以refuse或者require开头的指令,是配置拒绝和接受的加密方式,这里接受的mschap-v2mppe-128都是较新的比较安全的加密方式,其中mppe-128需要第一步中验证的内核模块支持。

另外两个比较重要的行就是ms-dns了,它们指定VPN使用的DNS服务器。毕竟VPS位于国外,所以推荐使用上面通用的Google Public DNS,当然也可以修改为你的VPS所在ISP提供的DNS

剩下后面几个选项,就不在这里叙述了,需要知道其含义的童鞋可以参考这个范例文件中的注释。

接下来修改另一个,存储着用户账户的文件:

vi /etc/ppp/chap-secrets

n  配置pptpd

vi /etc/pptpd.conf

option /etc/ppp/options.pptpd

logwtmp

localip 192.168.0.1

remoteip 192.168.0.207-217

 

其中option选项指定使用/etc/ppp/options.pptpd中的配置;logwtmp表示使用WTMP日志。

后面两行是比较重要的两行。VPN可以这样理解,Linux客户端使用一个虚拟网络设备ppp0Windows客户端也可以理解成VPN虚拟网卡),连接到服务器的虚拟网络设备ppp0上,这样客户端就加入了服务器端ppp0所在的网络。localip就是可以分配给服务器端ppp0IP地址,remoteip则是将要分配给客户端ppp0(或者虚拟网卡)的。

这两项都可以是多个IP,一般localip设置一个IP就行了,remoteip则视客户端数目,分配一段IP。其中remoteipIP段需要和localipIP段一致。

localipremoteip所处的IP段可以随意些指定,但其范围内不要包含实际网卡eth0IP地址。一般情况下,使用上面配置文件中的配置就好使了,你需要做的只是把192.168.0.207-217这个IP区间修改成你喜欢的192.168.0.a-b,其中1

4.         打开内核的IP转发功能:

要使VPN服务器可以作为网络请求的中转代理,能够使客户端通过VPN访问Internet,还需要开启内核的IP转发功能。可以编辑配置文件:

vi /etc/sysctl.conf

找到其中的行:

net.ipv4.ip_forward = 0

修改为:

net.ipv4.ip_forward = 1

然后执行下面命令使上述修改生效:

sysctl –p

5.         启动pptpd守护进程:

上面配置完成后,就可以启动pptpd进程并设置自动启动了,和上面iptables的例子类似:

service  pptpd restart

也可以这样启动:/etc/init.d/pptpd start

/etc/init.d/pptpd其实就是个脚本,打开看一眼:

case "$1" in

  start)

        echo -n "Starting pptpd: "

        if [ -f /var/lock/subsys/pptpd ] ; then

                echo

                exit 1

        fi

        daemon /usr/sbin/pptpd

        echo

        touch /var/lock/subsys/pptpd

        ;;

  stop)

        echo -n "Shutting down pptpd: "

        killproc pptpd

        echo

        rm -f /var/lock/subsys/pptpd

        ;;

  status)

        status pptpd

        ;;

 

所以说白了就是执行daemon /usr/sbin/pptpd,这样的话我们就不用使用此脚本,也可以手工启用了。下一节将会详细介绍如何开始调试源码。

6.         配置iptables规则

iptables -A FORWARD -s 192.168.0.0/24 -o eth0 -j ACCEPT

iptables -A FORWARD -d 192.168.0.0/24 -i eth0 -j ACCEPT

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

7.         配置windows客户端

 

连接成功后的状态:

8.         当前Linux接口配置:

[root@localhost ~]# ifconfig

eth0      Link encap:Ethernet  HWaddr 00:0C:29:EE:B5:B7 

          inet addr:192.168.3.106  Bcast:192.168.3.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:feee:b5b7/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:45485 errors:0 dropped:0 overruns:0 frame:0

          TX packets:43040 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:24068127 (22.9 MiB)  TX bytes:18163721 (17.3 MiB)

          Interrupt:18 Base address:0x2000

 

eth1      Link encap:Ethernet  HWaddr 00:0C:29:EE:B5:C1 

          inet addr:88.0.0.1  Bcast:88.0.0.255  Mask:255.255.255.0

          inet6 addr: fe80::20c:29ff:feee:b5c1/64 Scope:Link

          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

          RX packets:530 errors:0 dropped:0 overruns:0 frame:0

          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:1000

          RX bytes:49146 (47.9 KiB)  TX bytes:552 (552.0 b)

          Interrupt:18 Base address:0x2080

 

lo        Link encap:Local Loopback 

          inet addr:127.0.0.1  Mask:255.0.0.0

          inet6 addr: ::1/128 Scope:Host

          UP LOOPBACK RUNNING  MTU:16436  Metric:1

          RX packets:83 errors:0 dropped:0 overruns:0 frame:0

          TX packets:83 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:0

          RX bytes:4260 (4.1 KiB)  TX bytes:4260 (4.1 KiB)

 

ppp0      Link encap:Point-to-Point Protocol 

          inet addr:192.168.0.1  P-t-P:192.168.0.100  Mask:255.255.255.255

          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1396  Metric:1

          RX packets:276 errors:0 dropped:0 overruns:0 frame:0

          TX packets:182 errors:0 dropped:0 overruns:0 carrier:0

          collisions:0 txqueuelen:3

          RX bytes:77270 (75.4 KiB)  TX bytes:14123 (13.7 KiB)

9.         抓包

暂时不抓包了,下回讲协商协议时再讲吧










本文转自 落花非有意  51CTO博客,原文链接:http://blog.51cto.com/1992zhong/1585030,如需转载请自行联系原作者


本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!

相关文章

立即
投稿

微信公众账号

微信扫一扫加关注

返回
顶部