当前位置: 首页 > 图文教程 > 操作系统 > Unix/Linux > Linux中IP隧道的分析与建议

Unix/Linux
Linux crontab定时执行任务 命令格式与详细例子
linux 查看用户及用户组的方法
让Linux系统有效防御ARP攻击的实用技巧
Linux 常用软件列表
linux wget 一个强大的下载命令
linux 常用脚本、命令
linux 磁盘配额 简单介绍
Linux服务器架设笔记 Squid服务器配置
ubuntu intel 集成显卡安装
ubuntu 9.04 X3100 显卡开启3D特效
Ubuntu 8.10 Server Ruby 的安装方法
Ubuntu root帐户密码修改
ubuntu下apt-get 命令参数
Ubuntu Linux下实现QQ的三种方式
Ubuntu 8.04中建立PHP+MySQL环境
Ubuntu常用软件大全
Ubuntu系统下安装Aircrack-ng
Ubuntu实现FTP功能
ubuntu 字体美化实现方法
ubuntu下netbeans汉字显示残缺问题

Unix/Linux 中的 Linux中IP隧道的分析与建议


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-01   浏览: 37 ::
收藏到网摘: n/a

  ****************************************************************

作者的话:

本文系在阅读Linux源码及一些相关资料的基础上写成的。

欢迎就文章的各个方面提出建议和批评意见,作者希望更多的交流和探讨。

欢迎在保留原文完整性的前提下在网上转贴,需部分引用请通知作者。

传统媒体转载和引用此文,请务必经过作者同意。

欢迎在实际的应用中使用此文提出的思想,希望同时知会作者。



作者信箱: [email protected]



欢迎来信!!
*****************************************************************

O、

由于网络的日益普及,网络的安全成为目前的热门话题。本文对隧道技术的分析,

就侧重安全领域,对利用隧道技术实现虚拟专网提出建议。



为什么需要IP隧道?没有接触过这个概念的人自然提出这样的疑问。实际上概念

最初的提出很简单,为了在TCP/IP网络中传输其他协议的数据包。设想IPX协议或

X.25封装的数据包如何通过Internet网进行传输,在已经使用多年的桥接技术中是

通过在源协议数据包上再套上一个IP协议头来实现,形成的IP数据包通过Internet后

卸去IP头,还原成源协议数据包,传送给目的站点。对源协议数据来说,就如被IP

带着过了一条隧道。这种技术在业余无线网络(Amateur Packet Radio network,

应该怎么翻,请告诉我)得到了最广泛的应用。

利用IP隧道来传送的协议包也包括IP数据包,本文主要分析的IPIP封包就是如此,从字

面来理解IPIP就对了,就是把一个IP数据包又套在一个IP包里。为什么要这么做呢?

多此一举嘛。其实不然,见过一些应用就会明白,移动IP(Mobile-IP)和IP多点广播

(IP-Multicast)是两个通常的例子。目前,IP隧道技术在构筑虚拟专网( Virtual 

Private Network)中也显示出极大的魅力。本文也将对利用IP隧道技术构筑VPN做

简单设想。







背景:隧道的多种理解和实现



Internet的研究者多年前就感到需要在网络中建立隧道,最初的理解是在网络

中建立一条固定的路径,以绕过一些可能失效的网关。可以说,隧道就是一条

特定的路径。

这样的隧道是通过IP报头中的源路由选项来实现的,在目前看来,这个方法的缺陷

十分明显。要设置源路由选项就必须知道数据包要经过的确切路径,而且目前

多数路由实现中都不支持源路由。



另一个实现隧道的机制是开发一种新的IP选项,用来表明源数据包的信息,原IP头

可能成为此选项的一部分。这种隧道的意义与我们所说的隧道已十分接近。但它的

不足在于要对目前IP选项的实现和处理做较大的修改,也缺乏灵活性。



最后常用的一种实现方法是开发一种新的IP封包协议,仍然套用当前的IP头格式。

通过IP封包,不须指明网络路径,封包就能透明地到达目的地。也可以通过封包空

间把未直接连接的机器绑在一起,从而创建虚拟网络。这种方法易行、可靠、可扩

展性强,Linux采用了这一方法,这也是目前我们所理解的隧道思想。







一、

封包协议的结构和实现



封包协议的实现原理十分简单。先看看通过隧道传送的数据报在网络中如何流动,

如图一。

为了叙述简便,我把在隧道中传送的IP数据包称为封包。



     --------------                    -----------

    /    子网A     \                  /   子网C   \

   /                \                /             \

  |                  |              |               |

  |     &