pptp 配置文件简析
搞了几年的IPsec,不太了解SSL、PPTP、L2TP也有点说不过去,以前也很想知道它们之间的真正的区别,各种原因和借口没看成,现在发现我又有了很强的求知欲,并很想知道它们的真正区别和原理,所以挤挤海绵中的时间也当是自我充电。先来看看PPTP吧。
基本概念:
PPTP(Point to Point Tunneling Protocol),即点对点隧道协议。该协议是在PPP协议的基础上开发的一种新的增强型安全协议,支持多协议虚拟专用网(VPN),可以通过密码验证协议(PAP)、可扩展认证协议(EAP)等方法增强安全性。可以使远程用户通过拨入ISP、通过直接连接Internet或其他网络安全地访问企业网。
PPP协议:Point to Point Protocol,即点对点协议。PPTP使用PPP协议对用户数据进行封装,然后将PPP数据帧封装在IP数据报里,经由IP网络传播。
MPPE:Microsoft Point-to-Point Encryption,PPTP与MPPE技术提供了用以对保密数据进行封装与加密的VPN服务。MPPE通过MS-CHAP、MS-CHAP v2身份验证过程所生成的加密密钥对PPP帧进程加密。
MS-CHAP:Microsoft挑战握手认证协议。MS-CHAPv1(RFC2433)、MS-CHAPv2(RFC2759)。
PPTP协议号:47
PPTP端口号:1723
看下win7支持的VPN类型,如下图所示,有PPTP、L2TP/IPsec、SSTP、IKEv2。
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. 配置PPP和PPTP配置文件
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-v2和mppe-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客户端使用一个虚拟网络设备ppp0(Windows客户端也可以理解成VPN虚拟网卡),连接到服务器的虚拟网络设备ppp0上,这样客户端就加入了服务器端ppp0所在的网络。localip就是可以分配给服务器端ppp0的IP地址,remoteip则是将要分配给客户端ppp0(或者虚拟网卡)的。
这两项都可以是多个IP,一般localip设置一个IP就行了,remoteip则视客户端数目,分配一段IP。其中remoteip的IP段需要和localip的IP段一致。
localip和remoteip所处的IP段可以随意些指定,但其范围内不要包含实际网卡eth0的IP地址。一般情况下,使用上面配置文件中的配置就好使了,你需要做的只是把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,如需转载请自行联系原作者
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
