初始化路由器
初始化如下图的路由器。
// 开启 Router
R1> enable
// 进入IOS 模式
R1# configure terminal
// 配置 FastEthernet 0/0 接口
R1(config)# interface FastEthernet0/0
// 配置所属 IP 和子网掩码
R1(config-if)# ip address 10.0.1.1 255.255.255.0
// 一直开启这个接口,一定要加!
R1(config-if)# no shutdown
// 配置 FastEthernet 1/0 接口
R1(config-if)# interface FastEthernet1/0
R1(config-if)# ip address 10.0.2.1 255.255.255.0
R1(config-if)# no shutdown
// 结束配置
R1(config-if)# end
显示配置好的信息
R1# show interfaces
R1# show running-config
配置路由器里的路由表
路由的配置重要参数有三个:目的地 IP,目的地 IP 的子网掩码以及下一个节点的 IP。假如要配置下图的两个网络:10.0.1.0/24
。
在这个例子中,目的地 IP 为 Network 10.0.1.0/24,因为 Prefix 为 10.0.1.x 所以子网掩码是 255.255.255.0,而到达这个网络的下一个节点的 IP 是 PC1。
注意:因为在 10.0.1.0/24 的网络里只有 PC1,所以下一个节点是 PC1,而且 Network 10.0.1.0/24 不是指 Hub1 的 IP,而是 Hub1 加上 PC1 所在的网络!
在 R1 的 IOS 模式里命令如下:
R1# configure terminal
R1(config)# ip route 10.0.1.0 255.255.255.0 10.0.1.11
如果想要删除某个路由,可以在上面的命令添加一个 no 就可以了:
R1# configure terminal
R1(config)# no ip route 10.0.1.0 255.255.255.0 10.0.1.11
如果想要删除整个路由表可以使用如下命令:
R1# configure terminal
R1(config)# clear ip route *
配置主机里的路由表
主机里的路由表配置和在路由器的路由表配置差不多,关键参数也是目的地 IP,子网掩码和 Next Hop,但这里的 Next Hop 就是我们所说的网关。
还是继续用上面的图来举例,如果要配置 PC1 -> Network 10.0.2.0
,那么在 PC 1 的命令行里写:
PC1> route add -net 10.0.2.0 netmask 255.255.255.0 gw 10.0.1.1
-net 表示去往哪个网络,netmask 表示这个网络的子网掩码,gw 表示网关。
添加路由命令
route add –net netaddress netmask mask gw gw_address
# 感觉这个和上面的一样,iface 就是指靠近的那个 Interface
route add –net netaddress netmask mask dev iface
# 去往哪个主机,主机的 IP 是 hostaddress
route add –host hostaddress gw gw_address
route add –host hostaddress dev iface
# 如果网络图不复杂可以直接设置默认网关,就可以不用每个目的地主机路由都要调协一次了
route add default gw gw_address
删除路由命令
删除命令很容易理解就是把 add
变成 del
就好了。
route del –net netaddress netmask mask gw gw_address
route del –host hostaddress gw gw_address
route del default gw gw_address
删除路由表命令
下面的对路由表的管理命令。注意:如果你不小心删除了路由表或者缓存,你可以要先设置主机的默认网关可以使其正常工作。
# 删除整个路由表
ip route flush table main
# 删除路由的缓存
ip route flush cache
查看 ARP
ARP 表会记录发送方的 MAC 地址。
路由器操作 ARP 表
// 显示 ARP 表
R1# show arp
// 清除 ARP 表的缓存
R1# clear arp-cache
// 删除某个主机的 ARP
R1# no arp IPAddress
主机操作 ARP 表
注意主机操作 ARP 表 和路由器的命令不一样。
# 显示 ARP 表
PC> arp -a
# 删除某个 ARP 数据
PC> arp -d IPAddress
ARP 代理
ARP 代理的关键点是:
- 在对应的网关(Router 上的某个 Interface)上开启 ARP 代理,默认都会开启
- 清除 PC4 里存放 PC1 的 MAC 地址,因为之后的 ARP 代理会让 R2 MAC 地址作为 PC1 的 MAC 地址
现在假如要 R2 作为 PC1 的 ARP 代理,也就是说如果 PC4 发信息给 PC1,R2 会假装自己是 PC1,将 MAC 地址给 PC4 后,PC 4 就会发信息给 R2 了。然后 R2 再将信息给 PC1。
开启代理
R2# configure terminal
// 修改对应的网关(接口)
R2(config)# interface FastEthernet1/0
// 开启 ARP 代理服务
R2(config)# ip proxy-arp
如果要关闭 ARP 代理可以使用如下命令:
R2(config)# no ip proxy-arp
ICMP 重定向
如果路由器发现你发的数据的时候发到另外的地方了,这样数据肯定到不了目的地,这个路由器根据自己的路由表将数据包发回正确的地方。举个例子。
假如 PC2 要发给 PC3,PC2 原本应该发给 R2 的,但是现在发到了 R1,这样肯定到不了 PC3。所以 R1 会做 ICMP 重定向将数据发回 R2,R2 再将数据发到 PC3。
你可能会问怎么可能发到 R1 呀,如果你路由表错了那不就出现发错了的现像了么?
重演
我们试着来模拟一下这个场景,先假设前提是每个设备的路由表都是配置好了的。现在改 PC2 的路由,还要在 PC2 开启重定向:
# 设置送到 Network 3 的网关是 R1 接口
PC2> route add -net 10.0.3.0 netmask 255.255.255.0 gw 10.0.2.1
# 开启重定向
PC2> echo 1 | tee /proc/sys/net/ipv4/conf/*/accept_redirects
然后再 ping 到 PC3
PC2> ping 10.0.3.10
就会出现如下情况:
循环路由
我们可以模拟循环发数据包的情况。还是使用上面的图,现在我们在 PC 4 和 每个路由器都设置错误的路由信息,使得:
PC4 -> R3 -> R2 -> R4 -> R2 -> ....
配置路由命令如下:
// 设置 PC4 发到 Network 1 的网关是 R3 的 10.0.4.3
PC4> route add -net 10.0.1.0 netmask 255.255.255.0 gw 10.0.4.3
// 设置 R3 发到 Network 1 的 Next Hop 是 R2 的 10.0.2.2
R3(config)# ip route 10.0.1.0 255.255.255.0 10.0.3.2
// 设置 R2 发到 Network 1 的 Next Hop 是 R4 的 10.0.2.4
R2(config)# ip route 10.0.1.0 255.255.255.0 10.0.2.4
// 设置 R4 发到 Network 1 的 Next Hop 是 R3 的 10.0.4.3
R4(config)# ip route 10.0.1.0 255.255.255.0 10.0.4.3
然后再 ping 到 PC1 就会出现下面的情况:
网友评论