跟华为工程师学习OpenVPN高级路由技术

转:http://www.luyouqiwang.net/huaweiluyouqi691.html

OpenVPN内部路由和系统的路由之间的区别在于,系统路由完全照着最长前缀匹配原则,找到路由之后,将数据包从对应的网卡接口转发出去。而 OpenVPN内部的路由虽然最终也是决定是否转发并且往哪里转发数据包,然而这个“是否转发”以及“往哪里转发”是和系统路由大大不同的,OpenVPN是否转发数据包依照的其内部的一张路由表而和系统的路由表没有关系,往哪里转发呢?其实是往两个地方转发,根据查找内部路由得到的结果,如果目的地址不是其它OpenVPN客户端的或者这些OpenVPN客户端后面的网络主机的,那么就往自己的虚拟网卡中转发,如果目的地址是其它 OpenVPN客户端的或者其后面网络的,那么在开启C2C的情况下,直接转发到对应OpenVPN的socket,转发前用对应的socket实例的安全参数进行OpenVPN协议封装,C2C是不是很像linux中的ip_forward内核参数呢?

注意,前面的阐述中,我一直都在说目的地址,而没有说目的IP地址,这是因为OpenVPN的内部路由不仅仅是IP路由,在tap模式下,它的内部路由实际上是链路层的路由,这时OpenVPN服务器不是一台路由器,而是一台交换机,还是一台可以“动态学习MAC地址”的交换机,因此tap模式下,OpenVPN内部路由其实就是交换机的链路层路由,其路由表其实就类似于交换机的MAC地址表。

OpenVPN内部路由的职责有:

1.抉择是否转发到来的已经解除了OpenVPN封装的载荷数据包。也就是载荷包的发起者是否在OpenVPN的策略范围内;

2.处理不同OpenVPN客户端之间的通信以及不同客户端后面所挂接的网段主机之间的通信。也就是说在上述这些主机之间路由数据包,注意这里所谓的路由并不是协议栈中的IP路由,而是OpenVPN内部的路由。

OpenVPN可以通过内部路由扩展成一个巨大的网络,该网络直接穿越不安全的网络区域,比如互联广域网或者城域网,是这个扩展而成的巨大网络真正的成了虚拟的和专用的,这就是OpenVPN对于网络拓扑支持最强大的地方,OpenVPN另外的强大之处前面的文章都快说烂了,比如和SSL结合,和PKI结合等等,在和主机网络协议栈结合处,OpenVPN使用了虚拟网卡,这也快说烂了,因此本系列文章着重谈OpenVPN的强大路由功能。如果能彻底理解这个,那么相信你已经理解了其它,进而阅读源代码和修改定制源代码已经不是什么困难事了,因此本系列文章不再冗余的分析源码。

那么,被OpenVPN扩展而成的网络到底是什么样子呢?这要看你使用tap模式还是tun模式了:

tap模式下,VPN节点(多个客户端和一个服务器端)组成了一个以太网,而VPN服务器就相当于一台以太网交换机。由于以太网是IP协议栈下层的封装,tap模式下的所有VPN节点以及节点后被bridge的节点组成了一个大的以太网而不是IP网络,OpenVPN内部路由是作用于MAC地址的,对于任意来源IP,OpenVPN内部路由都是直通的,写入虚拟网卡后,由系统路由判决。因此tap模式下,如果需要各个VPN节点后面的网络之间达到 IP互通的效果,那就必须要么做NAT映射,将VPN节点后面的网络NAT到VPN节点,要么辅助以系统的IP路由,而这些配置很复杂,很难维护。见下图:

tun模式下,VPN节点(多个客户端和一个服务器端)以及其它允许接入的网络(通过iroute配置)组成了一个IP网络,而VPN服务器就相当于一台IP路由器。tun模式下的所有VPN节点以及节点后被iroute内部路由以及系统路由指向的节点组成了一个大的IP网。此模式下,内部路由和系统路由共同起作用,OpenVPN的事件机制可以将这二者无缝结合。见下图:

OpenVPN事实上通过定义良好的衔接口和既有的优秀框架结合,这些衔接口分别是SSL协议/PKI,虚拟网卡/主机协议栈,内部路由/事件机制/系统 IP路由。OpenVPN既做到了机制的完整,和外部框架的结合,又给了用户灵活的配置,因此,OpenVPN很棒。

时间: 2024-11-07 15:01:53

跟华为工程师学习OpenVPN高级路由技术的相关文章

openvpn高级路由技术

转:http://blog.csdn.net/dog250/article/details/6975179 目录 server模式以及点对点模式的OpenVPN OpenVPN的高级路由技术 1TAP模式虚拟网卡对源地址的检查以及路由配置思路 2TUN模式虚拟网卡对源地址的检查以及路由配置思路 3如何配置TUN模式的OpenVPN从而通过检查 4为何说网对网通透拓扑的配置很复杂 5OpenVPN的redirect-gateway选项 总结 1.server模式以及点对点模式的OpenVPN 前文

华为路由器——BGP路由技术详解

BGP(边界网关协议)是一个路径矢量路由协议,和传统的基于下一跳的IGP协议不同,它是基于AS(自治系统)的协议.BGP属于外部网关路由协议,它解决的是AS之间的选路问题,也正是因为这样,它更适合用户互联网.学习BGP的关键在于理解BGP的报文.邻居的建立.BGP路由属性.选路原则等.接下来详细介绍--BGP路由协议. 博文大纲:一.了解BGP的概述:二.掌握BGP的工作原理:三.实验案例:四.总结BGP的配置: 一.BGP的概述 不同于RIP.OSPF之类的路由协议,BGP是在自治系统之间进行

【基础】华为单臂路由技术配置实战

1.     实验拓扑: 使用ENSP模拟器(版本V100R002C00 1.2.00.350) 2.     实验需求: 1)      PC1和PC3属于VLAN 10 2)      PC2和PC4属于VLAN 20 3)      全网互通 3.     实验步骤: 1.      IP规划: PC1:192.168.10.10/24  PC3:192.168.10.30/24 PC2:192.168.20.20/24  PC4:192.168.20.40/24 AR1:g0/0/1.1

华为设备的BGP路由技术是什么?

一. 什么是BGP? BGP不同于之前介绍的动态路由协议,BGP是在自治系统之间进行路由学习及选路的协议,如果把一个城市比作一个自治系统,那么像RIP.OSPF等协议就相当于该城市的公交车或者地铁,而BGP则是火车,运行在城市之间. 1. 自治系统 自治系统(Autonomous System AS)是由同一个技术管理机构管理,使用统一选路策略,(运行同一动态路由协议)的一组路由器的集合,自治系统的编号取值范围为1~65535.其中1~64511是互联网上注册的公有AS号类,类似之前课程中讲过的

CCNA网络工程师学习进程(7)路由器的路由配置

    前面一节已经介绍了路由器的端口配置,接着我们介绍路由器的路由配置:静态路由.默认路由和浮动路由的配置:动态路由协议的配置,包括RIP.IGRP.EIGRP和OSPF.     (1)路由器的基础深入: 1)静态路由: 静态路由是指由用户或网络管理员手工配置的路由信息. 静态路由适用于:简单的网络环境和支持DDR(Dial-on-Demand Routing)的网络中. 在DDR(按需拨号路由选择)链路中,拨号链路只在需要时才拨通,因此不能为动态路由信息表提供路由信息的变更情况.DDR允许

Linux运维工程师初级到高级学习线路图

51CTO推出的一系列Linux培训教程(绝大部分免费),适合Linux系统管理.开发.尤其适合Linux下系统运维! 通过这个线路图的学习,可以快捷.有目标性的指导Linux运维人员快速的成长. ...... --Linux基础入门的简介 --Linux系统目录及文件权限认识 --Linux系统常用命令操作 --Linux系统下简单服务的构建 --Linux Shell编程学习 --Linux主流服务及集群构建 --Linux系统内核优化 --Linux架构优化及深入编程 --自动化运维开发

华为设备BGP路由技术

华为设备BGP路由技术 说明: 1:R1为运营商的路由器,R2.R3.R4为公司网络,所有路由器运行BGP路由协议2:R1和R2之间.R1和R3之间都建立EBGP连接3:R2.R3.R4之间建立IBGP全连接4:运营商网络为AS100,公司网络为AS2005:在AS200内,使用IGP协议来计算路由(IGB使用OSPF协议) 要求: 1:实现两个AS之间的互通2:通过修改BGP属性实现业务需求的路径从R2切换到R3 实验步骤: 一:基础配置1:配置各个设备的ip地址(1)R1<Huawei>s

华为路由器之BGP路由技术总结及配置命令

一.BGP的概念:BGP(Border Gateway Protocol,边界网关协议)是一个距离矢量路由协议,和传统的基于下一跳的IGP协议不同,它是基于AS(自治系统)的协议.BGP属于外部网关路由协议,它解决的是AS之间的选路问题,也正是这样,它更适合用于互联网.BGP的关键在于理解BGP的报文,邻居的建立.BGP路由属性.选路原则等..1.自治系统是什么?自治系统(autonomous system,简称"AS"),是由同一个技术管理机构管理,使用统一选路策略(运行同一动态路由

路由技术在企业当中的具体应用之一(静态,默认NAT及静态浮动路由)

今天会给大家带来一个新的技术介绍系列,这个系列的名字叫做"路由技术在企业当中的具体应用"这次就是这个技术文章系列的第一篇,"静态路由,默认路由NAT及静态浮动路由" 我想大家看到这几个名词的时候,一定不会陌生,无论你是学习思科认证体系的(CCNA-CCIE),还是学习华为认证体系的(HCNA-HCIE)的朋友可能在刚开始接触,或者学习网络,或者考取这些认证的朋友都有这样的想法. 上课的时候,老师在上面讲.老师的命令敲的很快,等敲完命令的时候,来一个PING.问同学,