pptp VPN原理与安装配置 tomato pptp vpn 配置
隧道技术的基本过程是在源局域网与公网的接口处将数据(可以是ISO 七层模型中的数据链路层或网络层数据)作为负载封装在一种可以在公网上传输的数据格式中,在目的局域网与公网的接口处将数据解封装,取出负载。被封装的数据包在互联网上传递时所经过的逻辑路径被称为“隧道”。
目前VPN隧道协议有4种:点到点隧道协议PPTP、第二层隧道协议L2TP、网络层隧道协议IPSec以及SOCKS v5,我们这里只介绍点到点隧道协议PPTP。
一、PPTP协议原理
PPTP使用一个TCP连接对隧道进行维护,使用通用路由封装(GRE)技术把数据封装成PPP数据桢通过隧道传送。可以对封装PPP桢中的负载数据进行加密或压缩。
下边简单描述PPTP 过程中涉及的封装和解封步骤。
封装
1.数据封装于IP(或IPX和NetBEUI)封包中。
2.该IP(或IPX和NetBEUI)封包封装在PPP帧中。
3.该PPP 帧封装在GRE 帧中(并加密)。
4.该GRE 帧封装在IP 封包中。
解封
1.移除IP 包头。
2.移除GRE 包头(解密过程)。GRE负载中是一个PPP帧。
3.移除PPP 包头。
4.将该IP(或IPX和NetBEUI)封包路由到其最终的目的地。
MPPE将通过由MS-CHAP、MS-CHAP v2或EAP-TLS身份验证过程所生成的加密密钥对PPP帧进行加密。为对PPP帧中所包含的有效数据进行加密,虚拟专用网络客户端必须使用MS-CHAP、MS-CHAP v2或EAP-TLS身份验证协议。PPTP将利用底层PPP加密功能并直接对原先经过加密的PPP帧进行封装。
PPTP协议将控制包与数据包分开,控制包采用TCP控制,客户端连接到VPN服务器TCP1723端口,用于控制和管理VPN隧道的功能。;数据包部分先封装在PPP协议中,然后封装到GRE V2协议中,最后封装到IP协议中传送。
因业务需要,公司员工需要通过VPN访问国外网站,便有了以下安装实例。
二、PPTP VPN安装前的准备
环境:CentOS release 5.4 (Final) x86_64
协议:GRE PPTP
端口:PPTP /TCP/1723(服务端), GRE/TCP/47
加密:MPPE(微软)
认证:MS-CHAP v2
服务:pptpd
软件包:
(1) ppp-2.4.4-14.1.rhel5.x86_64.rpm
PPTP需要PPP的支持,一般情况下linux系统都已安装有PPP软件包,最好安装较新的ppp软件包,用Uvh这个参数来更新系统的PPP组件。也可以用yum –y instll ppp命令安装。
(2) pptpd-1.3.4-2.rhel5.x86_64.rpm (pptpd服务软件)
(3) dkms-2.0.17.5-1.noarch.rpm CentOS5x/RHEL5x(内核支持mppe)不用安装
DKMS全称是 Dynamic Kernel Module Support,它可以帮我们维护内核外的这些驱动程序,在内核版本变动之后可以自动重新生成新的模块。
(4) kernel_ppp_mppe-1.0.2-3dkms.noarch(MPPE的内核补丁),CentOS5x/RHEL5x(内核支持mppe)不用安装
(5) pptp-release-4-6.rhel5.noarch.rpm pptpdyum仓库包,安装后可用yum –y install pptpd命令来安装pptpd.
下载地址:
http://poptop.sourceforge.net/yum/beta/rhel5/i386/dkms-2.0.17.5-1.noarch.rpm
http://poptop.sourceforge.net/yum/beta/rhel5/x86_64/ppp-2.4.4-14.1.rhel5.x86_64.rpm
http://poptop.sourceforge.net/yum/beta/rhel5/x86_64/pptpd-1.3.4-2.rhel5.x86_64.rpm
http://poptop.sourceforge.net/yum/beta/rhel5/i386/pptp-release-4-6.rhel5.noarch.rpm
我们这里是64位系统,如果是32位系统请下载相应的软件包。
三、pptp VPN 安装
1.下载把所需的软件包,我们这里把软件下载到/vpnsoft目录
2.安装软件包
rpm -Uvh ppp-2.4.4-14.1.rhel5.x86_64.rpm
rpm -ivhpptpd-1.3.4-2.rhel5.x86_64.rpm
rpm -ivh dkms-2.0.17.5-1.noarch.rpm (可以不安装)
3.查看内核是否加载 mppe模块 .
(1)lsmod |grep ppp 默认情况下不会自动加载,所以命令执行后没有返回结果。
(2)modprobe ppp-compress-18 手动加载mppe模块
(3)再次查看mppe模块是否加载
lsmod |grep ppp
ppp_mppe 398810
ppp_generic 626891 ppp_mppe
slhc 397451 ppp_generic
出现上面情况说明已ppp模块和mppe加载成功
四、PPTP服务配置
1. 修改主配置文件/etc/pptpd.conf
vim /etc/pptpd.conf
ppp /usr/sbin/pppd
option /etc/ppp/options.pptpd
第一句指pppd服务在哪里,第二句是指pptpd的参数配置文件的位置。
在文件最后行添加以下两行:
localip 100.100.100.1
remoteip 192.168.100.100-254
Localip指本地的地址,就是客户端要连接的VPN服务器的地址,可以是虚拟地址,可以与remoteip地址同段或异段。
remoteip要给客户端分配地址的范围(如果地址不连续,可以用逗号隔开)。
2.修改/etc/ppp/options.pptpd参数配置文件
vim /etc/ppp/options.pptpd
name vpnserver
开启Authentication,默认是注释掉的,是指是否开启身份认证,必须的。
name 后面是VPN服务器的名称,默认是pptpd,
ms-dns 8.8.8.8
ms-dns 8.8.4.4
添加DNS地址,我们用的是google的DNS.
refuse-pap 拒绝pap身份验证
refuse-chap 拒绝chap身份验证
refuse-mschap 拒绝mschap身份验证
require-mschap-v2 使用mschap-v2身份验证
require-mppe-128 使用 128-bit MPPE 加密
3.修改/etc/ppp/chap-secrets用户账号文件
vim /etc/ppp/chap-secrets
# client serversecret IP addresses
"test001" vpnserver"test" *
Client 栏位指的是用户名,server指VPN服务器名称,要与/etc/ppp/options.pptpd文件里name 后面的VPN服务器名称一样。Secret是指密码,IP addresses 是指客户端用哪个IP访问,*号表示随机分配。
4.网络和iptable设置
因为要通过VPN服务器上网,所以要开启ip_forward转发功能和伪装IP以及开启相关协议端口. 如果要访问VPN服务器的内部局域网的话,要用route add命令添加路由。
(1) 开启转发功能
echo " net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
(2) 让转发功能立即生效
sysctl –p
(3) 伪装IP
iptables -t nat -A POSTROUTING –p tcp –s 192.168.100.0/24 -j SNAT –to-source XX.XX.XX.XX
XX.XX.XX.XX为VPN服务器外网IP.
(4) 开启相关协议端口
iptables -A INPUT -p udp--dport 53 -j ACCEPT
iptables -A INPUT -p tcp--dport 53 -j ACCEPT
iptables -A INPUT -p tcp --dport 1723 -j ACCEP
iptables -A INPUT -p tcp --dport 80 -j ACCEP
iptables -A INPUT -p gre -j ACCEPT
service iptables save
service iptables restart
5. 启动pptpd服务
service pptpd start 启动
service pptpd stop停止,所有的会话连接都会丢失。
service pptpd restart 重启服务,现在会话连接不会丢失。
6. 查看pptpd服务是否启动
netstat –an |grep 1723
五.测试
1.在window 客户端建立一个VPN连接.
IP地址为VPN服务器地址,输入用户和密码后连接。(具体操作略过)
2.查看连接
在命令行运行ipconfig/all命令后,会多出一个PPP连接来,这样就连接到VPN服务器了
3. 在VPN服务器端,运行ifconfig后,也会多出一个PPP连接。
4. 为了方便排除连接故障,可以在/etc/pptpd.conf 主配置文件里开启debug和logwtmp选项,这两个选项会把客户端连接情况记录在/var/log/message里面。
六、其它命令和技巧
1. 连接(linux下有效)
pppd call tunnelname
tunnelname为用ifconfig查看到的PPP连接名称。
2.断开所有PPP连接
killall pppd
3.断开指定ppp连接
ps –ef |grep pptpd
这样会查出很多进程来,根据客户端外网IP地址找到对应的进程号,然后kill掉就行了。
4.添加VPN用户账号
vpnuser add vpnuser vpnpasswd
5.删除VPN用户账号
vpnuser del vpnuser
七、安装linux VPN客户端
环境:CentOS release 5.4 (Final) i686 i686 i386
软件包: ppp-2.4.4-2.el5(默认已安装), libpcap-0.9.4-14.el5(默认已安装) pptp-1.7.2-3.rhel5.i386.rpm(下载地址http://pptpclient.sourceforge.net/)
1.安装软件包
rpm –ivhpptp-1.7.2-3.rhel5.i386.rpm
2.建立VPN连接通道
#pptpsetup --create vpntunnel --server 100.100.100.1 --username test001 --password test --encrypt –start
vpntunnel通道名称
--server 100.100.100.1 指定VPN服务器地址
--username test001 指定用户名
--password test 指定密码
--encrypt 启用加密
刚才建立的连接用户和密码信息会自动添加到/etc/ppp/chap-secrets文件中,并且在/etc/ppp/peers目录下产生一个vpntunnel文件,文件内容如下:
cat /etc/ppp/peers/vpntunnel
# written by pptpsetup
pty "pptp 100.100.100.1 --nolaunchpppd"
lock
noauth
nobsdcomp
nodeflate
name vpn1
remotename vpntunnel
ipparam vpntunnel
require-mppe-128
执行命令pppd call vpntunnel,就可以连接到VPN Server了。
本文出自 “梁悦君 & RHCA之亲密接触 ” 博客,请务必保留此出处http://yuejun.blog.51cto.com/634963/666650
更多阅读
TortoiseSVN下载,安装,配置,常用操作 svn教程 tortoisesvn配置文件
TortoiseSVN下载,安装,配置,常用操作 svn教程——简介目前TortoiseSVN是最为常用的版本控制软件之一。TortoiseSVN下载,安装,配置,常用操作 svn教程——工具/原料一台能上网的电脑TortoiseSVN下载,安装,配置,常用操作 svn教程——
ubuntu 12.04 LTS 安装配置JDK ubuntu 16.04.1 lts
ubuntu 12.04 LTS 安装配置JDK——简介对于一个新手安装java是一件头疼的事,下文力求简单明了地介绍如何在ubuntu 12.04 LTS下安装和配置JDK。ubuntu 12.04 LTS 安装配置JDK——方法/步骤ubuntu 12.04 LTS 安装配置JDK 1、下载JDK6
地下城与勇士配置要求,如何查看电脑能不能玩dnf 地下城与勇士配置要求
地下城与勇士配置要求,如何查看电脑能不能玩dnf——简介以通过查看dnf的配置要求要查看电脑能否流畅地玩dnf,或者通过一个小软件来检测。地下城与勇士配置要求,如何查看电脑能不能玩dnf——工具/原料百度地下城与勇士配置要求,如何
建行手机银行客户端如何开通与安装 建行手机银行客户端
建行手机银行客户端如何开通与安装——简介 随着智能机的兴起,手机交易也越来越受到用户的认可,如手机购物,手机转账,手机还款等。当我们去建行的营业厅办理网上银行时,有时就会办理手机银行。 那具体的手机银行改如何开通,怎样安装了?下
svn如何安装,svn如何配置,svn安装配置 linux svn安装配置
svn如何安装,svn如何配置,svn安装配置——简介svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问