【网络通信】【电信运营商实战工程师】思科设备篇-思科设备企业网实战

news2024/11/17 23:29:05

电信运营商实战工程师系列文章.

思科设备篇-思科设备企业网实战.

文章目录

  • 1. 思科设备基本开局配置
  • 2. ARP协议、交换机工作原理及广播风暴问题
  • 3. 思科设备 VLAN 及单臂路由实战
  • 4. 思科三层交换机实现 VLAN 间路由实战
  • 5. 思科设备静态默认及浮动路由实战
  • 6. 思科设备NAT实战全集

1. 思科设备基本开局配置

知识点:

  • 主机名
  • 管理 IP 地址
  • 开启远程管理
  • 安全密码

本小节实验环境如下:

  • R1 使用 c2691 模拟路由器(R1 使用任意 Cisco 路由器模拟均可).
  • SW1 使用 c2691 添加 NM-16ESW 模拟交换机(参照前面内容).
  • R1 的 f0/0 连接 SW1 的 f1/0.

在这里插入图片描述
GNS3 模拟器对路由器进行了许多优化.

  1. 登录路由器直接进入了特权模式,而不是用户模式.
    在这里插入图片描述
    输入 disable 命令退出特权模式,进入用户模式. 用户模式的提示符是 >,而特权模式的提示符是 #.
    在这里插入图片描述
    从用户模式或特权模式输入 exit 命令,退出登录状态,回到登录页面.
    在这里插入图片描述
    在登陆页面按回车健,直接登录进入了特权模式. 这是因为没有设置登录密码和特权密码.
    在这里插入图片描述
    在登陆页面按回车健,直接登录进入了特权模式. 这是因为没有设置登录密码和特权密码.
    在这里插入图片描述
  2. 查看 GNS3 模拟器对设备的默认设置.
    show running-config
    其中主机名默认设置为 GNS3 workspace 中的名称. 这是默认设置为了在实验时更加友好.
    在这里插入图片描述
    空格键,查看更多信息.
    在这里插入图片描述

主机名

网络设备主机名的命名按照运营商规范要求. 便于运营商的对网络的管理.

设置 R1 的主机名

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#hostname R1-test
R1-test(config)#

设置 SW1 的主机名

SW1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#hostname SW1-test
SW1-test(config)#

管理 IP 地址

设置设备的管理 IP 地址是开局配置的必要操作. 设备互联一般使用 /30 掩码,节约 IP 地址资源.

配置 R1 管理 IP 地址:

R1-test#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1-test(config)#int fa0/0
R1-test(config-if)#ip add 202.106.1.1 255.255.255.252
R1-test(config-if)#no shut
  • 路由器开局时,它的第一个端口地址应该是连接上游设备的互联地址.
  • 将上行口的互联地址作为管理地址.

配置 SW1 管理 IP 地址:

SW1-test#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW1-test(config)#int vlan 1
SW1-test(config-if)#ip add 202.106.1.2 255.255.255.252
SW1-test(config-if)#no shut
SW1-test(config-if)#exit
SW1-test(config)#ip default-gateway 202.106.1.1
  • 交换机开局时,它的管理 IP 地址是 VLAN1 的 IP 地址.
  • 需要指定默认网关.

开局配置 3 个公网 IP 地址

  • 1 个管理地址
  • 1 个互联地址(上行端口的地址,可以作为管理地址登录设备)
  • 1 个环回地址(RootID,后续详解)

在 R1 上 ping SW1:

R1-test#ping 202.106.1.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 202.106.1.2, timeout is 2 seconds:
..!!!
Success rate is 60 percent (3/5), round-trip min/avg/max = 32/37/44 ms

在 SW1 上 ping R1:

SW1-test#ping 202.106.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 202.106.1.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 40/40/44 ms

小技巧:
运营商分配的 IP 地址是 202106.1.1,由于使用 /30 掩码,对端 IP 地址一定是 202.106.1.2.


开启远程管理

配置 R1-test 的远程管理.

开启虚拟控制台端口

R1-test(config)#line vty 0 ?
  <1-935>  Last Line number
  <cr>

R1-test(config)#line vty 0

最多允许936个用户同时在线,一般开启5个足够使用.

R1-test(config)#line vty 0 4
R1-test(config-line)#

设置远程管理的密码并开启功能. 使用 password 设置密码,然后 login 表示开启验证

R1-test(config-line)#password abc
R1-test(config-line)#login

  配置 R1-test 是简单的接口密码验证. 这种方法开启的远程管理,需要设置特权模式密码,否在在远程登录的时候无法进入特权模式,只能进入用户模式. 后续设置特权模式密码. 下面配置 SW1-test 的时候使用现网通用的方法,本地用户名和密码验证.

 
配置SW1-test 的远程管理.

SW1-test(config)#line vty 0 4
SW1-test(config-line)#login ?
  local   Local password checking
  tacacs  Use tacacs server for password checking
  <cr>

SW1-test(config-line)#
  • local 表示本地用户名密码认证.
  • tacacs 表示 tacacs 服务器集中密码认证.

localtacacs 的原理是类似的,区别是 local 将用户名和密码保存在设备本地,而 tacacs 将用户名和密码保存在 tacacs 服务器上. 这里我们使用 local.

SW1-test(config-line)#login local

接下来退出虚拟控制台端口,回到全局配置模式,添加一个用户名和密码

SW1-test(config-line)#exit
SW1-test(config)#username test privilege ?
  <0-15>  User privilege level

SW1-test(config)#username test privilege 15 password ?
  0     Specifies an UNENCRYPTED password will follow
  7     Specifies a HIDDEN password will follow
  LINE  The UNENCRYPTED (cleartext) user password

SW1-test(config)#username test privilege 15 password abc
SW1-test(config)#
  • username 设置用户名. 设置一个 test 用户.
  • privilege 设置用户权限. 0~15级,15级最高. 我们设置 15级的最高权限.
  • password 设置密码. 0 表示显示密码,7 表示隐藏密码. 不带参数直接输入密码 abc ,默认为 0.

并不需要设置特权模式密码,15级权限登录即可获取特权模式.


安全密码

在 R1-test 上远程登录 SW1-test

R1-test#telnet 202.106.1.2
Trying 202.106.1.2 ... Open


User Access Verification

Username:

输入用户名和密码,直接进入了特权模式

Username: test
Password:
SW1-test#

这时一台交换机的远程管理就设置完毕.

 
在 SW1-test 上远程登录 R1-test

SW1-test#telnet 202.106.1.1
Trying 202.106.1.1 ... Open


User Access Verification

Password:

输入密码 abc 并回车,进入用户模式

Password:
R1-test>

enable 尝试进入特权模式,提示密码没有设置

R1-test>enable
% No password set
R1-test>

为了保证设备安全性,在没有设置特权模式密码的情况下,使用接口密码验证的方式远程登录只能进入用户模式,无法进入特权模式进行设置

回到 R1-test 本地,在全局配置模式下,设置特权模式密码

R1-test(config)#enable secret 123abc
R1-test(config)#

再回到 SW1-test 上,远程登录 R1,并进入特权模式. 这个时候提示输入密码,输入密码后就远程进入了 R1-test 的特权模式.

R1-test>enable
Password:
R1-test#

这时一台路由器的远程管理就设置完毕.

 
在登陆页面按回车健,直接登录进入了特权模式. 这是非常危险的. 这意味者任何人进入机房,只要使用控制线连接 CONSOLE 口,就能登录设备控制台. 因此,需要设置控制台登录密码.

以 R1-test 为例,设置接口密码登录 CONSOLE.

R1-test#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1-test(config)#line console 0
R1-test(config-line)#password 123
R1-test(config-line)#login
R1-test(config-line)#

退出登录
在这里插入图片描述

回车,提示输入密码
在这里插入图片描述

输入密码后,进入特权模式
在这里插入图片描述
注意,在现网实际情况下,登录控制台后首先进入的是用户模式,在用户模式输入特权模式密码才能进入特权模式.

以 SW1-test 为例,设置用户名密码登录 CONSOLE.

SW1-test#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW1-test(config)#line console 0
SW1-test(config-line)#login local

刚才,我们已经添加了一个用户 test,它的密码是 abc
登录控制台也可以使用 tacacs 服务器.

回到登录界面,回车提示输入用户名
在这里插入图片描述
输入用户名和密码,进入了 SW1-test
在这里插入图片描述

2. ARP协议、交换机工作原理及广播风暴问题

知识点:

  • ARP 协议的作用
  • 交换机的工作原理详解
  • ARP 协议的报文抓包分析
  • 以太网广播风暴问题及解决方案
  • 以太网安全问题辩论

实验网络拓扑如图所示. SW1 和 SW2 是 2 台交换机,在 c2691 平台上使用 NM-16ESW 交换板卡模拟. R1 是 1 台路由器,可以使用任何型号模拟. R1 的两个端口 IP 地址分别为 192.168.1.1192.168.2.1. SW1 下面连接 C1 和 C2 ,SW2 下面连接 C3. C1 绑定真实机 VMnet1 网口,IP 地址为 192.168.1.10. C2 是 GNS3 虚拟机 VPCS[1],IP 地址为 192.168.1.20. C3 是 GNS3 虚拟机 VPCS[2],IP 地址为 192.168.2.30.
注意 VMware 虚拟网络 VMnet1 的网络号设置为 192.168.1.0.
在这里插入图片描述


ARP 协议的作用

  由 OSI 模型或 TCP/IP 模型可知,当 C1 ping C2 的时候,数据帧的源 IP 地址是 192.168.1.10,源 MAC 地址是虚拟网卡 VMnet1 的 MAC 地址,目标 IP 地址是 192.168.1.20,目标 MAC 地址未知.
  ARP 协议用来发现目标的 MAC 地址. C1 会首先广播发送 ARP request 报文,意思是“192.168.1.20 这个 IP 地址的 MAC 地址是多少?”. 交换机 SW1 上所有的设备都会收到这个报文,但是除了 C2 都不会回复,C2 会单播发送 ARP replay 报文,告知 C1 它的 MAC 地址. C1 接收到 C2 的回复后,将 C2 的 MAC 地址存储在 ARP 缓存表中,ARP 缓存表记录了 IP 地址与 MAC 地址的对应关系. ARP 缓存表在内存中,并且它均有生存时间. 当计算机重启或缓存表到期,ARP 缓存表会被清空,需要再次发现.

在 CMD 中,arp 命令可以管理缓存表

-d 参数删除指定项,带 * 或不带任何参数表示删除缓存表中所有项

>arp -d *

-a 参数查看缓存表中内容

>arp -a

在这里插入图片描述

  • 如果是 Windows10 平台,可能会有 224.0.0.22224.0.0.251224.0.0.252 等组播地址无法清除的现象. 这是Win10 系统自带服务在使用组播协议,清除 arp 缓存表后自动建立. 并不影响实验.

ARP 协议的报文抓包分析

在 GNS3 中使用 Wireshark 抓包工具分析 ARP 协议的报文.

开始监听 SW1 连接 C1 的端口
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
Wireshark 抓包界面.
在这里插入图片描述
使用过滤器,筛选 ARP 协议报文.
在这里插入图片描述
由于手动指定了网关,C1 不停的向 R1 发送 ARP request 报文,R1 也不断的向 C1 回复 ARP replay 报文. 因此 C1 的 APR 缓存表中始终存在 R1 的 MAC 地址.
在这里插入图片描述
C1 的 ARP 缓存表中没有 C2 的 MAC 地址.

在 C1 上 ping C2.

>ping 192.168.1.20

并再次查看 C1 的 APR 缓存表,可以发现已经学到了 C2 的 MAC 地址.
在这里插入图片描述
Wireshark 中也抓取到了:

  • C1 发送的 ARP request 报文,
  • C1 收到的 C2 发送的 ARP replay 报文.

在这里插入图片描述
C1 发送的 ARP request 报文:

  • 在二层网络上,源 MAC 地址是 C1 网口 VMnet1 的 MAC 地址(00-50-56-C0-00-01);目标 MAC 地址是广播地址 (00:00:00:00:00:00)
  • 在三层网络上,源 IP 地址是 C1 的 IP 地址(192.168.1.10),目标 IP 地址是 C2 的 IP 地址(192.168.1.20)
    在这里插入图片描述

C1 收到的 C2 发送的 ARP replay 报文:

  • 在二层网络上,源 MAC 地址是 C2 的 MAC 地址(00-50-79-66-68-00 );目标 MAC 地址是 C1 网口 VMnet1 的 MAC 地址(00-50-56-C0-00-01)
  • 在三层网络上,源 IP 地址是 C2 的 IP 地址(192.168.1.20) ,目标 IP 地址是 C1 网口的 IP 地址(192.168.1.10).
    在这里插入图片描述

停止监听
在这里插入图片描述
开始监听 SW1 连接 C2 的接口
在这里插入图片描述
删除 C1 的 ARP 缓存表,C1 ping C2

>arp -d
>ping 192.168.1.20

C2 收到了 C1 发送 ARP request 报文,并向 C1 发送 ARP replay 报文
在这里插入图片描述
关闭监听.

开始监听 R1 连接 SW1 的接口
在这里插入图片描述
删除 C1 的 ARP 缓存表,C1 ping C2

>arp -d
>ping 192.168.1.20

R1 收到了 C1 发送 ARP request 报文,但是它会丢弃并不会返回 replay 报文.
在这里插入图片描述
在 C1 上 ping C3

>arp -d
>ping 192.168.2.30

C1 不会去学 C3 的 MAC 地址,因为 C1 不会发送 ARP request 广播报文. C3 的 IP 地址和 C1 不在同一个网段,C1 会直接将数据帧发给网关 R1. R1 会首先向 C3 发送 ARP request 报文,C3 收到后会向 R1 返回 ARP replay 报文.
在这里插入图片描述
ARP 报文不能跨网段传输.


交换机的工作原理详解

交换机工作在二层网络,也就是数据链路层. 它依据 MAC 地址表转发数据. 下面以 SW1 为例,详解交换机工作原理.
在这里插入图片描述
当 C1 或 C2 初始接入SW1 时,SW1 的 fa1/1 和 fa1/2 口并不知道下面接入设备的 MAC 地址. C1 和 C2 通讯时会向 SW1 发送数据帧,SW1 会从数据帧的源 MAC 地址字段学到 C1 和 C2 的 MAC 地址,并存储到 SW1 的 MAC 地址表中.
在 SW1 上查看它的 MAC 地址表:

SW1#show mac-address-table

在这里插入图片描述

清除 MAC 地址表

SW1#clear mac-address-table

在这里插入图片描述

查看此时的 MAC 地址表
在这里插入图片描述
此时 C1 和 R1 的 MAC 地址仍在 SW1 的 MAC 地址表中,这是因为 C1 一直在向网关 R1 发送 ARP 报文,因此 SW1 一直在学习 C1 和 R1 的 MAC 地址.

但是 SW1 并不知道 C2 的 MAC 地址.

让 C1 ping C2. 由于 SW1 并不知道 C2 的 MAC 地址,SW1 会泛洪向所有连接的端口转发 C1 的 ICMP request 报文,但是只有 C2 在接收后会发送 ICMP replay 报文,其它设备会丢弃收到的报文,例如 R1 收到 ICMP request 报文后没有回复 replay 报文. SW1 会从 C2 发送的数据帧中学到 C2 的 MAC 地址,并存到 MAC 地址表中. 当 SW1 学到 C2 的 MAC 地址后就不会在向其它端口转发到 C2 的数据帧. 因此,R1 只会收到第一个 C1 发送给 C2 的 ICMP request 报文. MAC 地址表也有生存时间,MAC 地址表超过生存时间后需要重新学习.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


以太网安全问题分析

在正常情况下,以太网(Ethernet)的安全性可以满足基本要求. 但是由于 TCP/IP 的设计缺陷,在极端情况下会导致安全隐患.

  • SW1 的 MAC 地址表是一段内存空间,如果这段内存空间已经占满,继续向 MAC 地址表写入信息会导致内存溢出,使得 MAC 地址表不停的遗忘. 这时,由于 SW1 的地址表为空,SW1 会转发所有收到的数据帧,此时在第三方设备上就可以监听其它的设备间的通信. 例如 C1 与 R1 间的通讯会被 C2 截获.
  • ARP 协议没有校验机制. 当 C1 没有向 C2 发送 ARP request 报文时,C2 也可以向 C1 发送 replay 报文,C1 会接收这个报文并将报文里的 MAC 地址和 IP 地址写入 C1 自己的 MAC 地址表. 如果 C2 发送的 ARP reply 报文是 C2 自己的 MAC 地址和 网关 R1 的 IP 地址,那么 C1 会将发送到 R1 的数据帧全部发往 C2. 如果与此同时 C2 将含有它自己 MAC 地址和 C1 的 IP 地址的 ARP replay 报文发送给 R1,R1 会将所有发送到 C1 的数据帧全部发往 C2. 那么,此时 C2 就监听了 C1 和 R1 间的通讯. 这叫做 ARP 欺骗.
  • 如果 C2 发送给 C2 的 ARP replay 报文是错误的 MAC 地址和网关 R1 的 IP 地址,那么 C1 就不能正常接入互联网. 这叫做 ARP 攻击.


以太网广播风暴问题及解决方案

如果交换机连接了大量的终端设备,那么以太网中会存在大量的 request(ARP、ICMP 或其它协议) 广播报文. 大量的广播报文会占据大量的带宽资源,降低网络速度,影响网络性能. 这个被称之为广播风暴问题.
广播风暴只存在二层网络中,也就是交换机端口之间会出现这个问题. 路由器端口之间不会转发广播数据帧,因此它能很好的隔绝网络风暴. 当网络中存在数量庞大的终端时,使用路由器可以设计分层化的网络结构,而不是单一的扁平化的网络结构,这样可以将网络风暴隔绝在较小的范围内,减小它对网络性能的影响.
但是路由器工作在三层网络,交换机工作在二层网络. 二层设备的转发效率要高于三层设备. 同时路由器端口有限,无法连接大量的终端设备. 因此设计了 VLAN 技术,使得交换机能避免广播风暴的问题.

3. 思科设备 VLAN 及单臂路由实战

知识点:

  • VLAN 的工作原理及应用场景
  • 增加和删除基于端口的 VLAN
  • 中继端口的配置
  • 中级端口的 VLAN 过滤
  • 使用单臂路由技术实现 VLAN 间通信

实验网络拓扑如图所示. R1 是 1 台路由器,SW1 和 SW2 是在 c2691 平台上使用 NM-16ESW 交换板卡模拟的 2 台交换机. C1、C2、C3、C4 是 4 台 VPCS. 交换机 SW1 的 f1/1 口连接 C1,f1/2 口连接 C2;交换机 SW2 的 f1/3 口连接 C3,f1/4 口连接 C4. 交换机 SW1 的 f1/15 和 SW2 的 f1/15 连接. 路由器 R1 使用 f0/0 口连接交换机 SW1 的 f1/0 口.
在这里插入图片描述


VLAN 的工作原理及应用场景

vlan的全称是Virtual Local Area Network,即“虚拟局域网”,就是把一个大的局域网,分成多个隔离的,小的局域网. 这样做的好处主要有两点.

  1. 隔离广播域,让每个节点(比如电脑、手机)不需要收到太多无关的广播包,从而减少计算性能和网络带宽的无谓消耗. 从而保证局域网的性能.
  2. 隔离常见病毒与攻击,这样即使某个主机感染了arp攻击病毒、dhcp攻击病毒等常见局域网病毒,影响的范围也只限于本vlan,不会影响到其他vlan,可以将故障限制在比较小的范围. 一来造成的影响小,二来排查故障也更加容易.

例如,运营商网络中某个局域网含有成百上千个设备,其中一个设备发送广播报文,其它所有设备都会收到,当有大量的设备发送广播报文时,网络中就会充斥着广播报文,严重降低网络质量. 再如,企业内部有多个部门,可以使用 VLAN 技术将每个部门的计算机组成虚拟局域网,不同部门之间相互隔绝,可以避免安全隐患. 这种大量设备相互连接组成的局域网被称为扁平(Fabric)化网络,利用 VLAN 可以将一个大的平面网络划分为若干相互独立的小网络.


增加和删除基于端口的 VLAN

所有厂商交换机设备默认有一个 vlan1,所有端口都加入了 vlan1. 因此,交换机只要加电,所有端口就能互相通信.

调整 putty 终端的字体大小.
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

设置 C1~4 的 IP 地址.
在这里插入图片描述
现在,要将 C1 和 C3 组成 vlan10,C2 和 C4 组成 vlan20.

查看 vlan 信息

如果是真实思科交换机,查看 vlan 命令为:

SW1#show vlan

但是此处我们只能使用带二层交换功能的路由器模拟,命令为:

SW1#show vlan-switch brief

在这里插入图片描述

SW1#show vlan-switch brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/1, Fa1/2, Fa1/3
                                                Fa1/4, Fa1/5, Fa1/6, Fa1/7
                                                Fa1/8, Fa1/9, Fa1/10, Fa1/11
                                                Fa1/12, Fa1/13, Fa1/14, Fa1/15
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup
SW1#
  • 具有默认 vlan1,fa1/0 ~ fa1/15 都在 vlan1 中.
  • 其它 vlan 都是保留给以太网使用.

在 SW1 上进入全局配置模式添加 vlan10

SW1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#vlan 10
SW1(config-vlan)#

添加描述信息. 也可不添加,会自动生成.

SW1(config-vlan)#name v10
SW1(config-vlan)#

接着添加 vlan20

SW1(config-vlan)#vlan 20
SW1(config-vlan)#

查看 vlan 信息

SW1#show vlan-switch brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/1, Fa1/2, Fa1/3
                                                Fa1/4, Fa1/5, Fa1/6, Fa1/7
                                                Fa1/8, Fa1/9, Fa1/10, Fa1/11
                                                Fa1/12, Fa1/13, Fa1/14, Fa1/15
10   v10                              active
20   VLAN0020                         active
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup
SW1#

此时,已经添加了 vlan10 和 vlan20.

在 vlan 中添加端口,这种方法称为静态 vlan.

进入端口,设置端口模式为 access.

SW1(config)#int fa1/1
SW1(config-if)#switchport mode access
SW1(config-if)#

将 fa1/1 设为 access. 当 C1 发送一个数据帧到 SW1,SW1 会将这个数据帧打上标记 (tag) ,当 SW1 收到发往 C1 的数据帧,SW1 会将这个数据帧上的标记脱掉.

将 fa1/1 加入 vlan10

SW1(config-if)#switchport access vlan 10
SW1(config-if)#

将 fa1/2 加入 vlan20

SW1(config-if)#int fa1/2
SW1(config-if)#switchport access vlan 20
SW1(config-if)#

在默认情况下,思科交换机端口就是 access 模式. 因此,switchport mode access 这条命令可以省略.

查看 vlan 信息. fa1/1 端口已经加入了 vlan10,fa1/2 端口已经加入 vlan20.

SW1#show vlan-switch brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/3, Fa1/4, Fa1/5
                                                Fa1/6, Fa1/7, Fa1/8, Fa1/9
                                                Fa1/10, Fa1/11, Fa1/12, Fa1/13
                                                Fa1/14, Fa1/15
10   v10                              active    Fa1/1
20   VLAN0020                         active    Fa1/2
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup
SW1#

在 SW2 上添加 vlan10 和 vlan20.

SW2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW2(config)#vlan 10
SW2(config-vlan)#vlan 20
SW2(config-vlan)#

在 vlan10 中添加 C3,在 vlan20 中添加 C4

SW2(config-vlan)#int fa1/3
SW2(config-if)#switchport access vlan 10
SW2(config-if)#
SW2(config-if)#
SW2(config)#int fa1/4
SW2(config-if)#switchport access vlan 20

查看 SW2 上的 vlan 信息.

SW2#show vlan-switch brief

VLAN Name                             Status    Ports
---- -------------------------------- --------- -------------------------------
1    default                          active    Fa1/0, Fa1/1, Fa1/2, Fa1/5
                                                Fa1/6, Fa1/7, Fa1/8, Fa1/9
                                                Fa1/10, Fa1/11, Fa1/12, Fa1/13
                                                Fa1/14, Fa1/15
10   VLAN0010                         active    Fa1/3
20   VLAN0020                         active    Fa1/4
1002 fddi-default                     act/unsup
1003 token-ring-default               act/unsup
1004 fddinet-default                  act/unsup
1005 trnet-default                    act/unsup
SW2#

中继端口的配置

此时,C1 和 C3 之间不能相互通信,C2 和 C4 之间也不能相互通信. 因为 SW1 和 SW2 的 fa1/15 端口目前属于 vlan1 并且是 access 模式,vlan10 和 vlan20 的数据帧都无法通过. 如果将 fa1/15 加入 vlan10,则 vlan20 的数据帧无法通过. 如果将 fa1/15 加入 vlan20,则 vlan10 的数据无法通过.
这里需要引入终极端口. fa1/15 设置为中继端口,并允许 vlan10 和 vlan20 的数据通过. 默认允许所有 vlan 数据帧通过.

将 SW1 的 fa1/15 设置为 trunk 模式.

SW1(config)#int fa1/15
SW1(config-if)#switchport mode trunk
SW1(config-if)#

告诉交换机的封装类型,802.1q. 真实思科交换机默认设置自有协议 isl.

SW1(config-if)#switchport trunk encapsulation ?
  dot1q  Interface uses only 802.1q trunking encapsulation when trunking

设置为 802.1q 封装.

SW1(config-if)#switchport trunk encapsulation dot1q
SW1(config-if)#

设置 SW2 的 fa1/15 为中继端口

SW2(config)#int fa1/15
SW2(config-if)#switchport mode trunk
SW2(config-if)#
*Mar  1 01:39:19.355: %DTP-5-TRUNKPORTON: Port Fa1/15 has become dot1q trunk

此时,C1 和 C3 之间可以互通,C2 和 C4 之间可以互通.
在这里插入图片描述
但是,C1 和 C2、C1 和 C4、C2 和 C3,C3 和 C4 之间不能互通.
在这里插入图片描述


使用单臂路由技术实现 VLAN 间通信

此时,C1 和 C3 属于 vlan10,C2 和 C4 属于 vlan20. 而且 vlan10 和 vlan20 相互隔绝,要想 vlan10 和 vlan20 可以相互通信,只能为 vlan 配置网关并使用路由器连接.

单臂路由就是将路由器的一个端口划分为多个子接口,为多个网段设置网关.

进入 R1 的 fa0/0 端口,激活并去除 IP 设置.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int fa0/0
R1(config-if)#no shut
R1(config-if)#no ip add

退出 fa0/0

R1(config-if)#exit

最多支持如下子接口数量

R1(config)#int fa0/0.?
  <0-4294967295>  FastEthernet interface number

设置 fa0/0.1 子接口,配置为 802.1q 封装,指定 vlan1 做网关.

R1(config)#int fa0/0.1
R1(config-subif)#encap
R1(config-subif)#encapsulation d
R1(config-subif)#encapsulation dot1Q ?
  <1-4094>  IEEE 802.1Q VLAN ID

R1(config-subif)#encapsulation dot1Q 1
R1(config-subif)#
  • encapsulation dot1Q 1 表示指定为 vlan1 做网关.
  • 先指定 vlan,后配置 IP. 如果不这样,IP 就配不上

为 fa0/0.1 配置 IP 地址.

R1(config-subif)#ip add 192.168.1.1 255.255.255.0
R1(config-subif)#no shut
R1(config-subif)#

为 fa0/0.10 指定 vlan10,设置 802.1q 封装,并配置 IP 地址.

R1(config)#int fa0/0.10
R1(config-subif)#encapsulation dot1Q 10
R1(config-subif)#ip add 192.168.10.1 255.255.255.0
R1(config-subif)#no shut
R1(config-subif)#

为 fa0/0.20 指定 vlan20,设置 802.1q 封装,并配置 IP 地址.

R1(config-subif)#int fa0/0.20
R1(config-subif)#encapsulation dot1Q 20
R1(config-subif)#ip add 192.168.20.1 255.255.255.0
R1(config-subif)#no shut
R1(config-subif)#

查看 R1 上的接口信息

R1#show ip int b
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES manual up                    up
FastEthernet0/0.1          192.168.1.1     YES manual up                    up
FastEthernet0/0.10         192.168.10.1    YES manual up                    up
FastEthernet0/0.20         192.168.20.1    YES manual up                    up
FastEthernet0/1            unassigned      YES unset  administratively down down
R1#

配置 SW1 的 fa1/0 为中继端口,允许 vlan1、vlan10、vlan20 的数据帧通过

SW1(config-if)#int fa1/0
SW1(config-if)#switchport mode trunk
SW1(config-if)#

在 SW1 上为 vlan1 配置 IP 并指定网关.

SW1(config)#int vlan 1
SW1(config-if)#ip add 192.168.1.10 255.255.255.0
SW1(config-if)#no shut
SW1(config-if)#exit
SW1(config)#ip default-gateway 192.168.1.1
SW1(config)#

在 SW2 上为 vlan1 配置 IP 并指定网关.

SW2(config)#int vlan 1
SW2(config-if)#ip add 192.168.1.20 255.255.255.0
SW2(config-if)#no shut
SW2(config-if)#exit
SW2(config)#ip default-gateway 192.168.1.1
SW2(config)#

为 C1~4 设置 IP 地址并指定网关.
在这里插入图片描述

此时,vlan10、vlan20 和 vlan1 内的设备都能相互通信.


中继端口的 VLAN 过滤

SW1(config)#int fa1/0
SW1(config-if)#switchport trunk ?
  allowed        Set allowed VLAN characteristics when interface is in trunking
                 mode
  encapsulation  Set trunking encapsulation when interface is in trunking mode
  native         Set trunking native characteristics when interface is in
                 trunking mode

SW1(config-if)#switchport trunk allowed vlan ?
  WORD    VLAN IDs of the allowed VLANs when this port is in trunking mode
  add     add VLANs to the current list
  all     all VLANs
  except  all VLANs except the following
  remove  remove VLANs from the current list

SW1(config-if)#switchport trunk allowed vlan remove ?
  WORD  VLAN IDs of the allowed VLANs when this port is in trunking mode

在 SW1 的 fa1/0 接口过滤 vlan20 流量,不让其通过.

SW1(config-if)#switchport trunk allowed vlan remove 20
SW1(config-if)#

在这里插入图片描述
ctrl - A 回到行首. 取消对 vlan20 的过滤.

SW1(config-if)#no switchport trunk allowed vlan remove 20
SW1(config-if)#

在这里插入图片描述

此时,网络中所有设备都要通过 R1 才能互相通信. 路由器 R1 的处理能力和其与 SW1 连接链路成为网络性能的 2 个瓶颈.


4. 思科三层交换机实现 VLAN 间路由实战

知识点:

  • Interface vlan 原理及配置
  • VLAN 间路由连通测试
  • 三层交换机和路由器互连配置

实验网络拓扑如图所示. 与上面小节类似,M1 是 1 台三层交换机,使用 c2691 插上 NM-16ESW 交换板卡模拟(路由功能关闭). SW1 和 SW2 是2 台交换机,在 c2691 平台上使用 NM-16ESW 交换板卡模拟 (路由功能关闭). C1、C2、C3、C4 是 4 台 VPCS. 交换机 SW1 的 f1/1 口连接 C1,f1/2 口连接 C2;交换机 SW2 的 f1/3 口连接 C3,f1/4 口连接 C4. 交换机 SW1 的 f1/15 和 SW2 的 f1/15 连接. 路由器 R1 使用 f0/0 口连接交换机 SW1 的 f1/0 口.
在这里插入图片描述


Interface vlan 原理及配置

实验拓扑与单臂路由相似,只是将路由器替换为三层交换机 M1. 也就是说 M1 具有二层和三层功能.

SW1 的设置与前面相同. 添加 vlan 10 和 vlan 20. 将 fa1/1 加入 vlan 10,fa1/2 加入 vlan 20. 将 fa1/15 设置为 trunk 模式. 为 vlan 1 设置 IP . 指定默认网关.

SW1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW1(config)#vlan 10
SW1(config-vlan)#vlan 20
SW1(config-vlan)#int fa1/1
SW1(config-if)#switchport access vlan 10
SW1(config-if)#
SW1(config-if)#int fa1/2
SW1(config-if)#switchport access vlan 20
SW1(config-if)#
SW1(config-if)#int fa1/15
SW1(config-if)#switchport mode trunk
SW1(config-if)#int vlan 1
SW1(config-if)#ip add 192.168.1.10 255.255.255.0
SW1(config-if)#no shut
SW1(config-if)#exit
SW1(config)#no ip routing
SW1(config)#ip default-gateway 192.168.1.1

SW2 的设置与前面相同. 添加 vlan 10 和 vlan 20. 将 fa1/3 加入 vlan 10,fa1/4 加入 vlan 20. 将 fa1/15 设置为 trunk 模式. 为 vlan 1 设置 IP . 指定默认网关.

SW2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW2(config)#vlan 10
SW2(config-vlan)#vlan 20
SW2(config-vlan)#int fa1/3
SW2(config-if)#switchport access vlan 10
SW2(config-if)#int fa1/4
SW2(config-if)#switchport access vlan 20
SW2(config-if)#int fa1/15
SW2(config-if)#switchport mode trunk
SW2(config-if)#int vlan 1
SW2(config-if)#ip add 192.168.1.20 255.255.255.0
SW2(config-if)#no shut
SW2(config-if)#exit
SW2(config)#no ip routing
SW2(config)#ip default-gateway 192.168.1.1

为 C1、C2、C3、C4 设定 IP.

VPCS[1]> ip 192.168.10.10 192.168.10.1 24
Checking for duplicate address...
PC1 : 192.168.10.10 255.255.255.0 gateway 192.168.10.1

VPCS[1]> 2
VPCS[2]> ip 192.168.20.20 192.168.20.1 24
Checking for duplicate address...
PC2 : 192.168.20.20 255.255.255.0 gateway 192.168.20.1

VPCS[2]> 3
VPCS[3]> ip 192.168.10.30 255.255.255.0 192.168.10.1
Checking for duplicate address...
PC3 : 192.168.10.30 255.255.255.0 gateway 192.168.10.1

VPCS[3]> 4
VPCS[4]> ip 192.168.20.40 192.168.20.1 24
Checking for duplicate address...
PC4 : 192.168.20.40 255.255.255.0 gateway 192.168.20.1

此时,C1 和 C3 可以相互通信,C2 和 C4 可以相互通信. 但是 C1 不能和 C2、C4 通信,C3 也不能和 C2、C4 通信.

再上一小节中,为了使 vlan 间可以通信,使用了子接口. 这里使用 interface vlan . 在三层交换机 M1 上添加 vlan 10 和 vlan 20,为他们配置 IP,分别作为 vlan 10 和 vlan 20 的网关. 此时相当于在 M1 上的两个虚拟接口接入了 vlan 10 和 vlan 20,并且它们通过 M1 的三层路由功能可以互相通信.

M1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
M1(config)#vlan 10
M1(config-vlan)#vlan 20
M1(config-vlan)#int fa1/0
M1(config-if)#switchport mode trunk
M1(config-if)#jiangh
M1(config-if)#int vlan 10
M1(config-if)#ip add 192.168.10.1 255.255.255.0
M1(config-if)#no shut
M1(config-if)#
M1(config-if)#int vlan 20
M1(config-if)#ip add 192.168.20.1 255.255.255.0
M1(config-if)#no shut
M1(config-if)#
M1(config-if)#int vlan 1
M1(config-if)#ip add 192.168.1.1 255.255.255.0
M1(config-if)#

只要将 SW1 的 fa1/0 接口设为 trunk,VLAN 间路由就配置完成了.

SW1(config)#int fa1/0
SW1(config-if)#sw
SW1(config-if)#switchport mo
SW1(config-if)#switchport mode tr
SW1(config-if)#switchport mode trunk

现在,C1、C2、C3、C4 以及 M1、SW1、SW2 都能相互通信. 此时仍然使用了单臂路由的拓扑,虽然 VLAN 间路由使 M1 的 fa1/0 不再成为性能瓶颈,但是 M1 与 SW1 之间的线路瓶颈依然存在.


VLAN 间路由连通测试

将 SW1 和 SW2 之间的线路删除. 然后将 M1 的 fa1/1 接口与 SW2 的 fa1/0 接口连接. 这样的网络拓扑结构就避免了线路带宽制约性能的问题.
现在只需将 M1 的 fa1/1 和 SW2 的 fa1/0 设为 trunk 模式,VLAN 间路由就配置完成了.
在这里插入图片描述
配置 SW2 的 fa1/0 接口

SW2(config-if)#int fa1/0
SW2(config-if)#sw
SW2(config-if)#switchport mo
SW2(config-if)#switchport mode t
SW2(config-if)#switchport mode trunk

配置 M1 的 fa1/1 接口

M1(config-if)#int fa1/1
M1(config-if)#sw
M1(config-if)#switchport mo
M1(config-if)#switchport mode tr
M1(config-if)#switchport mode trunk

此时在真实现网设备上应该就能通信了. 但是 GNS3 模拟器上不支持热插拔,需要手动激活 SW2 的 fa1/0 接口和 M1 的 fa1/1 接口.

SW2(config-if)#end
SW2#show ip interface brief
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  administratively down down
FastEthernet0/1            unassigned      YES unset  administratively down down
FastEthernet1/0            unassigned      YES unset  up                    down
FastEthernet1/1            unassigned      YES unset  up                    down
FastEthernet1/2            unassigned      YES unset  up                    down
FastEthernet1/3            unassigned      YES unset  up                    up
FastEthernet1/4            unassigned      YES unset  up                    up
FastEthernet1/5            unassigned      YES unset  up                    down
FastEthernet1/6            unassigned      YES unset  up                    down
FastEthernet1/7            unassigned      YES unset  up                    down
FastEthernet1/8            unassigned      YES unset  up                    down
FastEthernet1/9            unassigned      YES unset  up                    down
FastEthernet1/10           unassigned      YES unset  up                    down
FastEthernet1/11           unassigned      YES unset  up                    down
FastEthernet1/12           unassigned      YES unset  up                    down
FastEthernet1/13           unassigned      YES unset  up                    down
FastEthernet1/14           unassigned      YES unset  up                    down
FastEthernet1/15           unassigned      YES unset  up                    up
Vlan1                      192.168.1.20    YES manual up                    up
SW2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
SW2(config)#int fa1/0
SW2(config-if)#shut
SW2(config-if)#no shut
SW2(config-if)#
M1(config-if)#end
M1#
*Mar  1 01:07:15.787: %SYS-5-CONFIG_I: Configured from console by console
M1#show ip int b
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            unassigned      YES unset  administratively down down
FastEthernet0/1            unassigned      YES unset  administratively down down
FastEthernet1/0            unassigned      YES unset  up                    up
FastEthernet1/1            unassigned      YES unset  up                    down
FastEthernet1/2            unassigned      YES unset  up                    down
FastEthernet1/3            unassigned      YES unset  up                    down
FastEthernet1/4            unassigned      YES unset  up                    down
FastEthernet1/5            unassigned      YES unset  up                    down
FastEthernet1/6            unassigned      YES unset  up                    down
FastEthernet1/7            unassigned      YES unset  up                    down
FastEthernet1/8            unassigned      YES unset  up                    down
FastEthernet1/9            unassigned      YES unset  up                    down
FastEthernet1/10           unassigned      YES unset  up                    down
FastEthernet1/11           unassigned      YES unset  up                    down
FastEthernet1/12           unassigned      YES unset  up                    down
FastEthernet1/13           unassigned      YES unset  up                    down
FastEthernet1/14           unassigned      YES unset  up                    down
FastEthernet1/15           unassigned      YES unset  up                    down
Vlan1                      192.168.1.1     YES manual up                    up
Vlan10                     192.168.10.1    YES manual up                    up
Vlan20                     192.168.20.1    YES manual up                    up
M1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
M1(config)#int fa1/1
M1(config-if)#shut
M1(config-if)#no shut

现在,C1、C2、C3、C4 以及 M1、SW1、SW2 都能相互通信.,并且制约网络性能的线路瓶颈也被解除了.


三层交换机和路由器互连配置

现在添加 1 台路由器 R1,并将 R1 的 fa0/0 连接 M1 的二层口 fa1/15.
在这里插入图片描述
配置 R1 的 fa0/0 接口.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int fa0/0
R1(config-if)#ip add 202.106.1.2 255.255.255.0
R1(config-if)#no shut

此时,M1 的二层口 fa1/15 与 R1 的三层口互连但不互通. 要想它们彼此之间能互通,需要在 M1 上添加一个 vlan 并将 fa1/15 口加入这个 vlan. 为这个 vlan 配置 IP 后,这个 vlan 便能和路由器 R1 互通. 这就是 interface vlan 和路由器之间通信.

配置 M1 的 fa1/15 口,并手动激活.

M1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
M1(config)#vlan 100
M1(config-vlan)#int fa1/15
M1(config-if)#switchport access vlan 100
M1(config-if)#int vlan 100
M1(config-if)#ip add 202.106.1.1 255.255.255.0
M1(config-if)#no shut

现在,R1 就能和 M1 及其它设备通信了.

在思科设备上,还支持 no switchport 命令将二层口转换成三层口. 这样 fa1/15 就能直接和 R1通信了.

先将 vlan 100 和 interface vlan 100 删除.

M1(config)#no vlan 100
M1(config)#no int vlan 100

直接为 fa1/15 口配置 IP 失败,此时它还是二层口.

M1(config)#int fa 1/15
M1(config-if)#ip add 202.106.1.1 255.255.255.0

% IP addresses may not be configured on L2 links.

M1(config-if)#

将其转换成三层口,并配置 IP.

M1(config-if)#no switchport
M1(config-if)#ip add 202.106.1.1 255.255.255.0
M1(config-if)#no shut

5. 思科设备静态默认及浮动路由实战

知识点:

  • 静态路由的工作原理及应用场景
  • 默认路由的应用场景及配置方法
  • 静态浮动路由的应用场景及配置方法

静态路由的工作原理及应用场景

缺什么加什么,出口可以使用默认路由

先看如下网络拓扑. 使用 c2691 模拟路由器 R1,SW1 和 SW2 是普通交换机.

在这里插入图片描述
为 C1、C2 和 C3 设置 IP.

VPCS[1]> ip 192.168.1.10 24
Checking for duplicate address...
PC1 : 192.168.1.10 255.255.255.0

VPCS[1]> 2
VPCS[2]> ip 192.168.1.20 24
Checking for duplicate address...
PC2 : 192.168.1.20 255.255.255.0

VPCS[2]> 3
VPCS[3]> ip 192.168.2.10 24
Checking for duplicate address...
PC3 : 192.168.2.10 255.255.255.0

C1 和 C2 在相同的网段内,可以相互通信.

VPCS[1]> ip 192.168.1.10 24
Checking for duplicate address...
PC1 : 192.168.1.10 255.255.255.0

VPCS[1]> 2
VPCS[2]> ip 192.168.1.20 24
Checking for duplicate address...
PC2 : 192.168.1.20 255.255.255.0

VPCS[2]> 3
VPCS[3]> ip 192.168.2.10 24
Checking for duplicate address...
PC3 : 192.168.2.10 255.255.255.0

C3 不在相同的网段内,不能和 C1 和 C2 通信.

VPCS[3]> ping 192.168.1.10
No gateway found

VPCS[3]> ping 192.168.1.20
No gateway found

C1、C2 要和 C3 通信,必须经过网关.

为 C1、C2 指定网关

VPCS[1]> ip 192.168.1.10 192.168.1.1 24
Checking for duplicate address...
PC1 : 192.168.1.10 255.255.255.0 gateway 192.168.1.1

VPCS[1]> 2
VPCS[2]> ip 192.168.1.20 192.168.1.1 24
Checking for duplicate address...
PC2 : 192.168.1.20 255.255.255.0 gateway 192.168.1.1

设置 R1 的 fa0/0 口为 192.168.1.0/24 网段的网关.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int fa0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no shut

C1 ping 网关可以通信

VPCS[1]> ping 192.168.1.1
192.168.1.1 icmp_seq=1 ttl=255 time=18.990 ms
192.168.1.1 icmp_seq=2 ttl=255 time=9.991 ms
192.168.1.1 icmp_seq=3 ttl=255 time=20.952 ms
192.168.1.1 icmp_seq=4 ttl=255 time=14.954 ms
192.168.1.1 icmp_seq=5 ttl=255 time=13.957 ms

C1 ping C3 则是目标不可达. 这是因为 C3 没有 IP 地址,R1 中也没有到达 C3 的路由表.

VPCS[1]> ping 192.168.2.10
*192.168.1.1 icmp_seq=1 ttl=255 time=8.995 ms (ICMP type:3, code:1, Destination host unreachable)
*192.168.1.1 icmp_seq=2 ttl=255 time=10.939 ms (ICMP type:3, code:1, Destination host unreachable)
*192.168.1.1 icmp_seq=3 ttl=255 time=18.952 ms (ICMP type:3, code:1, Destination host unreachable)
*192.168.1.1 icmp_seq=4 ttl=255 time=11.963 ms (ICMP type:3, code:1, Destination host unreachable)
*192.168.1.1 icmp_seq=5 ttl=255 time=11.955 ms (ICMP type:3, code:1, Destination host unreachable)

特权模式下 show ip route 查看路由表.

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.1.0/24 is directly connected, FastEthernet0/0

因为 fa0/0 配置了 IP 地址,所以只有默认与 fa0/0 口直连网段的路由表.

配置 fa0/1 口的 IP 地址.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int fa0/1
R1(config-if)#ip add 192.168.2.1 255.255.255.0
R1(config-if)#no shut

查看路由表.

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/1

默认添加了与 fa0/1 口直连网段的路由表.

为 C3 配置 IP 并指定网关

VPCS[3]> ip 192.168.2.10 192.168.2.1 24
Checking for duplicate address...
PC3 : 192.168.2.10 255.255.255.0 gateway 192.168.2.1

C1 ping C3 可以通了.

VPCS[1]> ping 192.168.2.10
192.168.2.10 icmp_seq=1 ttl=64 time=0.001 ms
192.168.2.10 icmp_seq=2 ttl=64 time=0.001 ms
192.168.2.10 icmp_seq=3 ttl=64 time=0.001 ms
192.168.2.10 icmp_seq=4 ttl=64 time=0.001 ms
192.168.2.10 icmp_seq=5 ttl=64 time=0.001 ms

去掉 R1 的 fa0/1 口下的所有节点,添加路由器 R2 和 R3. R1 的 fa0/1 口连接 R2 的 fa0/0,R2 的 fa0/1 口连接 R3 的 fa0/0 口.
在这里插入图片描述
R1 的接口设置没有变化.

配置 R2 的 fa0/0 口的 IP

R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#int fa0/0
R2(config-if)#ip add 192.168.2.2 255.255.255.0
R2(config-if)#no shut

在 R2 上测试可以 ping 通 R1 的 fa0/1 口.

R2(config-if)#do ping 192.168.2.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 20/28/36 ms

配置 R2 的 fa0/1 口的 IP.

R2(config-if)#int fa0/1
R2(config-if)#ip add 192.168.3.1 255.255.255.0
R2(config-if)#no shut

配置 R3 的 fa0/0 口的 IP

R3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R3(config)#int fa0/0
R3(config-if)#ip add 192.168.3.2 255.255.255.0
R3(config-if)#no shut

在 R2 上测试可以 ping 通 R2 的 f0/1 口.

R3(config-if)#do ping 192.168.3.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.3.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 20/22/24 ms

C1 ping R1 的 fa0/1 口可以通.

VPCS[1]> ping 192.168.2.1
192.168.2.1 icmp_seq=1 ttl=255 time=52.919 ms
192.168.2.1 icmp_seq=2 ttl=255 time=15.975 ms
192.168.2.1 icmp_seq=3 ttl=255 time=12.942 ms
192.168.2.1 icmp_seq=4 ttl=255 time=9.955 ms
192.168.2.1 icmp_seq=5 ttl=255 time=45.973 ms

C1 ping R2 的 fa0/0 口不通

VPCS[1]> ping 192.168.2.2
192.168.2.2 icmp_seq=1 timeout
192.168.2.2 icmp_seq=2 timeout
192.168.2.2 icmp_seq=3 timeout
192.168.2.2 icmp_seq=4 timeout
192.168.2.2 icmp_seq=5 timeout

查看 R1 的路由表.

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/1

在 R2 上开启 debug 模式.

R2#debug ip icmp
ICMP packet debugging is on

C1 ping R2 的 fa0/0 口.

VPCS[1]> ping 192.168.2.2
192.168.2.2 icmp_seq=1 timeout
192.168.2.2 icmp_seq=2 timeout
192.168.2.2 icmp_seq=3 timeout
192.168.2.2 icmp_seq=4 timeout
192.168.2.2 icmp_seq=5 timeout

R2 收到了 C1 发送的 ICMP request 报文,但是它不知道如何到达 C1,因为丢弃了数据包,没有返回 ICMP reply 报文.

R2#
*Mar  1 00:07:22.991: ICMP: echo reply sent, src 192.168.2.2, dst 192.168.1.10
R2#
*Mar  1 00:07:24.987: ICMP: echo reply sent, src 192.168.2.2, dst 192.168.1.10
R2#
*Mar  1 00:07:26.987: ICMP: echo reply sent, src 192.168.2.2, dst 192.168.1.10
R2#
*Mar  1 00:07:28.995: ICMP: echo reply sent, src 192.168.2.2, dst 192.168.1.10
R2#
*Mar  1 00:07:30.995: ICMP: echo reply sent, src 192.168.2.2, dst 192.168.1.10
R2#

查看 R2 的路由表. 它没有到达 192.168.1.0/24 网段的路由.

R2#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.2.0/24 is directly connected, FastEthernet0/0
C    192.168.3.0/24 is directly connected, FastEthernet0/1

在 R2 上手动添加到达 192.168.1.0/24 网段的路由.

R2(config)#ip route 192.168.1.0 255.255.255.0 192.168.2.1
  • 192.168.1.0 是目的网络号
  • 255.255.255.0 是掩码
  • 192.168.2.1 是转发接口的 IP.

路由用来指导数据转发.

C1 上可以 ping 通 R2 的 fa0/0 口了.

VPCS[1]> ping 192.168.2.2
192.168.2.2 icmp_seq=1 ttl=254 time=40.957 ms
192.168.2.2 icmp_seq=2 ttl=254 time=30.926 ms
192.168.2.2 icmp_seq=3 ttl=254 time=40.922 ms
192.168.2.2 icmp_seq=4 ttl=254 time=24.935 ms
192.168.2.2 icmp_seq=5 ttl=254 time=41.919 ms

R2(config)#
*Mar  1 00:10:21.871: ICMP: echo reply sent, src 192.168.2.2, dst 192.168.1.10
R2(config)#
*Mar  1 00:10:22.911: ICMP: echo reply sent, src 192.168.2.2, dst 192.168.1.10
R2(config)#
*Mar  1 00:10:23.951: ICMP: echo reply sent, src 192.168.2.2, dst 192.168.1.10
R2(config)#
*Mar  1 00:10:24.979: ICMP: echo reply sent, src 192.168.2.2, dst 192.168.1.10
R2(config)#
*Mar  1 00:10:25.999: ICMP: echo reply sent, src 192.168.2.2, dst 192.168.1.10
R2(config)#

在 C1 上 ping R2 的 fa0/1 口,目标不可达.

VPCS[1]> ping 192.168.3.1
*192.168.1.1 icmp_seq=1 ttl=255 time=14.988 ms (ICMP type:3, code:1, Destination host unreachable)
*192.168.1.1 icmp_seq=2 ttl=255 time=21.983 ms (ICMP type:3, code:1, Destination host unreachable)
*192.168.1.1 icmp_seq=3 ttl=255 time=17.955 ms (ICMP type:3, code:1, Destination host unreachable)
*192.168.1.1 icmp_seq=4 ttl=255 time=50.970 ms (ICMP type:3, code:1, Destination host unreachable)
*192.168.1.1 icmp_seq=5 ttl=255 time=13.973 ms (ICMP type:3, code:1, Destination host unreachable)

查看 R1 的路由表. 没有到达 192.168.3.0/24 的路由.

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/1

在 R1 上添加到达 192.168.3.0/24 的路由.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#ip route 192.168.3.0 255.255.255.0 192.168.2.2

C1 ping R2 的 fa0/1 口可以通了.

VPCS[1]> ping 192.168.3.1
192.168.3.1 icmp_seq=1 ttl=254 time=74.711 ms
192.168.3.1 icmp_seq=2 ttl=254 time=24.948 ms
192.168.3.1 icmp_seq=3 ttl=254 time=33.946 ms
192.168.3.1 icmp_seq=4 ttl=254 time=33.944 ms
192.168.3.1 icmp_seq=5 ttl=254 time=62.964 ms

查看 R1 的路由表

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/1
S    192.168.3.0/24 [1/0] via 192.168.2.2
  • [1/0]:1 表示管理距离;0 表示度量值,表示管理员手动添加,信任度最好.

默认路由的应用场景及配置方法

C1 ping R3 的 fa0/0 口不通. 此时 C1 发送的 ICMP request 报文可以到达 R3,但是 R3 不知道到达 192.168.1.0/24 的路由,R3 不会给 C1 发送 ICMP reply 报文.

VPCS[1]> ping 192.168.3.2
192.168.3.2 icmp_seq=1 timeout
192.168.3.2 icmp_seq=2 timeout
192.168.3.2 icmp_seq=3 timeout
192.168.3.2 icmp_seq=4 timeout
192.168.3.2 icmp_seq=5 timeout

由于 R3 是单出口,所有数据包都要经过 fa0/0 口转发. 因此,可以设置全流量的默认路由. 这样可以免去繁琐的静态路由配置工作.

R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.3.1
  • 0.0.0.0/0.0.0.0 表示任意网络.

查看 R3 的路由表.

R3#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 192.168.3.1 to network 0.0.0.0

C    192.168.3.0/24 is directly connected, FastEthernet0/0
S*   0.0.0.0/0 [1/0] via 192.168.3.1

在 R3 上 ping C1 可以通.

R3#ping 192.168.1.10

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 92/101/116 ms
R3#ping 192.168.1.20

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.20, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 92/107/120 ms

在 R3 上 ping R1 可以通.

R3#ping 192.168.2.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 44/52/72 ms

静态浮动路由的应用场景及配置方法

保存 R1 的配置以便关电重启后不会丢失已有配置.

R1#write
Building configuration...
[OK]

右键 R1 点击 Stop.
在这里插入图片描述
在 R1 的 Slot1 上添加一块任意板卡,此处我使用的是 NM-16ESW. R1 的 fa0/1 口连接 R2 的 fa0/0 口不变. R2 的 fa0/1 连接 R3 的 fa0/1. R1 的 fa1/0 连接 R3 的 fa0/0.
在这里插入图片描述

查看 R1 的 IP 配置.

R1#show ip int b
Interface                  IP-Address      OK? Method Status                Protocol
FastEthernet0/0            192.168.1.1     YES NVRAM  up                    up
FastEthernet0/1            192.168.2.1     YES NVRAM  up                    up
FastEthernet1/0            unassigned      YES unset  up                    down
FastEthernet1/1            unassigned      YES unset  up                    down
FastEthernet1/2            unassigned      YES unset  up                    down
FastEthernet1/3            unassigned      YES unset  up                    down
FastEthernet1/4            unassigned      YES unset  up                    down
FastEthernet1/5            unassigned      YES unset  up                    down
FastEthernet1/6            unassigned      YES unset  up                    down
FastEthernet1/7            unassigned      YES unset  up                    down
FastEthernet1/8            unassigned      YES unset  up                    down
FastEthernet1/9            unassigned      YES unset  up                    down
FastEthernet1/10           unassigned      YES unset  up                    down
FastEthernet1/11           unassigned      YES unset  up                    down
FastEthernet1/12           unassigned      YES unset  up                    down
FastEthernet1/13           unassigned      YES unset  up                    down
FastEthernet1/14           unassigned      YES unset  up                    down
FastEthernet1/15           unassigned      YES unset  up                    down
Vlan1                      unassigned      YES unset  up                    down

R1 上 fa0/0 和 fa0/1 的配置都还存在.

配置 192.168.3.0/24 网段.

将 R1 的 fa1/0 转换为三层口,并配置 IP.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int fa1/0
R1(config-if)#no switchport
R1(config-if)#ip add 192.168.3.1 255.255.255.0
R1(config-if)#no shut

为 R3 的 fa0/0 配置 IP.

R3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R3(config)#int fa0/0
R3(config-if)#ip add 192.168.3.2 255.255.255.0
R3(config-if)#no shut

配置 192.168.4.0/24 网段.

为 R2 的 fa0/1 配置 IP.

R2(config)#int fa0/1
R2(config-if)#ip add 192.168.4.1 255.255.255.0
R2(config-if)#no shut

为 R3 的 fa0/1 配置 IP

R3(config-if)#int fa0/1
R3(config-if)#ip add 192.168.4.2
R3(config-if)#ip add 192.168.4.2 255.255.255.0
R3(config-if)#no shut

在 R2 上添加环回测试口 loopbacl 0,并配置 IP.

R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#int loopback 0
R2(config-if)#ip add 2.2.2.2 255.255.255.0
R2(config-if)#no shut

此时,R1 上到达 loopbacl 0 的拓扑路径有 2 条. R1 >> R2,R1 >> R3 >> R2.

在 R1 上配置直接到达 2.2.2.0/24 的路由.

R1(config)#ip route 2.2.2.0 255.255.255.0 192.168.2.2

查看 R1 的路由表.

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     2.0.0.0/24 is subnetted, 1 subnets
S       2.2.2.0 [1/0] via 192.168.2.2
C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/1
C    192.168.3.0/24 is directly connected, FastEthernet1/0

R1 上可以 ping 通 2.2.2.2 了.

R1#ping 2.2.2.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 2.2.2.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 20/29/40 ms

在 R1 上配置经过 R3 转发到达 2.2.2.0/24 的路由.

R1(config)#ip route 2.2.2.0 255.255.255.0 192.168.3.2

查看 R1 的路由表. 此时到达 2.2.2.0/24 的路由有 2 条. 这样实现了负载均衡.

R1(config)#do show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     2.0.0.0/24 is subnetted, 1 subnets
S       2.2.2.0 [1/0] via 192.168.3.2
                [1/0] via 192.168.2.2
C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/1
C    192.168.3.0/24 is directly connected, FastEthernet1/0

使用 traceroute 命令跟踪,可以发现发送到 2.2.2.2 的的数据包一个从 fa0/1 转发,一个从 fa1/0 转发.

R1#traceroute 2.2.2.2

Type escape sequence to abort.
Tracing the route to 2.2.2.2

  1 192.168.2.2 28 msec *  *
R1#traceroute 2.2.2.2

Type escape sequence to abort.
Tracing the route to 2.2.2.2

  1 192.168.2.2 44 msec
    192.168.3.2 32 msec
    192.168.2.2 20 msec
R1#traceroute 2.2.2.2

Type escape sequence to abort.
Tracing the route to 2.2.2.2

  1 192.168.3.2 36 msec
    192.168.2.2 32 msec
    192.168.3.2 20 msec
R1#

我们希望的效果是正常情况下,到达 2.2.2.2 的数据包通过 fa0/1 转发;如果 fa0/1 连接的链路不通,则通过 fa1/0 转发. 此时,使用浮动路由.

默认情况下路由的管理距离为 1,最大可以设置为 255.

R1(config)#ip route 2.2.2.0 255.255.255.0 192.168.3.2 ?
  <1-255>    Distance metric for this route
  name       Specify name of the next hop
  permanent  permanent route
  tag        Set tag for this route
  track      Install route depending on tracked item
  <cr>

将通过 fa1/0 到达 2.2.2.2 的路由的管理距离设为10.

R1(config)#ip route 2.2.2.0 255.255.255.0 192.168.3.2 10

查看 R1 的路由表. 此时只显示从 fa0/1 到达 2.2.2.2 的路由.

R1(config)#do show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     2.0.0.0/24 is subnetted, 1 subnets
S       2.2.2.0 [1/0] via 192.168.2.2
C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/1
C    192.168.3.0/24 is directly connected, FastEthernet1/0

跟踪包的路由

R1#traceroute 2.2.2.2

Type escape sequence to abort.
Tracing the route to 2.2.2.2

  1 192.168.2.2 28 msec 24 msec 20 msec
R1#traceroute 2.2.2.2

Type escape sequence to abort.
Tracing the route to 2.2.2.2

  1 192.168.2.2 52 msec 36 msec 20 msec
R1#traceroute 2.2.2.2

Type escape sequence to abort.
Tracing the route to 2.2.2.2

  1 192.168.2.2 40 msec 24 msec 20 msec

手动 shutdown fa0/1 接口.

R1(config)#int fa0/1
R1(config-if)#shut

查看 R1 的路由表. 由于 fa0/1 口 down 掉了,通过 fa1/0 口转发到达 2.2.2.2 的路由就像浮上来一样,替换掉了通过 fa0/1 转发到达 2.2.2.2 的路由.

R1(config-if)#do show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     2.0.0.0/24 is subnetted, 1 subnets
S       2.2.2.0 [10/0] via 192.168.3.2
C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.3.0/24 is directly connected, FastEthernet1/0

此时如果 R3 到 2.2.2.2 的路由配置完毕,就能正常通信了.

在这个场景下,R1 可以看作企业网的出口路由器,R2 可以看作是运营商 A,R3 可以看作运营商 B,2.2.2.2 可以看作是公网 IP.
这个时候可以使用默认路由,配合浮动路由. 当运营商 A 网络正常时通过 A 连接公网,A 网络异常的时候通过运营商 B 访问公网.

先删除先前配置的路由.

R1(config)#no ip route 2.2.2.0 255.255.255.0 192.168.2.2
R1(config)#no ip route 2.2.2.0 255.255.255.0 192.168.3.2 10

配置默认浮动路由.

R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.2
R1(config)#ip route 0.0.0.0 0.0.0.0 192.168.3.2 10

手动开启 fa0/1 接口.

R1(config)#int fa0/1
R1(config-if)#no shut

查看 R1 的路由表.

R1#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is 192.168.2.2 to network 0.0.0.0

C    192.168.1.0/24 is directly connected, FastEthernet0/0
C    192.168.2.0/24 is directly connected, FastEthernet0/1
C    192.168.3.0/24 is directly connected, FastEthernet1/0
S*   0.0.0.0/0 [1/0] via 192.168.2.2

R1 的 fa0/0 下可以看作企业网. 此时 R1 有 3 个 C 路由,一个 S* 路由. C 路由的优先级高于 S 路由. 从公网到达内部企业网的流量通过 fa0/0 转发,其它流量按照 S* 路由转发.


6. 思科设备NAT实战全集

知识点:

  • NAT 的应用场景及工作原理
  • 静态/动态/PAT 的配置方法
  • 静态端口映射的配置方法
  • 效果综合测试

NAT 的应用场景及工作原理

网络地址转换(NAT) 用于节约 IPv4 地址资源,减缓 IPv4 资源枯竭的速度.

实验网络拓扑如下. R1 是企业网出口路由器,它的上联设备是运营商 R2. SW1 是企业网内部交换机. C1 和 C2 是企业网内 2 个用户. R1 和 R2 使用 c2691 模拟,SW1 是普通交换机. R1 的 fa0/0 口连接 SW1 的 8 口,C1 和 C2 分别连接 SW1 的 1 口和 2 口. R1 的 fa0/1 口连接 R2 的 fa0/0 口.
在这里插入图片描述
为 C1 和 C2 配置 IP.

VPCS[1]> ip 192.168.1.10 192.168.1.1 24
Checking for duplicate address...
PC1 : 192.168.1.10 255.255.255.0 gateway 192.168.1.1

VPCS[1]> 2
VPCS[2]> ip 192.168.1.20 192.168.1.1 24
Checking for duplicate address...
PC2 : 192.168.1.20 255.255.255.0 gateway 192.168.1.1

C2 ping C1 可以通.

VPCS[2]> ping 192.168.1.10
192.168.1.10 icmp_seq=1 ttl=64 time=1.998 ms
192.168.1.10 icmp_seq=2 ttl=64 time=2.999 ms
192.168.1.10 icmp_seq=3 ttl=64 time=2.999 ms
192.168.1.10 icmp_seq=4 ttl=64 time=2.998 ms
192.168.1.10 icmp_seq=5 ttl=64 time=1.999 ms

配置 R1 的 fa0/0 口为企业网的网关.

R1#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R1(config)#int fa0/0
R1(config-if)#ip add 192.168.1.1 255.255.255.0
R1(config-if)#no shut

在 R1 上 ping C1 和 C2 可以通.

R1(config-if)#do ping 192.168.1.10

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.10, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 8/14/24 ms
R1(config-if)#do ping 192.168.1.20

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.20, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 8/15/24 ms

R1 可以通过固定 IP 或 PPPoE 拨号上网.

假设这里 R1 使用固定 IP 连接互联网.

为 R1 的 fa0/1 口配置公网 IP.

R1(config-if)#int fa0/1
R1(config-if)#ip add 202.106.1.2 255.255.255.252
R1(config-if)#no shut

为 R2 的 fa0/0 口配置公网 IP.

R2#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#int fa0/0
R2(config-if)#ip add 202.106.1.1 255.255.255.252
R2(config-if)#no shut

在 R2 上 ping R1 可以通.

R2(config-if)#end
R2#
*Mar  1 00:08:16.507: %SYS-5-CONFIG_I: Configured from console by console
R2#ping 202.106.1.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 202.106.1.2, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 20/27/36 ms

在 C2 上 ping R2 不通.

VPCS[2]> ping 202.106.1.1
202.106.1.1 icmp_seq=1 timeout
202.106.1.1 icmp_seq=2 timeout
202.106.1.1 icmp_seq=3 timeout
202.106.1.1 icmp_seq=4 timeout
202.106.1.1 icmp_seq=5 timeout

在 R2 上开启 debug.

R2#debug ip icmp
ICMP packet debugging is on

R2 收到了 C2 发送的 ICMP request 报文,但是不会返回 ICMP reply 报文.

R2#
*Mar  1 00:14:17.895: ICMP: echo reply sent, src 202.106.1.1, dst 192.168.1.20
R2#
*Mar  1 00:14:19.887: ICMP: echo reply sent, src 202.106.1.1, dst 192.168.1.20
R2#
*Mar  1 00:14:21.883: ICMP: echo reply sent, src 202.106.1.1, dst 192.168.1.20
R2#
*Mar  1 00:14:23.895: ICMP: echo reply sent, src 202.106.1.1, dst 192.168.1.20
R2#
*Mar  1 00:14:25.907: ICMP: echo reply sent, src 202.106.1.1, dst 192.168.1.20

R2 的路由表中没有到达 C2 的路由.

R2#show ip route
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP
       D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area
       N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2
       E1 - OSPF external type 1, E2 - OSPF external type 2
       i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2
       ia - IS-IS inter area, * - candidate default, U - per-user static route
       o - ODR, P - periodic downloaded static route

Gateway of last resort is not set

     202.106.1.0/30 is subnetted, 1 subnets
C       202.106.1.0 is directly connected, FastEthernet0/0

在这个场景下,C2 的 IP 地址是私有地址,R2 是公网设备. 公网路由表中不能出现私有地址. 此时就需要使用 NAT 技术,将私有地址转换为 公有地址.


静态/动态/PAT 的配置方法

静态 NAT 指将一条公有地址和一条私有地址对应起来. 这种方法不能节约公有地址.

在 R1 上指定 fa0/0 为 inside 接口.

R1(config)#int fa0/0
R1(config-if)#ip nat inside

在 R1 上指定 fa0/1 为 outside 接口.

R1(config-if)#int fa0/1
R1(config-if)#ip nat outside

现在分配得到 1 个公网 IP 218.8.8.8.

将公网 IP 218.8.8.8 与 C1 的 私有 IP 对应起来.

R1(config)#ip nat inside source static 192.168.1.10 218.8.8.8

查看 NAT 转换表.

R1#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
--- 218.8.8.8          192.168.1.10       ---                ---

在 R2 上添加到达 218.8.8.8 的路由.

R2(config)#ip route 218.8.8.8 255.255.255.255 202.106.1.2

此时,C1 就能访问公网了.

VPCS[1]> ping 202.106.1.1
202.106.1.1 icmp_seq=1 ttl=254 time=41.968 ms
202.106.1.1 icmp_seq=2 ttl=254 time=30.946 ms
202.106.1.1 icmp_seq=3 ttl=254 time=75.937 ms
202.106.1.1 icmp_seq=4 ttl=254 time=41.940 ms
202.106.1.1 icmp_seq=5 ttl=254 time=42.922 ms

R2(config)#
*Mar  1 00:26:46.403: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.8
R2(config)#
*Mar  1 00:26:47.443: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.8
R2(config)#
*Mar  1 00:26:48.503: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.8
R2(config)#
*Mar  1 00:26:49.547: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.8
R2(config)#
*Mar  1 00:26:50.603: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.8

开启 NAT debug.

R1#debug ip nat ?
  <1-99>     Access list
  cce        NAT-CCE support events
  detailed   NAT detailed events
  fragment   NAT fragment events
  generic    NAT generic ALG handler events
  h323       NAT H.323 events
  ipsec      NAT IPSec events
  nvi        NVI events
  piggyback  NAT Piggyback support events
  port       NAT PORT events
  pptp       NAT PPTP events
  route      NAT Static route events
  sbc        NAT SIP Session Border Controller events
  sip        NAT SIP events
  skinny     NAT skinny events
  vrf        NAT VRF events
  wlan-nat   WLAN NAT events
  <cr>

R1#debug ip nat
IP NAT debugging is on

C1 发送数据包时,R1 将 192.168.1.10 转换为 218.8.8.8. C1 接收数据包时,R1 将 218.8.8.8 转换为 192.168.1.10.

R1#
*Mar  1 00:44:25.351: NAT*: s=192.168.1.10->218.8.8.8, d=202.106.1.1 [25066]
*Mar  1 00:44:25.391: NAT*: s=202.106.1.1, d=218.8.8.8->192.168.1.10 [25066]
R1#
*Mar  1 00:44:26.415: NAT*: s=192.168.1.10->218.8.8.8, d=202.106.1.1 [25067]
*Mar  1 00:44:26.435: NAT*: s=202.106.1.1, d=218.8.8.8->192.168.1.10 [25067]
R1#
*Mar  1 00:44:27.431: NAT*: s=192.168.1.10->218.8.8.8, d=202.106.1.1 [25068]
*Mar  1 00:44:27.475: NAT*: s=202.106.1.1, d=218.8.8.8->192.168.1.10 [25068]
R1#
*Mar  1 00:44:28.503: NAT*: s=192.168.1.10->218.8.8.8, d=202.106.1.1 [25069]
*Mar  1 00:44:28.523: NAT*: s=202.106.1.1, d=218.8.8.8->192.168.1.10 [25069]
R1#
*Mar  1 00:44:29.531: NAT*: s=192.168.1.10->218.8.8.8, d=202.106.1.1 [25070]
*Mar  1 00:44:29.575: NAT*: s=202.106.1.1, d=218.8.8.8->192.168.1.10 [25070]

但是,C2 仍然不能访问公网. 因为 C2 无法获得公网 IP.

VPCS[2]> ping 202.106.1.1
202.106.1.1 icmp_seq=1 timeout
202.106.1.1 icmp_seq=2 timeout
202.106.1.1 icmp_seq=3 timeout
202.106.1.1 icmp_seq=4 timeout
202.106.1.1 icmp_seq=5 timeout

这个时候,需要使用 动态 NAT.

动态 NAT 首先建立一个公网 IP 池,私有地址访问公网时在公网 IP 池中取出 1 个公网 IP 并建立对应关系,在生存时间过后将这个公网 IP 返还公网地址池以便其它私有地址使用.

首先删除先前配置的静态 NAT.

R1(config)#no ip nat inside source static 192.168.1.10 218.8.8.8
R1(config)#ip nat pool test ?
  A.B.C.D        Start IP address
  netmask        Specify the network mask
  prefix-length  Specify the prefix length

R1(config)#ip nat pool test 218.8.8.1 218.8.8.100 netmask ?
  A.B.C.D  Network mask

建立公网 IP 地址池,名称是 test,起止范围是 218.8.8.1 ~ 218.8.8.100.

R1(config)#ip nat pool test 218.8.8.1 218.8.8.100 netmask 255.255.255.0

建立访问控制列表 10. 列表中的私有地址被允许建立 NAT.

R1(config)#access-list 10 permit 192.168.1.0 0.0.0.255
  • 0 0.0.0.255 反掩码

配置动态 NAT. 允许列表 10 中的私有地址在公有地址池 test 中建立 NAT.

R1(config)#ip nat inside source list 10 pool test

此时 NAT 转换表为空. 因为还没有私有地址去取回公有地址.

R1#show ip nat translations

在 R2 上建立到达 218.8.8.0/24 的路由.

R2(config)#ip route 218.8.8.0 255.255.255.0 202.106.1.2

C1 可以访问公网.

VPCS[1]> ping 202.106.1.1
202.106.1.1 icmp_seq=1 ttl=254 time=62.959 ms
202.106.1.1 icmp_seq=2 ttl=254 time=41.920 ms
202.106.1.1 icmp_seq=3 ttl=254 time=51.934 ms
202.106.1.1 icmp_seq=4 ttl=254 time=32.925 ms
202.106.1.1 icmp_seq=5 ttl=254 time=40.933 ms

R2(config)#
*Mar  1 00:58:40.799: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.2
R2(config)#
*Mar  1 00:58:41.815: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.2
R2(config)#
*Mar  1 00:58:42.891: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.2
R2(config)#
*Mar  1 00:58:43.923: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.2
R2(config)#
*Mar  1 00:58:44.959: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.2

C2 也可以访问公网了.

VPCS[2]> ping 202.106.1.1
202.106.1.1 icmp_seq=1 ttl=254 time=41.975 ms
202.106.1.1 icmp_seq=2 ttl=254 time=51.955 ms
202.106.1.1 icmp_seq=3 ttl=254 time=52.987 ms
202.106.1.1 icmp_seq=4 ttl=254 time=44.938 ms
202.106.1.1 icmp_seq=5 ttl=254 time=62.961 ms

R2(config)#
*Mar  1 00:59:38.739: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.1
R2(config)#
*Mar  1 00:59:39.771: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.1
R2(config)#
*Mar  1 00:59:40.827: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.1
R2(config)#
*Mar  1 00:59:41.875: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.1
R2(config)#
*Mar  1 00:59:42.951: ICMP: echo reply sent, src 202.106.1.1, dst 218.8.8.1

在 R2 上 ping 218.8.8.1 其实是在 ping 192.168.1.20

R2(config)#do ping 218.8.8.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 218.8.8.1, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 36/52/68 ms

在 R2 上 ping 218.8.8.2 其实是在 ping 192.168.1.10

R2(config)#do ping 218.8.8.2

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 218.8.8.2, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 64/67/72 ms

查看 NAT 转换表. 此时动态映射还未过期.

R1#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 218.8.8.2:41062   192.168.1.10:41062 202.106.1.1:41062  202.106.1.1:41062
icmp 218.8.8.2:41318   192.168.1.10:41318 202.106.1.1:41318  202.106.1.1:41318
icmp 218.8.8.2:41574   192.168.1.10:41574 202.106.1.1:41574  202.106.1.1:41574
icmp 218.8.8.2:41830   192.168.1.10:41830 202.106.1.1:41830  202.106.1.1:41830
icmp 218.8.8.2:42086   192.168.1.10:42086 202.106.1.1:42086  202.106.1.1:42086
--- 218.8.8.2          192.168.1.10       ---                ---
icmp 218.8.8.1:37478   192.168.1.20:37478 202.106.1.1:37478  202.106.1.1:37478
icmp 218.8.8.1:37734   192.168.1.20:37734 202.106.1.1:37734  202.106.1.1:37734
icmp 218.8.8.1:37990   192.168.1.20:37990 202.106.1.1:37990  202.106.1.1:37990
icmp 218.8.8.1:38246   192.168.1.20:38246 202.106.1.1:38246  202.106.1.1:38246
icmp 218.8.8.1:38502   192.168.1.20:38502 202.106.1.1:38502  202.106.1.1:38502
--- 218.8.8.1          192.168.1.20       ---                ---

一般 动态 NAT 应用在运营商网络中,建立公网 IP 池,向家庭或个人用户下发公网地址. 它在企业网中极少出现.

稍微多见的情形是,运营商为企业网只提供一个公网 IP. 这个时候需要使用 PAT.

PAT 是端口地址映射. 它使用 1 个公网 IP 的不同端口号和不同的私有地址建立映射关系.

查看 running-config 中 NAT 部分的内容.

R1#show running-config  | section nat
 ip nat inside
 ip nat outside
ip nat pool test 218.8.8.1 218.8.8.100 netmask 255.255.255.0
ip nat inside source list 10 pool test

清除 NAT 转换表中的所有条目. 如果存在条目,被使用的条目配置无法删除.

R1#clear ip nat translation *

删除地址池.

R1(config)#no ip nat pool test 218.8.8.1 218.8.8.100 netmask 255.255.255.0

删除动态 NAT.

R1(config)#no ip nat inside source list 10 pool test

重新建立公网 IP 池 test,起止地址都是 218.8.8.1,也就是说地址池中只有这一个公网 IP.

R1(config)#ip nat pool test 218.8.8.1 218.8.8.1 netmask 255.255.255.0

配置 PAT. 其命令就是在动态 NAT 的命令后面加一个 overload.

R1(config)#ip nat inside source list 10 pool test overload

C1 可以访问公网

VPCS[1]> ping 202.106.1.1
202.106.1.1 icmp_seq=1 ttl=254 time=40.995 ms
202.106.1.1 icmp_seq=2 ttl=254 time=70.959 ms
202.106.1.1 icmp_seq=3 ttl=254 time=34.924 ms
202.106.1.1 icmp_seq=4 ttl=254 time=52.933 ms
202.106.1.1 icmp_seq=5 ttl=254 time=31.943 ms

R1(config)#
*Mar  1 01:14:14.035: NAT*: s=192.168.1.10->218.8.8.1, d=202.106.1.1 [26854]
*Mar  1 01:14:14.051: NAT*: s=202.106.1.1, d=218.8.8.1->192.168.1.10 [26854]
R1(config)#
*Mar  1 01:14:15.079: NAT*: s=192.168.1.10->218.8.8.1, d=202.106.1.1 [26855]
*Mar  1 01:14:15.127: NAT*: s=202.106.1.1, d=218.8.8.1->192.168.1.10 [26855]
R1(config)#
*Mar  1 01:14:16.131: NAT*: s=192.168.1.10->218.8.8.1, d=202.106.1.1 [26856]
*Mar  1 01:14:16.167: NAT*: s=202.106.1.1, d=218.8.8.1->192.168.1.10 [26856]
R1(config)#
*Mar  1 01:14:17.179: NAT*: s=192.168.1.10->218.8.8.1, d=202.106.1.1 [26857]
*Mar  1 01:14:17.223: NAT*: s=202.106.1.1, d=218.8.8.1->192.168.1.10 [26857]
R1(config)#
*Mar  1 01:14:18.227: NAT*: s=192.168.1.10->218.8.8.1, d=202.106.1.1 [26858]
*Mar  1 01:14:18.255: NAT*: s=202.106.1.1, d=218.8.8.1->192.168.1.10 [26858]

C2 可以访问公网.

VPCS[2]> ping 202.106.1.1
202.106.1.1 icmp_seq=1 ttl=254 time=63.949 ms
202.106.1.1 icmp_seq=2 ttl=254 time=38.944 ms
202.106.1.1 icmp_seq=3 ttl=254 time=44.919 ms
202.106.1.1 icmp_seq=4 ttl=254 time=32.926 ms
202.106.1.1 icmp_seq=5 ttl=254 time=48.920 ms

R1(config)#
*Mar  1 01:15:29.875: NAT*: s=192.168.1.20->218.8.8.1, d=202.106.1.1 [26930]
*Mar  1 01:15:29.919: NAT*: s=202.106.1.1, d=218.8.8.1->192.168.1.20 [26930]
R1(config)#
*Mar  1 01:15:30.939: NAT*: s=192.168.1.20->218.8.8.1, d=202.106.1.1 [26931]
*Mar  1 01:15:30.959: NAT*: s=202.106.1.1, d=218.8.8.1->192.168.1.20 [26931]
R1(config)#
*Mar  1 01:15:31.959: NAT*: s=192.168.1.20->218.8.8.1, d=202.106.1.1 [26932]
*Mar  1 01:15:31.995: NAT*: s=202.106.1.1, d=218.8.8.1->192.168.1.20 [26932]
R1(config)#
*Mar  1 01:15:33.003: NAT*: s=192.168.1.20->218.8.8.1, d=202.106.1.1 [26933]
*Mar  1 01:15:33.043: NAT*: s=202.106.1.1, d=218.8.8.1->192.168.1.20 [26933]
R1(config)#
*Mar  1 01:15:34.051: NAT*: s=192.168.1.20->218.8.8.1, d=202.106.1.1 [26934]
*Mar  1 01:15:34.083: NAT*: s=202.106.1.1, d=218.8.8.1->192.168.1.20 [26934]

查看 NAT 转换表.

R1#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
icmp 218.8.8.1:50537   192.168.1.10:50537 202.106.1.1:50537  202.106.1.1:50537
icmp 218.8.8.1:50793   192.168.1.10:50793 202.106.1.1:50793  202.106.1.1:50793
icmp 218.8.8.1:51049   192.168.1.10:51049 202.106.1.1:51049  202.106.1.1:51049
icmp 218.8.8.1:51561   192.168.1.10:51561 202.106.1.1:51561  202.106.1.1:51561
icmp 218.8.8.1:51817   192.168.1.10:51817 202.106.1.1:51817  202.106.1.1:51817
icmp 218.8.8.1:48233   192.168.1.20:48233 202.106.1.1:48233  202.106.1.1:48233
icmp 218.8.8.1:48489   192.168.1.20:48489 202.106.1.1:48489  202.106.1.1:48489
icmp 218.8.8.1:48745   192.168.1.20:48745 202.106.1.1:48745  202.106.1.1:48745
icmp 218.8.8.1:49001   192.168.1.20:49001 202.106.1.1:49001  202.106.1.1:49001
icmp 218.8.8.1:49257   192.168.1.20:49257 202.106.1.1:49257  202.106.1.1:49257

在现网绝大多数情况下,运营商只分配 R1 一个公网 IP 出口地址. 此时可以让 PAT 使用这个路由器出口地址.

清除 NAT 转换表条目.

R1#clear ip nat translation *

删除公网地址池

R1(config)#no ip nat pool test

访问控制列表不变

R1#show ip access-lists
Standard IP access list 10
    10 permit 192.168.1.0, wildcard bits 0.0.0.255 (55 matches)

配置 PAT 使用 fa0/1 的公网 IP.

R1(config)#ip nat inside source list 10 interface fa0/1 overload

C1 可以访问公网.

VPCS[1]> ping 202.106.1.1
202.106.1.1 icmp_seq=1 ttl=254 time=41.926 ms
202.106.1.1 icmp_seq=2 ttl=254 time=44.936 ms
202.106.1.1 icmp_seq=3 ttl=254 time=38.938 ms
202.106.1.1 icmp_seq=4 ttl=254 time=40.939 ms
202.106.1.1 icmp_seq=5 ttl=254 time=40.938 ms

R1(config)#
*Mar  1 01:23:14.651: NAT*: s=192.168.1.10->202.106.1.2, d=202.106.1.1 [27395]
*Mar  1 01:23:14.663: NAT*: s=202.106.1.1, d=202.106.1.2->192.168.1.10 [27395]
R1(config)#
*Mar  1 01:23:15.695: NAT*: s=192.168.1.10->202.106.1.2, d=202.106.1.1 [27396]
*Mar  1 01:23:15.711: NAT*: s=202.106.1.1, d=202.106.1.2->192.168.1.10 [27396]
R1(config)#
*Mar  1 01:23:16.743: NAT*: s=192.168.1.10->202.106.1.2, d=202.106.1.1 [27397]
*Mar  1 01:23:16.763: NAT*: s=202.106.1.1, d=202.106.1.2->192.168.1.10 [27397]
R1(config)#
*Mar  1 01:23:17.767: NAT*: s=192.168.1.10->202.106.1.2, d=202.106.1.1 [27398]
*Mar  1 01:23:17.795: NAT*: s=202.106.1.1, d=202.106.1.2->192.168.1.10 [27398]
R1(config)#
*Mar  1 01:23:18.807: NAT*: s=192.168.1.10->202.106.1.2, d=202.106.1.1 [27399]
*Mar  1 01:23:18.851: NAT*: s=202.106.1.1, d=202.106.1.2->192.168.1.10 [27399]

C2 可以访问公网.

VPCS[2]> ping 202.106.1.1
202.106.1.1 icmp_seq=1 ttl=254 time=106.941 ms
202.106.1.1 icmp_seq=2 ttl=254 time=36.945 ms
202.106.1.1 icmp_seq=3 ttl=254 time=46.921 ms
202.106.1.1 icmp_seq=4 ttl=254 time=37.976 ms
202.106.1.1 icmp_seq=5 ttl=254 time=46.919 ms

R1(config)#
*Mar  1 01:23:52.811: NAT*: s=192.168.1.20->202.106.1.2, d=202.106.1.1 [27433]
*Mar  1 01:23:52.883: NAT*: s=202.106.1.1, d=202.106.1.2->192.168.1.20 [27433]
R1(config)#
*Mar  1 01:23:53.895: NAT*: s=192.168.1.20->202.106.1.2, d=202.106.1.1 [27434]
*Mar  1 01:23:53.935: NAT*: s=202.106.1.1, d=202.106.1.2->192.168.1.20 [27434]
R1(config)#
*Mar  1 01:23:54.939: NAT*: s=192.168.1.20->202.106.1.2, d=202.106.1.1 [27435]
*Mar  1 01:23:54.971: NAT*: s=202.106.1.1, d=202.106.1.2->192.168.1.20 [27435]
R1(config)#
*Mar  1 01:23:55.995: NAT*: s=192.168.1.20->202.106.1.2, d=202.106.1.1 [27436]
*Mar  1 01:23:56.019: NAT*: s=202.106.1.1, d=202.106.1.2->192.168.1.20 [27436]
R1(config)#
*Mar  1 01:23:57.043: NAT*: s=192.168.1.20->202.106.1.2, d=202.106.1.1 [27437]
*Mar  1 01:23:57.059: NAT*: s=202.106.1.1, d=202.106.1.2->192.168.1.20 [27437]

静态端口映射的配置方法

静态端口映射是将私有地址的端口号与公有地址的端口号建立对应关系. 这样可以让内网服务器在公网中提供服务.

实验网络拓扑如下. 添加 1 台 R3 模拟服务器,R3的 f0/0 连接 SW1 的 3 口. 现在需要实现在 R2 上使用 telnet 远程登录 R3.
在这里插入图片描述
为 R3 配置 IP.

R3#conf t
Enter configuration commands, one per line.  End with CNTL/Z.
R3(config)#int fa0/0
R3(config-if)#ip add 192.168.1.80 255.255.255.0
R3(config-if)#no shut

配置 R3 到公网的路由.

R3(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1

此时,可以将 R3 完全看作一台服务器了.

R3 ping 网关可以通了.

R3#ping 192.168.1.1

Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 192.168.1.1, timeout is 2 seconds:
.!!!!
Success rate is 80 percent (4/5), round-trip min/avg/max = 16/28/40 ms

在 R3 上开启远程管理.

R3(config)#line vty 0 4
R3(config-line)#password abc
R3(config-line)#login
R3(config-line)#exit
R3(config)#enable secret abc
R1(config)#ip nat inside source static tcp ?
  A.B.C.D  Inside local IP address

R1(config)#ip nat inside source static tcp 192.168.1.80 ?
  <1-65535>  Local UDP/TCP port

R1(config)#ip nat inside source static tcp 192.168.1.80 23 ?
  A.B.C.D    Inside global IP address
  interface  Specify interface for global address

在 R1 上配置静态端口映射.

R1(config)#ip nat inside source static tcp 192.168.1.80 23 interface fa0/1 23

查看 NAT 转换表.

R1(config)#end
R1#show ip nat translations
Pro Inside global      Inside local       Outside local      Outside global
tcp 202.106.1.2:23     192.168.1.80:23    ---                ---

在 R2 上从公网 telnet 登录 R3 成功.

R2#telnet 202.106.1.2
Trying 202.106.1.2 ... Open


User Access Verification

Password:
R3>enable
Password:
R3#

查看 NAT 配置.

R1#show running-config | section nat
 ip nat inside
 ip nat outside
ip nat inside source list 10 interface FastEthernet0/1 overload
ip nat inside source static tcp 192.168.1.80 23 interface FastEthernet0/1 23

效果综合测试


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/173049.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

YOLO_V8训练自己的数据集

YOLO_V8在2023年开年横空出世&#xff0c;在春节前还得卷一下。由于YOLO_V8和YOLO_V5是同一个作者&#xff0c;所以很多操作都是一样的&#xff0c;下面主要描述一下如何用自己的数据集进行训练和测试&#xff08;非命令行的方式&#xff09;。1、训练数据和模型的目录结构这里…

设计模式学习(九):Abstract Factory抽象工厂模式

目录 一、什么是Abstract Factory模式 二、Abstract Factory示例代码 2.1 类之间的关系 2.2 抽象的零件:ltem类 2.3 抽象的零件:Link类 2.4 抽象的零件:Tray类 2.5 抽象的产品: Page类 2.6 抽象的工厂:Factory类 2.7 使用工厂将零件组装称为产品:Main类 2.8 具体的工厂…

linux三剑客之AWK

目录 AWK是什么 AWK基本结构 a.txt的文本实例 AWK内置变量 a.txt的文本实例 AWK自定义变量 a.txt的文本实例 AWK内置函数 a.txt的文本实例 awk高级输出 a.txt的文本实例 排序输出 a.txt的文本实例 条件选择输出 a.txt的文本实例 控制语句 a.txt的文本实例 AWK是什…

Java SE 继承和多态

继承和多态 1. 继承 1.1 为什么需要继承 Java中使用类对现实世界中实体来进行描述&#xff0c;类经过实例化之后的产物对象&#xff0c;则可以用来表示现实中的实体&#xff0c;但是 现实世界错综复杂&#xff0c;事物之间可能会存在一些关联&#xff0c;那在设计程序是就需…

Elasticsearch7.8.0版本高级查询—— 指定查询字段查询文档

目录一、初始化文档数据二、指定查询字段查询文档2.1、概述2.2、示例一、初始化文档数据 在 Postman 中&#xff0c;向 ES 服务器发 POST 请求 &#xff1a;http://localhost:9200/user/_doc/1&#xff0c;请求体内容为&#xff1a; {"name":"张三","…

Git知识学习

主要内容&#xff1a;熟练掌握Git、GitHub、GitLab、Gitee码云的使用 文章目录1.Git概述1.1版本控制1.2版本控制工具1.3Git和代码托管中心2.Git常用命令2.1设置用户签名2.2初始化本地库2.3查看本地库状态2.3.1首次查看2.3.2新增文件2.3.3再次查看2.4添加暂存区2.4.1将工作区文件…

! LaTeX Error: File xxx.sty not found-统一解决办法

在使用一些模板时常见这个错&#xff0c;其实就是缺宏包&#xff01;解决方案如下&#xff01; 第一步&#xff1a;在网站 https://ctan.org/pkg 找到你缺失的宏包&#xff0c;下载zip文件。 第二步&#xff1a;将解压后的文件夹复制到安装路径下&#xff1a; 如&#xff…

aws ecs 理解任务和容器的资源分配

参考资料 如何在 Amazon ECS 中为任务分配内存&#xff1f; 关于 Amazon ECS 中的 CPU 分配&#xff0c;我需要了解哪些信息&#xff1f; Amazon ECS CloudWatch 指标 任务定义参数 在ecs中可以指定资源的分配逻辑&#xff0c;其实就是cpu和内存分配。 下面这张图对ecs任…

搜索本地文件

李国春 处理大量的数据集时将文件整理到一起也是一个重要的工作。本文介绍一个将本地计算机目标文件的绝对路径汇集到一个文本文件的中的脚本。以方便后续批量处理这些文件。 启动RSD&#xff0c;在脚本编辑窗口输入图1中的代码。点击工具条上的小三角开始运行&#xff0c;提…

计网必会:电子邮件、SMTP协议

文章目录SMTP概念SMTP的操作过程——发送邮件-接收邮件细品&#xff1a;发送邮件与HTTP的对比邮件报文格式和MIME邮件访问协议SMTP概念 SMTP是电子邮件中的主要协议&#xff0c;它能使用TCP可靠数据传输服务&#xff0c;从发送方的服务器向接收方发送邮件&#xff0c; SMTP&am…

第四章必备前端基础知识-第二节1:CSS概述和选择器

文章目录一&#xff1a;CSS概述&#xff08;1&#xff09;概述&#xff08;2&#xff09;语法规范&#xff08;3&#xff09;CSS引入方式二&#xff1a;选择器&#xff08;1&#xff09;基础选择器①&#xff1a;标签选择器②&#xff1a;类选择器③&#xff1a;id选择器④&…

MyISAM存储引擎中的索引方案

MyISAM存储引擎中的索引 我们知道 InnoDB存储引擎中索引即数据&#xff0c;也就是聚集索引的那棵B树的叶子节点中已经把所有完整的用户记录都包含了&#xff0c;而MyISAM引擎也使用BTree作为索引结构&#xff0c;但是却 将索引和数据分开存储&#xff0c;其特点如下&#xff1…

ElasticSearch Docker 部署实例

文章目录前言基本环境构建Java安装docker安装es部署安装ES验证安装安装kibana设置密码进入es容器安装Vim修改es容器配置文件设置es访问密码设置Kibana密码理想状态方案二修改挂载安装IK分词器安装ik分词器在线安装离线安装前言 虽然说要停更&#xff0c;但是有些东西还是需要记…

SpringMVC | SSM整合(SpringMVC+Spring+MyBatis)

0️⃣概述&#x1f47e;SSM与三层架构对应关系SpringMVC —— 表示层&#xff08;controller、view&#xff09;Spring —— 业务逻辑层&#xff08;service&#xff09;MyBatis —— 数据访问层&#xff08;dao、pojo&#xff09;&#x1f47e;配置文件spring-config.xml ——…

vue全家桶之vuex详解

文章目录Vuex 概述1.1 组件之间共享数据的方式1.2 Vuex 是什么1.3 使用 Vuex 统一管理状态的好处什么样的数据适合存储到 Vuex 中2. Vuex 的基本使用3. Vuex 的核心概念3.1 核心概念概述3.2 State3.3 Mutation3.4 Action3.5 GetterVuex 概述 1.1 组件之间共享数据的方式 父向…

NET.前端基础

均摘自C语言中文网 网页一般由三部分组成&#xff0c;分别是 HTML&#xff08;超文本标记语言&#xff09;、CSS&#xff08;层叠样式表&#xff09;和 JavaScript&#xff08;简称“JS”动态脚本语言&#xff09;&#xff0c;它们三者在网页中分别承担着不同的任务。 HTML …

74. 搜索二维矩阵

74.搜索二维矩阵一、题目描述二、解题思路2.1 二分查找行2.2 二分查找列三、提交结果一、题目描述 二、解题思路 采用两次二分的方式&#xff0c;第一次二分用于找到target在二维矩阵中的行标&#xff0c;第二次二分只需要对找到的行进行二分查找即可。 2.1 二分查找行 初始…

10.3 定制操作

文章目录向算法传递函数谓词排序算法lambda表达式可调用对象介绍lambdafind_if 和 find_each的介绍lambda的捕获和返回值捕获引用捕获隐式捕获可变lambda指定lambda返回的类型函数体参数绑定标准库bind函数占位符_n具体使用bind的参数使用bind重排参数顺序绑定引用参数向算法传…

svg动画图形绘制

先介绍下绘制图形的标签 1&#xff1a;线段&#xff1a;line 2&#xff1a;矩形&#xff1a;rect 3: 圆形&#xff1a;circle 4&#xff1a;多边形&#xff1a;polyline&#xff08;不会自动连接起点和终点&#xff09; 5: 多边形:polygon (会自动连接起点和终点&#xff09; v…

SAP FICO 理解统驭科目记账与特殊记账

统驭科目记账与特殊记账 【背景】 统驭科目通常分为三类&#xff1a;资产&#xff08;A&#xff09;、客户&#xff08;D&#xff09;和供应商&#xff08;K&#xff09;&#xff0c;在创建会计科目时可在”控制数据“选项卡下进行选择。 在创建客户/供应商主数据的时候&#…