pptp VPN原理与安装配置 tomato pptp vpn 配置

在介绍pptp VPN之前我们先来了解一下隧道技术。
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

  

爱华网本文地址 » http://www.413yy.cn/a/25101013/146434.html

更多阅读

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

建行手机银行客户端如何开通与安装 建行手机银行客户端

建行手机银行客户端如何开通与安装——简介 随着智能机的兴起,手机交易也越来越受到用户的认可,如手机购物,手机转账,手机还款等。当我们去建行的营业厅办理网上银行时,有时就会办理手机银行。 那具体的手机银行改如何开通,怎样安装了?下

svn如何安装,svn如何配置,svn安装配置 linux svn安装配置

svn如何安装,svn如何配置,svn安装配置——简介svn(subversion)是近年来崛起的版本管理工具,是cvs的接班人。目前,绝大多数开源软件都使用svn作为代码版本管理软件。如何快速建立Subversion服务器,并且在项目中使用起来,这是大家最关心的问

声明:《pptp VPN原理与安装配置 tomato pptp vpn 配置》为网友賣笑人分享!如侵犯到您的合法权益请联系我们删除