《linux路由协议网络协议栈.docx》由会员分享,可在线阅读,更多相关《linux路由协议网络协议栈.docx(18页珍藏版)》请在课桌文档上搜索。
1、迈普学习总结经过在公司地学习了几个月,把大体的工作总结于K在参加1800-203G路由的开发中,北叁加了12tp.grc,静态路由,ipscc,日志关犍信息提取的8写并同时向AllTipsec-toolsWW,HnStkECl网络协议栈源玛,I2tpd双的分析,井H同时了解了Vnp,rip等协议。1.STPWfc1.2tp代码流程:其中认证过程分为PaP和ChaP认证:Pap认证:1.H侑devp-PPP怜议tty-做JaC的路由器通过拨号到Ins,通过上面的连接认证后.InS会冷IaC安排一个和有ip地址,谖IP地址“J以和2通保通过这个过程后,久呵以让内网1的PC访问内网2的pc.GreM
2、模型:起先的时候,内网1和内网2是不能相互到达的,因为中间右很多中间网络.当建立好GRE陂道后,内网1可以和内M2通信了.实现:GRE脚本主要通过iproute2这个I:具实现,运用的主要脚本财咐:Iprouteadd$namemodegrrremoteSremotdplocal$loCaIiPttl255Iprouteset$nameupIprouteaddnetSnct/SmaskdevSnamc脚本流程:WI在从IUa保存的配置文件中获得到上面的变“t他,然后通过以上指令,格变心值设置到相应的随逆中.责任:主要拊当Bre模块的测渣(Hnux),DDNS*:原理:DDNS又叫动态域名解析,
3、好用环境是在用户动态佚得【P地址的状况F,因为传统的DNS只能叼冏定】P地址绑定,一旦IP地址发生变更,相应的域名符不能解析目变换后的IP地址匕然埼DDNS变更这一点。它以动态域名绑定的方式来完成这点.什么叫动态域名呢?就是指在用户的】Pjt址发生变更时,相应的DDNS客户必会把11己现在的变更后的IP地址传给DDNS服务器,告知它自己的IP地址已经发生变更,尔要服务器将以前做定域名的IP换成现在变更后的IP地址。假如内部在加I:端Il帙射,那么久可以实现路由器内部的匕机向按与DNS绑定,印火他人通过域名就能访问的内网的某合计尊上的服务JS,责任:DDNS的测试.MUIAim原理:举个例子,当
4、一个路由霹1接入到一个网络中时,在这个生魂的环境中,它根本不知递去某个地址该怎么走,静态路由就相当广一个指路人,它告知旃由戕某个【P地址该怎么走,配置的时候,只须要告知路由器到达某个网络笫要从哪张网k和相应网卡出去的网关堆址就可以r.这样凡是到那个网络的IP数抠但,踣由戕布会将它从相应网卡转发出去(1-1).它并不关切数据包便否真正的到达.实现:共体吩咐:routeadd-net$netmaskSnttmaskgwSgatcwaydevSdevicc责任:砂态WHh的脚本的茶本楸架,Ipc*原理:花内核2.6版本中已经存在IPSeC模块,该根块的主要作用是让数据包经过加修/认证从平安的俄道中到
5、达指定的Il标地址”它的有几种数据包格式,种是esp.种是ah.另种是esp,ah.他们的推文格式如1.Ah种用于认证报文,它主要是给数第包供应认证,Wiftft;ESP是一种用于加密报文,当然它也有认证的功俺,井乩也J“1抗吸放的机制.它是一种更优越于AH的报文结构-另外,csp+ah则是一种集csp和ah于一身的格A.*然它的平安性篦更不行否认了,祭个模块分为两大类:第一奥,kernelipscc的实现,共次美上层应用程序ike即为ipscc模块协商认证算法和加密算法的陈双,下面谈谈ike协议.Ikc协议分为两个阶段,第一阶段协商财对方的当份选行认证,并且为其次阶段的陟商供应一条平安率命的
6、通道.第一个阶段乂分为3种模式,我们常用的仃四种模式,一个是主模式,一个是主动模式,其次阶段主要对】PSEC的平安性提进行协商,产生真正可以用来加麻敛榭流的密以上过程中包含S证恺息,我就没特殊指出了.具体格见如F:发送CoCkle包,用来标识唯的个】PSEC会说!KE阶段一(主模式:发送消息1initiator=rcsponsoriSttkmpheaderXapayloadproposalpayloadtransformpayload定义组被略:加密方法:DES认证讨价方法:ffl共学笛的认证1及列:MD5存活时间:86400秒Diffie-Hdlmangroup:1IKE阶段二(主模式):发
7、送消12同上IKK阶段三(主模式):发送消息3通过DH算法产生共密钠KE(KeyExchang)Payloadnoncc(JMff)PayloadDH法:A:巴较大的Mjs:)GPriA(随机产生)PUbA-GAPriAmodP交换PubA和PubBZ=PUbBAPriAmodPinitiatorresponsorB:Pl较大的成数GPriB(医机产生)PUbB-GAPriBmodPZ=PubAPriBmodPZ就是共学金甘J,两个自我产生的Z良相同,它是用来产生3个SKEYlD的素材IKE阶段四(主模式):发送消息4initiator:SKEYlD_d;SI在在此次阶段用,用来计算后续的【K
8、E密物资四;SKEYlD_“:低列ffi共享密包,供应IKE数楙完祭性和认证;SKEY】D-e:用来加密卜席段的message,data,presharedkey,包括次阶段.IKE阶段五(土模式):发送消Q5initiatorresponsorIdentityPaykad:用于。份标iHHashPayload:用来认证以上2个负我都用SKEY1D.C加密IKE阶段六(生模式):发送消息6tnitiatorresponsor同样定义组策略,按并用SKEYlDe加密:EncapsulationESPIntegritychecking-SHA-HMACDHgroup-2Mode-TunnelIPS
9、ec阶段二(快if模式):发送消12initiator*responsor网上,主要是0洎息1策略的一个确认.在发送港总3而,用SKEYID.d,DH共享率仍,SPI等产生真正用来加电数1的密册.IPSec阶段三(快je模式):发送消恩3initiato-responsor用来核实responsor的Iiveness,至此,整个IPSeC协商的两个过程已f完成,两端可以进行平安的数据传输.实现:ike协议我们主要是逋过利川开源软件ipsec-took来实现的,责任:负责IPSeC的代码BUG解决(BUG-M多,就不列出了),IPSeC的证书中请Rl本编写(探讨了。pens制,IpMC-toot
10、e*fleayjnit(opensli初始化mitkconf(;本地配置文件初始化mitrmConf();远雄配Ji文件初始化oaklcy_dhinit();/dh算法初蛤化COmPUte-VCndOridS();/dpdparseac.av);佐进来的叁故分析PlOginit(|;本地H志初蛤化PfkeyjniW/内核接Uaf_kcy初始化,主要足向内核注册xukmpJnitaSAKMPwPGNnCO1.D)isakmp配置初始化CfParse);配置文件分析,别I1.赋位给相应雄构体session。;主要会话卜而是session诵数怛面的实现:SChedJnItO;调度初始化inij3ig
11、nal(;信号初始化adminjnitsetke,racoonctl的连接Il初始化initmyaddr);初始化本地地址sakminit/Isakmp初蛤化initfdsD;初纺化Sdect的套接字natt.kccpalivejnit(ljM4fr1tnat协商的相关内容for(I-O;iV-NSIG;i+)信号的相应保存变ht初始化sigreqi)-0;ChakSigrCq():检测地否收到“信号error-select(nfds,&rfds,(fd_sct)O.|fd_sct,)0,timeout);/多路监听admin_handler;/HkWrfIsetkey和racoonctl的f
12、d触发,调川该函数处理ISakmP.handler(psock);监所到Ike连接信想和Ike协商倍1处理函数PfkCyJiandlcrl);粒所的内核af_kcy发上来的信息处理函数(包含发起ikc协商等)i*kmp_hndler(hsock上函数垠Ahfl要的近鼓站is;ikmp_mjiin(sakmphandler(p-sock);()这个语故里面除了政累包有效性检森外,Ph1.main()第阶段曲机quickBlnainO此次阶段处理由数,这两个函数最求集.这两个函数内分别用了一个玳姿的铝构体:如下PhIeXChangeiH)整个racoon就钵这个站将体来进行协商.(可以说是应穿整个
13、ra8on)staticint*ph1exchange21PHASE1ST_MA)_PaStrUCtph1handle*,vchar_t*)-*error*/(O,0.).IdentityProtectionexchange!nostatcl.idcntjlscnd.nostatcl,idcnt_i2rccv,idcnt_i2scnd.identJ3rec.denti3send.identJ4recv.ident_i4send.nostate1.1,(nostate1.ident_rlrecv,identrlsend,ident_r2recv.ident,r2sendtidcncr3rccid
14、cnt_r3scnd.nostatcl,nostatcl.nostatcl.hAggressiveexchange/Jinostatcl.ag&_ilscnd.nostatcl.ag&_)2rccv.agg_i2scnd.nostatcl,nostatcl,nostatcl,nostatcl.nostatcl,)lnoxtatel.aggrlrecv,agg_rlxmdlar2recv.agg-r2sendnostate1,nostate1,nostate1.nostate1.Iiostatelt).1.Baseexchange/nostate1.base1send,nostate1,base
15、.i2recv,base_i2send.bascJ3rccv.bascJ3scnd,nostatcl.nostatcl,nostatcl.I,noSUHe1,nstatel,nostatel,nostatel,nostatcl,),可以衣的列上面有第一阶段有三个校式的发送和报爻所数(main.Aggressive,base);世中有斑一个模式下的交互消息一个而散.同时也仃蛉证函数.段如熟识几种模式的发包流程,信任通过雨政定义的名字就可以轻松知道而数是F嘛用的了,(阳就存在状态推断而鼓,发送和接收函保,每个阶段懈不同)以上由故会粕Ph1.InainO调川,在PfkojuIndIerI)阳川的则是
16、办商发起方。staticintCph2exchange211PHASE2ST-MAX)-,P(stncth2handle*,vchar,t*)-*error,fM*QuickmodeforJKE,/Inostatc2.nostatc2,quick_ilprcp,nostatc2,quickjlsend,quickJ2rev,quickJ2send,quickJ3rec,nostate2,nostate2,1,nostate2,quick_rlrecv,quick_rlprep.nostate2,quick_r2send,quick_r3rocv,quick_r3prcp.quick.r3scn
17、d,nostatc2.nostatc2,1h;可以行列上面的其次阶段即快速KJ式卜的发送和报受函数.这些函数就是ike其次阶段呼商运用的,典中有二阶般的每个包的发送和接受.状态函数.具体是怎么实现的请参n相也的源代码.以上的ph2handlc会在,quick.main0中议用.各个处理方法和流用参考代码簿可以/这就是或许能租,共中J能会涉与到。Pen$3编码问题(第一阶段的算法为二阶段的传递信息婚63),日本分析:编写选出特定存息的脚本通过awk的传舂和让AWK进行处理.UmakmdfUrMdf:图】,tcp/ip博状枚AFNET运行结构图(包含IPSEC,netfilter,a1.key)A
18、UfiZterjBTWH,netfilter定义了一个二都的显表头数州structlist.headnf_hooksNPRoTOIlNF_MAX_HoOKS侏表示全部协议族的缶个挂接点,NPR。TO假为32,硼去示Iinux所支持全解32个协议族(include/IinUX/socket.h文件中定义),也就是运用SOCkeU2)函数的第个参数的(ft.如U联网的TCP/JP博议族PFJNET(2),每个陟仪族有NF-MAX_HOOKS(8)个挂接0,但实际只用了如1:所述的5个,数班中舔个元素表示一个协议族在一个挂接点的处理Sl表头。例如:ftIPv4(PFNET协议族)下,各拄接点定义在:
19、NFP.PRE.ROUTING中,在IP枚雅利接收skMIff包后处理,挂接点在在netipv4ipjnput.c的诉敛ntip_rcv(8tructskbuffkb,structnet_device*dev.structpacket_typept)4运用:returnNF.HOOKPFJNET,NF_IP_PRE_ROUTING,skb,de,NU1.1.ip_rcvJinish);挂接点的操作由给构structnf.hook.opa定义:include/linuxnctfiltcr.hstructnf_hook_ops(structhstheadlist;/,衣头.用于将此结构接入接作鞋衣
20、*Userfillsinfromheredown.*/n1.hookfnhook;体J子函数intpf;协议族inthooknum;挂接点如:PREROUTING*Hooksareorderedinascendingpriority.*/intpriority;/fta优先级列会:NFP-PR1.FIRST“INT,M1N.NF_IP_PRI_CONNTRACK-200,NFJP.PRIMANG1.E-ISO.NFP_PRI_NAT_DST=-100tNFJP_PR1.FI1.TER=0fNFP_PR【_NAT_SRC,100.NEJP_PRl_1.AST-(NT.MAX心yea3MH快痛,,
21、曲出曲64MWWXJG禽于N懒岫.访BUt)Inarr11crvinit11在*正接字观作帚故内核中PF-KEY实现要完成的功能是实现扯护内核的学安联:S(SA)和平安策略(SP)数据库,以与和用户空间的接SPiraMXtn誉搐字It七之H的11操作.这W“注册热相体PftKy*vk大小,拄按册或PrMIJi”中色壮如如(niiy处巴pep.mprWPVMidniMXUixnPF-KtY8.把内核HMHJAeyfCtt帝M幻部构悴netJmmTP卜Nlf门中F耍安弁”构件MX1.i2Htt汴情教结构幺p,.*/rwlock_tlock;atomicre(cnt;structtimerlistt
22、imer;u8type;u32priority;u32index;structxfrmselectorselector;structxfrmjifctimc-cfglft;structXfrmJifctime-CUrcurlft;structdst-entr*bundles;_u16family;_u8action;_u8flags;_u8dead;_u8xfrm_nr;structxfrm_sec_ctxsecurity;structxfrm_tmplxfrm_voc|XFRM_M/X_DEPTH);hfUUUfOritmtESP,tinakanei琳StnKtjUf加潮的UF利:SVfeJM/(主育Detatb中注福关触处看装,iptMeDCtaterMf11,EM,*)OterMUf(主夫育Utb中注Jg关的处,iptableetfUterMf11,菊M,,)Wfi*(主DetOttr中注舞关fgJUt,AJJHptaiaeanetfOterMfaf知落,,)EJMW(主帅nwhb中注*美依处量明黑上皿血8与netltb始皿痢皿F,)典他正在探讨中的替略.