linux路由协议网络协议栈

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

迈普学习总结

经过在公司里学习了几个月,把大体的工作总结于下:

在参与1800-20 3G 路由的开发中,我参与了l2tp, gre ,静态路由, ipsec ,日志关键信息提取的编写。并同时参与了ipsec-tools 源码,linux kernel 网络协议栈源码,l2tpd 源码分析。并且同时了解了vrrp ,rip 等协议。

L2TP 模块:

L2tp 代码流程:

其中认证过程分为pap 和chap 认证: Pap 认证:

认证信息

Chap 认证:

大体过程应该是这样的,中间也许有错,主要是记不大清楚了。

Pppd 向内核注册过程如下图:

做lac 的路由器通过拨号到lns ,通过上面的连接认证后,lns 会给lac 分配一个私有ip 地址,该Ip 地址可以和2通信。 通过这个过程后,久可以让内网1的pc 访问内网2的pc 。

路由器

路由器

lac

lns

lac

lns

lac

lns

lac

lns

通过认证

发送加密数据,使LAC

认证信息

通过认证

inte

Gre 模块:

模型:

开始的时候,内网1和内网2是不能相互到达的,因为中间有许多中间网络。当建立好GRE 隧道后,内网1就可以和内网2通信了。

实现:GRE 脚本主要通过iproute2这个工具实现。使用的主要脚本命令: I p route add $name mode gre remote $remoteip local $localip ttl 255 I p route set $name up

I p route add net $net/$mask dev $name

脚本流程:脚本从lua 保存的配置文件中获取到上面的变量值,然后通过以上指令,将变量值设置到相应的隧道中。 责任:主要担任gre 模块的测试(与linux )。

DDNS 模块:

原理:DDNS 又叫动态域名解析。实用环境是在用户动态获取IP 地址的情况下。因为传统的DNS 只能与固定IP 地址绑定,一旦IP 地址发生变化,相应的域名将不能解析到变换后的IP 地址上。然后DDNS 改变了这一点。它以动态域名绑定的方式来完成这一点。什么叫动态域名呢?就是指在用户的IP 地址发生改变时,相应的DDNS 客户端会把自己现在的变化后的IP 地址传给DDNS 服务器,告诉它自己的IP 地址已经发生变化,需要服务器将以前绑定域名的IP 换成现在变化后的IP 地址。如果内部在加上端口映射,那么久可以实现路由器内部的主机间接与DNS 绑定,即其他人通过域名就能访问的内网的某台计算上的服务器。

责任:DDNS 的测试。

静态路由模块:

原理:举个例子,当一个路由器刚接入到一个网络中时,在这个陌生的环境中,它根本不知道去某个地址该怎么走,静态路由就相当于一个指路人,它告诉路由器某个IP 地址该怎么走。配置的时候,只需要告诉路由器到达某个网络需要从哪张网卡和相应网卡出去的网关地址就可以了。这样凡是到那个网络的IP 数据包,路由器都会将它从相应网卡转发出去(ttl-1)。它并不关心数据包能否真正的到达。

实现:具体命令:route add –net $net mask $netmask gw $gateway dev $device 责任:静态路由的脚本的基本框架。

Ipsec 模块:

原理:在内核2.6版本中已经存在ipsec 模块,该模块的主要作用是让数据包经过加密/认证从安全的隧道中到达指定的目标地址。它的有几种数据包格式,一种是esp,一种是ah,另一种是esp+ah 。他们的报文格式如下:

Ah 是一种用于认证报文,它主要是给数据包提供认证,防重放;ESP 是一种用于加密报文,当然它也有认证的功能,并且也具有抗重放的机制。它是一种更优越于AH 的报文结构。另外,esp+ah 则是一种集esp 和ah 于一身的格式,当然它的安全性就更不可否认了。

整个模块分为两大类:第一类,kernel ipsec 的实现,第二类上层应用程序ike 即为ipsec 模块协商认证算法和加密算法的协议。下面谈谈ike 协

议。

Ike协议分为两个阶段,第一阶段协商对对方的身份进行认证,并且为第二阶段的协商提供一条安全可靠的通道。第一个阶段又分为3种模式,我们常用的有两种模式,一个是主模式,一个是积极模式。第二阶段主要对IPSEC的安全性能进行协商,产生真正可以用来加密数据流的密钥。

主模式(IKE SA 阶段):

以上过程中包含验证信息,我就没特别指出了。具体参见如下:

发送cockie包,用来标识唯一的一个IPSEC会话。

IKE阶段一(主模式):发送消息1 initiator====>responsor

isakmp header

sa payload

proposal payload

transform payload

定义一组策略:

加密方法:DES

认证身份方法:预共享密钥

认证散列:MD5

存活时间:86400秒

Diffie-Hellman group:1

IKE阶段二(主模式):发送消息2 initiator<====responsor

同上

IKE阶段三(主模式):发送消息3 initiator====>responsor

通过DH算法产生共享密钥

KE(Key Exchang) Payload

nonce(暂时)Payload

相关文档
最新文档