美文网首页
计算机网络: Lab 2

计算机网络: Lab 2

作者: 写代码的海怪 | 来源:发表于2019-02-28 03:15 被阅读0次

初始化路由器

初始化如下图的路由器。

// 开启 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 代理的关键点是:

  1. 在对应的网关(Router 上的某个 Interface)上开启 ARP 代理,默认都会开启
  2. 清除 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 就会出现下面的情况:

相关文章

网友评论

      本文标题:计算机网络: Lab 2

      本文链接:https://www.haomeiwen.com/subject/nxmbsqtx.html