NAT及PPPoE协议原理入门.ppt
,上海寰创网络科技有限公司,NAT及PPPoE原理入门介绍,7/7/2023,上海寰创网络科技有限公司,课程提纲,不同NAT类型工作原理,实践:如何测试厂园网关NAT类型,PPPoE协议简介,NAT作用及分类,PPPoE LCP及认证阶段原理流程,PPPoE NCP阶段原理流程,PPPoE发现阶段原理流程,NAT概述,背景:随着互联网尤其是移动互联网的普及,IPv4地址变得匮乏,在IPv6普及之前,NAT很好的解决PC、移动终端等设备接入互联网的需求。,优点:节省稀缺的公网IP:局域网内的所有主机只需要一个公网IP便可以上网,同时也节省了购买IP的费用;增强了连接到internet灵活性,网络变动时无需重新规划IP。,缺点:地址转换会引起传输延时、以及性能影响;无法进行端到端的IP路由追踪;导致某些应用无法使用,比如VoIP、VPN等。,NAT是什么?,NAT(Network Address Translation)-网络地址转换RFC 3022-Traditional IP Network Address TranslatorRFC 1918-Address Allocation for Private InternetsRFC 2993-Architectural Implications of NATRFC 3027-Protocol Complications with the IP Network Address TranslatorRFC 3235-Network Address Translator(NAT)-Friendly Application Design Guidelines将私网IP地址转换为公网IP地址,实现多个主机共享公网IP;工作在网络层和传输层;,NAT分类,Basic NAT(基础NAT)NAPT(Network Address Port Translation网络地址端口转换)Cone NAT不受限Cone NAT(Full Cone NAT)受限Cone NAT(Restricted Cone NAT)端口受限Cone NAT(Port-Restricted Cone NAT)SymmetricNAT(对称NAT),Basic NAT,报文经过Basic NAT时,Basic NAT将报文的源IP地址从私网IP转换为公网IP,但对报文的TCP/UDP端口不做转换。Basic NAT一般用在NAT设备有很多公网IP的时候,由于它只对IP址进行转换,所以,内网主机访问外网服务的时候,内网中的每台主机都要绑定不同的公网IP,在IPv4地址紧缺的当下,该技术已经被淘汰;,Full Cone NAT,Private Host私网主机发送一个报文到公网主机Public Host A.NAT会创建一个私网/公网的映射表项(记录sport和sip映射关系):将私网主机的源private port(2210)转换为外部端口public port(8801).NAT会接收任何访问该端口地址的报文(Public Host A or Public Host B),并将该报文的目的public port(8801)转换为private port(2210)发送给私网主机.,Private Host,NAT Device,Public Host A,Public Host B,Private IP Address Realm,Public IP Address RealmInternet,UDP Packet,UDP Packet,s=192.168.1.100:2210d=10.0.0.5:1234,s=10.0.0.4:8801d=10.0.0.5:1234,NAT bindings to 192.168.1.100:2210d=10.0.0.4:8801-s=ANY,UDP Packet,UDP Packet,s=10.0.0.5:1234d=192.168.1.100:2210,s=10.0.0.5:1234d=10.0.0.4:8801,UDP Packet,UDP Packet,s=10.0.0.5:4321d=192.168.1.100:2210,s=10.0.0.5:4321d=10.0.0.4:8801,UDP Packet,UDP Packet,s=10.0.0.6:1234d=192.168.1.100:2210,s=10.0.0.6:1234d=10.0.0.4:8801,UDP Packet,UDP Packet,s=10.0.0.6:4321d=192.168.1.100:2210,s=10.0.0.6:4321d=10.0.0.4:8801,s=souce address:portd=destination address:port,Full Cone NAT,Restricted Cone NAT,Private Host私网主机发送一个报文到公网主机Public Host A.NAT会创建一个私网/公网的映射表项(记录sport和sip映射关系、并记录外部主机的IP):将私网主机的源private port(2210)转换为外部端口public port(8801).只有NAT映射表项中有记录的外部主机才可以访问特定端口:Public Host A访问 public port(8801)时,报文的目的端口转换为private port(2210)发送给私网主机,Public Host B访问public port(8801)时,将会被丢弃.Private Host发送一个报文到Public Host B.NAT会为该私网主机再创建一条private port(2210)-public port(8801)的地址映射表项.此时Public Host B访问(8801)时,报文的目的端口将会被转换为private port(2210)发送给Private Host.,Restricted Cone NAT,Restricted Cone NAT,Port Restricted Cone NAT,Private Host发送一个dport为1234的报文到Public Host A.NAT会创建一个私网/公网的映射表项(记录sport和sip映射关系、并记录外部主机的IP和端口信息):将私网主机的源private port(2210)转换为外部端口public port(8801).只有来自于Public Host A且sport为1234的报文,访问public port(8801)时,报文才会被发送到Private Host,报文的目的端口被转换为private port(2210)Public Host A用源端口为4321访问public port(8801)时,将会被丢弃.Public Host B访问public port(8801)时,将会被丢弃.,Port Restricted Cone NAT,Port Restricted Cone NAT,Symmetric NAT,与Cone NAT不同,Symmetric NAT并不会对会话进行端口绑定,而是会给每一个新的会话分配一个全新的公网端口.当Private Host给不同的Public Host或端口发送报文时,NAT会重新分配一个public port.对入方向报文的要求同Port Restricted Cone NAT,除了检查目前IP和端口是否在映射表中,还要检查报文的sip和sport,只有这些都满足要求才会被转发到Private Host.,Symmetric NAT,Symmetric NAT,如何测试厂园网关NAT类型,Unreachable,PC1 LAN Site,Gateway,PC2 WAN Site,PC3 WAN Site,LAN IP Address 1716,External network,172.16.2.10,UDP Packet,UDP Packet,s=172.16.2.10:2210d=200.200.3.233:1234,s=192.168.11.2:2210d=200.200.3.233:1234,UDP Packet,UDP Packet,s=200.200.3.233:1234d=172.16.2.10:2210,s=200.200.3.233:1234d=192.168.11.2:2210,UDP Packet,s=200.200.3.233:1235d=192.168.11.2:2210,UDP Packet,s=:1234d=192.168.11.2:2210,s=souce address:portd=destination address:port,Unreachable,UDP Packet,UDP Packet,s=172.16.2.10:2210d=200.200.3.234:1234,s=192.168.11.2:2210d=200.200.3.233:1234,UDP Packet,s=200.200.3.234:1234d=192.168.11.2:2210,UDP Packet,s=200.200.3.234:1234d=172.16.2.10:2210,Step 1,Step 2,Step 3,网关为Port Restricted Cone NAT,试验1:网关LAN侧PC1向PC2发包,进行UDP打洞.试验2:PC1和PC2分别访问网关已经开放的端口,并在LAN侧PC抓包,发现网关对入报文的源端口和源IP都有限制,即必须是LAN侧PC曾经访问过的外部主机的某个端口后,只有这台外部主机用对应的端口才能访问,从上述特征可判断网关为Port Restricted Cone NAT或Symmetric NAT.LAN侧PC访问一个新的外部主机(源和目的端口不变),网关查看NAT映射表发现,对于一个新的会话,网关不会重新生成一条NAT表项(新的外部端口),由此判断网关为Port Restricted Cone NAT.附件为上述测试全过程.,PPPoE协议背景及概述,背景:随着宽带网络技术的不断发展,以xDSL、CableModem和以太网等主流宽带接入技术的应用。对于各大网络运营商而言如何有效的管理用户、宽带计费的问题就变得更加突出。1998年Redback网络公司联合UUNET公司和RouterWare软件公司开发了以太网上点对点协议PPPoE技术,并得到了IETF的认可于1999年2月被ETF接收,以RFC2516发布。,优点:节省稀缺的公网IP:局域网内的所有主机只需要一个公网IP便可以上网,同时也节省了购买IP的费用;增强了连接到internet灵活性,网络变动时无需重新规划IP。,缺点:二层协议、不能跨越路由;报文被PPP头封装、以及收发设备需对报文进行PPP封装/解封装,增加了设备性能开销、以及带宽传输效率降低;PPP链路需要收发设备定期维护,容易产生PPP链路不稳定以及PPPoE拨号兼容性等问题。,PPPOE协议简介,PPPOE是 Point to point over Ethernet 的缩写,是建立在PPP协议基础之上的,在以太网上传输PPP的一种协议。PPPOE 协议提供了在广播式的网络(如以太网)中多台主机连接到远端的BAS(宽带接入服务器),满足在Ethernet 上实现对每个用户进行接入控制和记费。PPPOE协议主要分为发现和会话两个阶段,可细分为5个阶段:PPPOE发现阶段PPPOE LCP建链及维护PPPOE 认证阶段PPPOE NCP(IPCP)阶段PPPOE会话阶段,PPP协议相关RFC,PPP协议工作原理,PPP协议是数据链路层协议的中使用最广泛的一种,它能够为上层协议(包括TCP/IP,IPX,AppleTalk)提供很好的支持。PPP 协议为用户提供了PAP/CHAP两种不同的加密方法。PPP协议定义了两种协议规范:LCP:链路控制协议NCP:网络控制协议,LCP协议工作原理,LCP(Link control protocol链路控制协议)协议是PPP协议的一个子集,主要是负责数据链路的建立、协商、维护及终止。当主机协商PPP连接时,协商双方交换LCP分组:检查ID(标识域)是否匹配、协商认证方式、携带自己所期望的配置参数(比如MRU)。LCP分组能够使链路两端能够动态的协商参数,其中包括了认证、压缩和MLP。在LCP分组中的协议域是用来定义不同的三层协议。LCP报文主要分为:1链路配置报文:Config-Request、Config-Ack、Config-Nak和Config-Reject四种报文;2链路终止报文:Terminate-Request和Terminate-Ack两种报文;3链路维护报文:Echo-Request和Echo-Reply两种报文;,NCP协议工作原理,NCP(network control protocol网络控制协议)协议是在二层连接建立后用来协商网络层的网络参数。每种第3层协议都有自己的NCP。例如 IP的IPCP,IPX的IPXCP。NCP还有在一条链路上建立和中断多种第三层协议会话的功能。,PAP/CHAP 加密算法,CHAP(Challenge Handshake Authentication Protocol)询问握手认证协议,在PPP初始链路建立后,BAS通过三次握手机制来验证对端,流程如下:认证者向对端发送随机“挑战”消息:PPP CHAP Challenge;对端对该挑战信息及密钥用单向哈希函数计算出的值做应答:PPP CHAP Response;认证者用相同的计算方法,验证自己的计算结果和收到的结果是否一致,如果一直则认证通过;否则认证失败连接终止。响应PPP CHAP Success/Failure;PAP(Password Authentication Protocol)口令认证协议,是PPP中的基本认证协议,是普通的口令认证,要求将密钥信息在链路中明文传输,因此容易被sniffer监听而泄漏。,PPPoE协议流程(一),PPPoE协议流程(二),PPP&PPPOE报文结构,版本(VER)字段和类型(TYPE)字段长度均为4比特,在当前版本PPPoE建议中这两个字段值都固定为0 x1。CODE字段长度为8比特,根据两阶段中各种数据包的不同功能而值不同。在PPP会话阶段CODE字段值为0 x00,发现阶段中的各步骤中的各分组格式参见下面的介绍。SESSION_ID字段长度为16比特,在一个给定的PPP会话过程中它的值是固定不变的。LENGTH字段为16比特,指示PPPoE净荷长度。Payload(净载荷)字段,发现阶段PPPoE载荷可以为空或由多个标记(TAG)组成,每个标记都是TLV(类型长度值)的结构;而在PPP会话阶段该域则携带的是PPP报文。,PPPOE报文字段介绍,PPP的协议域分类,PPP帧中的协议域包含了第三层的协议ID,LCP根据不同的协商参数可以修改标准的PPP帧结构。,PPPOE协议发现阶段,PPPOE发现阶段共分为4个阶段:PADI(PPPOE Active Discovery Initiation)在该阶段PPPOE client 以广播方式发送PADI报文,用于发现可以接入的集中器,并附带其请求的服务标识;PADO(PPPOE Active Discovery offer)在该阶段PPPOE以unicast的方式发送给它识别到的client,并确认client所请求的服务;PADR(PPPOE Active Discovery Request)在该阶段 PPPOE client通过该报文来选择接入的PPPOE server;PADS(PPPOE Active Discovery Session-confirmation)该阶段为PPPOE协议发现阶段的最后一个阶段,PPPOE server会为该次的PPPOE会话分配一个session ID。该ID唯一标识一次PPPOE连接。,PPPOE Tag标记,PPPoE发现阶段的净载荷域称为Tag、会话阶该域段承载PPP数据报文。PPPoE Tag格式:,Tag类型分类及作用:,PADI报文,1)Dst:PADI目的地址为广播;2)以太网类型:0 x8863(发现阶段帧类型)3)Code:PADI为0 x09;4)session ID:为0,表示未分配,PADO报文,1)PADO:可能会有多个Server响应;2)Code:PADO为0 x07;3)AC-Name:AC的hostname,客户端用于区分多台AC;,PADR报文,1)Code:PADR为0 x19;2)以太网类型:0 x8863(发现阶段帧类型),PADS报文,1)以太网类型:0 x8863(发现阶段帧类型);2)Code:PADS为0 x65;3)session ID:服务器分配唯一会话ID,后续通信双方报文的session ID必须用该值填充,以此来标记会话;,PPPOE的LCP阶段(报文流程),PPP LCP Config过程:,PPP LCP链路维护(保活&会话终止):,收发双方会定期发送LCP Echo-Request报文等待对端响应LCP Echo-Reply,进行PPP链路保活;若设定时间内未收到Echo-Reply响应报文,则PPP链路超时断开连接。,认证双方协商参数,包括:MRU最大接收单元、后续认证方式。如果协商参数不匹配,对端会reject拒绝掉,同时会话会终止。,PPPOE的LCP阶段(报文介绍),LCP报文主要分为:链路配置报文、链路终止报文、链路维护报文;LCP Configuration request:该报文用于双方发起LCP协商。LCP Configuration ACK:该报文用于对request报文做出认可的回应。LCP Configuration NAK:该报文用于回复LCP request packet 报文中可以识别,但不能接受的选项。LCP Configuration Reject:该报文用于对request报文所列出的选项不可识别或者全部不能接受而作出作出拒绝的回应。Discard-Request:性能测试,对端无需响应。Identification:用于维护PPP连接的连通性。LCP:用于发起PPP压缩方式的协商,分为PPP头部压缩和PPP上层协议头压缩,以节省带宽。,PPPOE的LCP阶段(报文介绍),LCP Terminate-Request/ACK:用于中断一个PPP连接。Echo-Request/Echo-Reply:用于PPP链路保活。PAP Authenticate request:用于发起认证请求。PAP Authenticate ACK:用于确认账号的正确性。CHAP Challenge:向对端发送随机“挑战”消息。CHAP Response:对端对该挑战信息及密钥用单向哈希函数计算出的值做应答。CHAP Success/Failure:认证者校验对端hash计算的值是否正确,并作相应应答。,PPPOE的认证阶段,CHAP认证过程(3次握手):,PAP认证过程:,PAP认证时,账号和密码以明文形式透明传输,认证者向对端发送随机“挑战”消息:PPP CHAP Challenge;对端对该挑战信息及密钥用单向哈希函数计算出的值做应答:PPP CHAP Response;认证者用相同的计算方法,验证自己的计算结果和收到的结果是否一致,如果一直则认证通过;否则认证失败连接终止。响应PPP CHAP Success/Failure;,PPPOE的IPCP阶段,IPCP request packet:用于发起协商网络参数,包括:IP、DNS、NetBIOS等。IPCP ACK/Reject packet:用于对请求服务的确认/拒绝。IPCP NAK:服务器给对端提供协商的网络参数,包括IP、DNS等。,谢谢!,