形容阴天的句子唯美短句
即使是家用路由器,每个接口的IP所在的网段也不能相同。
这个问题可以简化为:为何一台路由器的两个接口IP不能一样?
全局变量
如果问程序员,两个全局变量名可以一摸一样吧?
程序员会强压内心的鄙视与不屑,然后故作轻松地回答,那肯定不能一样啊,系统编译肯定报错!
全局路由表
路由器的接口IP地址所在的网段,可以看作全局变量,全局变量是唯一的,不能冲突,如果有冲突,系统会禁止这样的配置。
举例
一个接口IP = 10.1.1.1/24,另外一个接口也是IP = 10.1.1.1/24,可以吗?
一个接口IP = 10.1.1.1/24,另外一个接口IP =10.1.1.2/24,可以吗?
不可以,两个接口的网段都是10.1.1,冲突了。
有同学肯定不服气,后一种情况,两个接口的网段即使相同,但IP地址却是不同的,冲突在哪里?
我的问题是,如果该路由器收到一个目的IP =10.1.1.3的报文,请问转发到哪个接口?
肯定没法回答我,对吗?
所以路由器的不同接口IP所在网段不能冲突,不是大脑一热临时想出来的,是深思熟虑的结果。
局部变量
有编程经验的同学,还使用过局部变量。所谓局部变量,就是在不同的函数内,可以定义完全相同的变量名,而不会引起歧义。那是因为即使变量名相同,但是由于它们的生存空间没有重叠,所以不会有冲突,这就是俗话说的,井水不犯河水!
VRF路由表
对于运营商来说,一台PE设备可能会端接成百上千的客户CE设备,通常PE使用子接口来完成一个CE设备的端接,比如:
PE G0/0.1001 ----------- CE1
PE G0/0.1002 ----------- CE2
PE G0/0.1003 ----------- CE3
问题来了,这些CE设备往往使用10.0.0.0/8网段的地址,假如CE设备都使用10.1.1.2/24来连接PE设备:
PE G0/0.1001 ----------- CE1 (10.1.1.2/24)
PE G0/0.1002 ----------- CE2 (10.1.1.2/24)
PE G0/0.1003 ----------- CE3 (10.1.1.2/24)
...
这不是逼着G0/0众多子接口都处于10.1.1.0/24这个网段的吗?
上文的全局路由表说过,接口、子接口的IP不能处在相同网段!
如何解决这个问题?
很好办,只要定义G0/0的子接口不在全局的路由表里,而是在一个局部的路由表里,就可以了。
如何定义局部路由表?
VRF路由表,VRF是 Virtual Routing Forwarding的缩写,通俗地说,就是一个用于收纳客户私有路由的小池子。每个VRF路由表天然隔离,井水不犯河水,所以即使G0/0子接口的IP地址是一样的,也不会引起任何歧义。
Interface G0/0.1001
VRF forwarding VRF1001
IP address 10.1.1.1/24
Interface G0/0.1002
VRF forwarding VRF1002
IP address 10.1.1.1/24
Interface G0/0.1003
VRF forwarding VRF1003
IP address 10.1.1.1/24
有了VRF的逻辑隔离,即使每个子接口的IP地址都是相同的,也是一点问题没有。
简单的分析这个问题:
用一个比较普遍的例子
对于 A 的来说的路由表是
192.168.1.1/24, LANWANIP/32, WANdefault, gateway WANIP, NAT
对于 B 来说:
192.168.1.1/24, LAN192.168.1.100/24, WANdefault, gateway 192.168.1.1, NAT
(很显然 B 的路由表是有冲突的)
此时一个设备 C 接入在 B 的 LAN 上, 一般家用路由器进行 DHCP, C 获得了 IP 192.168.1.253/24, 网关于 192.168.1.1.
我们的 C 想上网访问 8.8.8.8 这个 IP, 那么他就打了一个包:
二层: 起点为 C 的 mac, 终点是通过 ARP 协议得知 192.168.1.1 的 B 的 mac
三层: 起点为 C 的 IP 192.168.1.253/24, 终点为 8.8.8.8
好了我们的路由器 B 要转发这个包, 它开始看路由表.
显然 8.8.8.8 不属于前两个表内, 所以换到默认路由. 而其 WAN 口通过 DHCP 协议, 得到网关 IP 192.168.1.1/24, 此时它开始解析网关 IP 的 mac.
等等, 这不就是他自己嘛?
所以此时出现了混乱, 192.168.1.1 对于他来说有两个对应的 mac 地址, 其中有一个甚至是它本身. 这个冲突就导致他无法上网.
但是这个情况并不是所有路由器都这样. 很多路由器是以会以 Interface 为 Gateway, 将物理端口和网关绑定, 所以对于这些路由器来说, 192.168.1.1%WAN, 192.168.1.1%LAN 是不同的两个地址.
当然对于家庭网络来说, 第二个路由器应该设置为 Bridge 模式, 或者如果不支持这个模式, 就应该关闭 DHCP 直接当作交换机来用... 要么直接买个交换机.
所以这就是为什么要学计算机网络的重要性.
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权本站发表,未经许可,不得转载。