实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇
  xpmJefiPD9zg 2023年12月12日 27 0

作者:网络之路一天  首发公众号:网络之路博客(ID:NetworkBlog)

实际中专线是如何对接的--华为篇

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端

实际中,出口路由器是如何对接到互联网的(DHCP方式)

上一篇的DHCP对接就是把出口路由器对接运营商光猫过来的口配置成DHCP client方式自动获取即可,那外网专线如何对接呢?

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_02

专线其实是跟DHCP一样,非常简单的对接模式,在运营商柜台办理完成后,装机师傅同样的来把光纤以及猫的数据打通,跟DHCP或者下面讲解的PPPOE不一样的是,专线的特点是会有固定IP地址,并且这个地址是公网IP,比如上图,运营商派过来的装机师傅,通常会把地址、掩码、网关、DNS信息都写在猫上面,或者有一个纸质内容写明,这样我们就知道地址设置多少了,回想下DHCP的方式,它地址是有光猫下发,通常为192.168.1.0/24、192.168.2.0/24,这两种,是私网地址,那它怎么能够去访问互联网呢?(这个问题留在下一篇解答)

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_03

之前学过子网划分,提到过解决地址浪费的情况,都会把一个大的网段划分成小的来分给某个区域,或者某个公司,所以在实际中经常可以看到掩码/30、/28、/26这样的掩码组合,这个不用太过担心,师傅都会写明多少的,我们按照这个填写即可。而且这个对接就是我们之前学过的,两台三层设备之间如何对接,在出口路由器对接的口配置运营商给的地址、掩码,而网关指的就是运营商那边设备的地址,默认路由的下一跳地址就会写这个,是不是跟内网的三层之间对接没啥区别

#出口路由器配置更改
[AR1200]int g0/0/1
[AR1200-GigabitEthernet0/0/1]ip address 219.135.2.55 26


#internet路由器配置更改
[internet]interface  g0/0/1
[internet-GigabitEthernet0/0/1]ip address 219.135.2.1 26
Info: IP pool on this interface has been deleted.




//出口路由器改动是把接口配置了一个IP地址,配置后,接口下面的DHCP client模式就失效了,internet路由器的接口把地址从原来的192.168.1.1变成了219.135.2.1,还有一个细节的地方,原本接口是开了DHCP的,地址改变了,提示基于接口的DHCP服务也被删除了。


实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_04

这个时候直连就通了,因为在一个网段,三层设备是路由器不涉及VLAN,自然是可以通的,

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_05

但是会发现到互联网却不通,这个时候第一反应就应该是检查路由表

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_06

改成专线以后,跟平时三层对接一样,需要IT人员手动去写静态或者默认路由,并不会自动生成的,这个要注意下。

#手动写默认路由 

[AR1200]ip route-static 0.0.0.0 0.0.0.0 219.135.2.1

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_07

这里出口路由器就能ping通互联网的资源了,下面的PC还是访问不了,因为运营商那边没有路由过来,这里在强调下,实际中运营商也不会写,所以这里就不在写回程路由了(下一篇马上就会学习到NAT技术了)。

有用的知识点汇总:静态专线对接其实非常简单,跟平时的三层对接是一样的,在一个网段,信息填写对了,自然就可以对接成功,注意的是,需要写默认路由,否则数据过来,它无法转发。(这个对接信息是运营商给的,我们按照信息正常配置即可)

实际中拨号网络,该怎么对接?(华为篇)

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_08

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_09

这个相信都非常熟悉,电脑拨号去上网,早期主流的上网方式,近几年家庭环境都改为DHCP模式(猫拨号),但是拨号网络在企业网里面是比较常见的,其实,不管是电脑去拨号、还是家用路由器、企业路由器,他们的原理方式是一样的,都是客户端去寻找拨号服务器,然后服务器响应,在协商对应的参数,这个技术叫做PPPoE(point-to-point over Ethernet,以太网上的点对点协议)

(1)PPP协议

PPP叫做点对点协议,是二层数据链路层里面的协议,在网络基础篇里面讲过,数据链路层里面除了以太网以外其实是有非常多的协议的,比如ATM、PPP、HDLC,这些协议主要都用于广域网上面,物理介质使用的不一样,记得博主小时候家里拉宽带好像是4M还是8M,那时候用的并不是猫,而是一个叫做model(调制解调器)的设备,协议使用的就是PPP来做用户认证以及计费、审计的功能,但是随着时间的推移,以太网逐渐成为主流,特点是廉价、高速,像ATM、PPP、HDLC慢慢的边缘化,很少在看到了。


(2)PPPoE协议的由来

以太网成为主流后,给运营商带来了一个很头疼的问题,以太网是没有认证、计费、分配地址等功能的,而PPP协议与以太网是两个不同的协议,这样的情况下PPPoE协议就出现了,该协议把PPP跑在以太网上面,利用以太网做承载,这样既可以利用以太网的介质,又保留了PPP的功能,所以现在主流的宽带拨号使用的都是PPPoE协议,接下来,我们来模拟一下这样的环境。

(3)PPPoE环境搭建

PPPoE属于C/S模式,运营商那边有对应的BAS设备做接入服务器,像个人电脑、家用/企业路由器等设备作为客户端来进行拨号到服务器,那我们这里肯定是没有BAS设备,但可以用互联网的路由器模拟拨号服务器,出口路由器用于拨号来进行上网,来尽量的与实际环境贴近。

#去掉接口地址(之前静态专线)
[internet]interface  g0/0/1
[internet-GigabitEthernet0/0/1]undo  ip address 


#PPPOE服务器---地址池创建
[internet]ip pool pppoe
[internet-ip-pool-pppoe]network  123.1.1.0 mask  24
[internet-ip-pool-pppoe]dns-list 114.114.114.114
用于给客户端分配地址


#PPPOE服务器---虚拟模板
[internet]interface  Virtual-Template 1
[internet-Virtual-Template1]ip address 123.1.1.254 24
[internet-Virtual-Template1]ppp authentication-mode pap 
[internet-Virtual-Template1]remote address  pool pppoe
配置一个地址,调用地址池,采用什么方式认证,这里要说下,实际中,这个接口地址其实是不需要跟地址池在一个网段的,这个PPP里面的特性


#PPPOE服务器---接口调用虚拟模板
[internet]interface  g0/0/1
[internet-GigabitEthernet0/0/1]pppoe-server  bind  virtual-template 1
跟以太网接口绑定起来,这样该接口能够响应PPPoE的请求,另外注意这个需要在三层以太网接口调用,二层是不支持的。


#PPPOE服务器---用户名密码
[internet]aaa
[internet-aaa]local-user ccieh3c password cipher  ccieh3c.com             //创建一个用户名ccieh3c,密码ccieh3c.com, 实际根据规划来创建
Info: Add a new user.
[internet-aaa]local-user  ccieh3c service-type ppp            //定义一个权限,PPPoE拨号为PPP


整体配置下来的意思是当G0/0/1口收到PPPoE拨号请求后,就会用virtual-template 1模板的参数来下发,比如地址池,用户认证采用本地数据库创建的来进行查找,如果有,则允许拨入,没有则拒绝。
#配置前的修改(针对之前配置的静态) 
[AR1200]interface  g0/0/1
[AR1200-GigabitEthernet0/0/1]undo ip address
#
[AR1200]  undo ip route-static 0.0.0.0 0.0.0.0 219.135.2.1


#PPPoE客户端--创建拨号接口
[AR1200]interface  Dialer  1                    //创建拨号口,编号可以任意
Oct  4 2021 10:58:48-08:00 AR1200 %%01IFPDT/4/IF_STATE(l)[0]:Interface Dialer1 has turned into UP state.
[AR1200-Dialer1]dialer user ccieh3c              //定义拨号用户名
[AR1200-Dialer1]dialer bundle 1                   //定义一个绑定号,后续关联物理接口
[AR1200-Dialer1]ppp pap local-user ccieh3c password  simple ccieh3c.com            //输入宽带的账号密码
[AR1200-Dialer1]ip address ppp-negotiate                              //地址自动获取


#PPPoE客户端--调用物理接口
[AR1200]interface g0/0/1
[AR1200-GigabitEthernet0/0/1]pppoe-client dial-bundle-number  1                    //关联绑定号,物理口就会用对应拨号口的信息去拨入

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_服务器_10


调用后发现有一个提示,IPCP 协商失败,原因IP地址与本地地址相同,这个是什么情况呢?

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_11

可以发现,服务器把123.1.1.254给分配给客户端了,但是这个地址在本地接口存在的,所以才会出现上面这样的报错,现在需要做的是把该地址排除掉,这个过程跟DHCP是一样的。

#PPPoE客户端---关闭接口
[AR1200]interface  GigabitEthernet 0/0/1
[AR1200-GigabitEthernet0/0/1]shutdown 


#PPPoE服务端---保留地址
<internet>reset ip pool name pppoe all
Warning: If the IP addresses that are being used are reclaimed, may influence normal user in the network. Are you sure to continue?[Y/N]:y


<internet>system-view 
[internet]ip pool pppoe
[internet-ip-pool-pppoe]excluded-ip-address 123.1.1.254




#PPPoE客户端---开启接口
[AR1200]interface  GigabitEthernet 0/0/1
[AR1200-GigabitEthernet0/0/1]undo shutdown

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_服务器_12


开启后,可以看到接口都显示up了,来看看地址。

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_服务器_13

已经获取到地址了,与以太网不一样的是,这个地址是32位的

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_服务器_14

在来说下一个疑问,在上面客户端会弹出说地址与本地相同,正常情况下123.1.1.254在服务器,冲突也是服务器可以感知到,客户端是怎么知道冲突的呢?这就是PPP的特性,以太网是一个多路访问的特性,PPP则是点对点,在这个链路上面不是自己就是对方,不存在其他设备,通过PPP协议对接成功后 ,会生成一个自己以及对方的地址在路由表中,这个就是为什么客户端能感知到冲突原因,之前分配给客户端是123.1.1.254,加上PPP的特性,会在路由表中生成自己与对方的直连路由,

服务器那边也是123.1.1.254,自然就冲突报错了。

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_15

服务端也会生成客户的直连路由。

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_16

但是访问61.128.1.1是不通的,这是因为这里没写默认路由,这个就是重点了,很多人在这里会犯迷糊。

#出口路由器配置默认路由
[AR1200]ip route-static 0.0.0.0 0.0.0.0 Dialer 1


实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_服务器_17


ping就通了,现在迷糊的就在这,怎么拨号网络中不写下一跳地址的吗?拨号网络是不需要写下一跳的,也无法“写”

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_18

后面跟参数看明明是可以写下一跳的,为什么说无法写呢,这里说的无法写,就需要结合PPPoE的原理以及实际的环境来了解了。

(4)了解PPPoE拨号原理

#客户端操作---去掉拨号
[AR1200]interface  g0/0/1 
[AR1200-GigabitEthernet0/0/1]undo pppoe-client dial-bundle-number  1

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_19

开启互联网的G0/0/1口抓包,这样同时分析,更加印象深刻

#客户端操作---调用拨号
[AR1200]interface  g0/0/1 
[AR1200-GigabitEthernet0/0/1]pppoe-client dial-bundle-number  1


实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_20

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_服务器_21

总共分为三个阶段,一个Discovery,一个Session,一个Terminate,这个其实不是难理解,它有些原理跟DHCP是类似的

1、Discovery阶段

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_22


客户端接口启用PPPoE client后,会广播发送PADI报文(PPPoE Active Discovery Initial),来寻找PPPoE服务器(这个像不像DHCP客户的寻找服务器的过程)

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_23

服务端收到PADI报文后,会单播回应PADO(PPPoE ActiveDiscover Offer)报文,告诉客户端有服务器存在的,里面会携带自己的name名字

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_24

客户端这个时候知道了服务器的MAC地址以及name,直接发送PADR(PPPoE Active Discovery Request),单播请求服务器,表示相和服务器建立通信。

服务端收到以后,生成一个唯一的会话ID(抓包看到的Session ID),用于标识某一个客户端的会话 ,也是为了方便区分,通过发送PADS(PPPoE Active Discovery session-configramation)把这个报文发给PPPoE client,这个时候就开始进入PPPoE Session阶段。

有用的信息:Discovery阶段主要是客户端去发现服务器,并且由服务器产生一个唯一的会话ID,以太网的type标识为0x8863。


2、Session阶段

PPPoE Session阶段分为两个部分,一个是PPP协商阶段,二是PPP数据传输阶段。

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_25

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_26

协商阶段第一部分是认证与参数协商,这里3b:47是客户端,45:85是服务端,其中服务端会携带MRU参数(跟以太网的MTU一个概念,名称不同),还会询问对方是否支持PAP认证(密码认证协议),客户端这边也会携带MRU参数,可以发现服务端的是1492,客户端的是1500。

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_27

客户端会回应NAK,告诉服务端,我这边的MRU是1500

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_服务器_28

最后,服务端知道了客户端那边MRU是1500,重新发送confgiration request:采取1500,然后采用认证是PAP,客户端回应configuration ACK,表示没问题。

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_29

协商第二阶段是认证阶段,客户端会把自己的用户名密码发送给服务端,这里注意PAP采用的是明文认证,所以抓包可以看到所有的用户名以及密码信息,服务端收到以后回应ACK,表示认证通过,如果这里用户名密码输入错误,会回应NAK,表示在自己的用户数据库中没有找到对应的信息,认证失败。

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_30

认证过后,这一部分就是地址分配阶段了,还记得路由表中为什么会出现双方的直连地址路由吗,就是这里协商得到的。

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_服务器_31

首先,客户端与服务端都会告知对方,自己的地址是多少,客户端默认地址是0.0.0.0,双方收到以后,服务端发现客户端的地址是0.0.0.0,这个肯定不行,于是回应NAK,告诉客户端你用123.1.1.253吧,客户端收到服务端的地址是123.1.1.254,回复ACK表示收到,并且会放入自己的路由表,生成直连路由。

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_客户端_32

于是,客户端请求123.1.1.253的地址,服务端回应ACK表示没问题,然后也在自己的路由表中,生成直连路由。

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_33

剩下的是保活功能,服务端与客户端都会发送Echo Reques,双方收到后,回应Reply,这个就是来探测双方是否正常状态,如果发出去一定时间内没有回应,表示对方出现了故障,就断开连接。

3、Terminate

当客户端与服务器端任何一端要断开,都会发送PADT(PPPoE Active Discovery Terminate)报文,这里收到这个报文后,就不会在发送PPP流量,断开连接。

(4)通过整个抓包跟交互流程得到有用信息以及经验分享

  • 客户端通过二层广播来寻找拨号服
    务器的,只有服务器响应了才会继续下一步操作
    可能现网中存在2~3台以上拨号接入服务器,来处理某一片小区的用户拨入,收到客户端的请求后,都会进行响应,客户端会选择最先收到的回应包作为第一服务端选择,开始单播发送PADR请求,这里可以体现出来了PPP网络中为什么不需要写下一跳的原因,由于这样的环境存在,服务器的地址是不固定的,也表示地址不固定, 这样的情况下,是没办法确定下一跳地址是多少,另外一点就是在PPP的网络里面,建立成功以后,它就是一个点对点的网络,除了自己就是对端,并且路由表会生成双方的直连路由 ,不需要写下一跳就可以,指定出接口,从该接口发出,自然就能准确的到达对端,还需要注意,在PPP的网络里面是没有MAC地址的概念的。
  • 第一个阶段就是发现服务端,这个跟DHCP的交互非常类似,如果连Discovery阶段都没过,说明到接入服务器之间的链路没有打通,这个需要运营商那边协助排查。
  • 第二阶段主要是协商双方的MRU(与以太网的MTU一样),然后开始认证,这里只要客户端的用户名对了,就过了,但是在实际中需要注意的是,PPP里面认证有两种方式,一种是PAP(明文方式),一种是CHAP(挑战握手认证协议),这个安全性更高,所以在实际中,建议配置里面把两种方式都加上,这样不管服务器采用什么认证都可以过。


ppp chap user ccieh3c
 ppp chap password simple ccieh3c.com
 ppp pap local-user ccieh3c password simple ccieh3c.com


//这里PAP与CHAP都用上,这样就万无一失了


接下来就是地址分配,分配的话,只要服务端地址池有地址分配,就可以获取成功,当然也会遇到比如服务端的地址不够的情况下,导致无法正常获取地址,导致PPP建立失败,这个通常会有日志报错,注意下即可。

带来的问题:不知道大家发现没有PPPoE是在Ethernet上面跑PPP服务的,这个带来的问题就是容易造成分片,之前在网络基础里面讲过一个内容,MTU,以太网的MTU是1500,这里来看下封装

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_ci_34

通过抓包可以看到,以太网与IP协议中间,多了两层封装,一个PPP-over-Ethernet Session,它是负责以太网与PPP之间打通的协议,占用6个字节,携带了唯一会话信息ID,以及Code、载荷:86,然后下一层是点对点协议,里面就一个内容,protocl,表示上层协议是多少,这里为IPV4(代码:0X0021),剩下的就是熟悉的IP协议以及ICMP了。

这里说下载荷86个字节的由来:ICMP 64字节(8个头部加56数据)+IP20字节+PPP 2个字节,回到主题,由于PPPoE 6个字节,加PPP协议2字节的增加,这就导致在原本1500的字节上面多了8个字节出来,这样的就很容易出现分片的问题,所以在PPPoE的环境中,建议把MTU以及TCP MSS降低最少8个字节。

#拨号接口修改MTU以及MSS 
interface Dialer1 
 mtu 1492
 tcp adjust-mss 1452
这里是按最严格的减法,1500-8字节,MSS默认是1460(1500-20字节IP-20字节TCP头部)-8是1452,但是实际中,mtu与tcp mss并不是绝对的按这个值的,有的环境可能mtu改到1400,tcp mss改成1350才好用,所以实际按照从大慢慢的递减就行。

DNS问题,拨号有个问题就是不太确定运营商的DNS是多少,那怎么得知呢?除了问运营商外,其实还可以用一个命令来获取DNS

[AR1200-Dialer1]ppp ipcp dns request   //它就会请求运营商来分配DNS

通过display dns server查看,这样就知道DNS多少了

(5)服务端与客户端的配置汇总

#服务端
ip pool pppoe
 network 123.1.1.0 mask 255.255.255.0 
 excluded-ip-address 123.1.1.254 
 dns-list 114.114.114.114 
#
interface Virtual-Template1
 ppp authentication-mode pap 
 remote address pool pppoe
 ip address 123.1.1.254 255.255.255.0 
#
interface GigabitEthernet0/0/1
 pppoe-server bind Virtual-Template 1
#
aaa 
 local-user ccieh3c password cipher ccieh3c.com
 local-user ccieh3c service-type ppp
 


#客户端
interface Dialer1
 link-protocol ppp
 ppp chap user ccieh3c
 ppp chap password simple ccieh3c.com
 ppp pap local-user ccieh3c password simple ccieh3c.com
 mtu 1492
 tcp adjust-mss 1452
 ppp ipcp dns request 
 ip address ppp-negotiate
 dialer user ccieh3c
 dialer bundle 1
#
interface GigabitEthernet0/0/1
 pppoe-client dial-bundle-number 1 
#
ip route-static 0.0.0.0 0.0.0.0 Dialer1

 

实际中,出口路由器是如何对接到互联网的(PPPOE拨号以及专线)华为篇_服务器_35

作者:网络之路一天,公众号:网络之路博客(ID:NetworkBlog)。让你的网络之路不在孤单,一起学习,一起成长。

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年12月12日 0

暂无评论

推荐阅读
  4i8hCvzXKbg6   2023年12月10日   24   0   0 StandardciTime
xpmJefiPD9zg