电信运营商实战工程师系列文章.
思科设备篇-思科设备企业网实战.
文章目录
1. 思科设备基本开局配置
知识点:
- 主机名
- 管理 IP 地址
- 开启远程管理
- 安全密码
本小节实验环境如下:
- R1 使用 c2691 模拟路由器(R1 使用任意 Cisco 路由器模拟均可).
- SW1 使用 c2691 添加
NM-16ESW
模拟交换机(参照前面内容). - R1 的 f0/0 连接 SW1 的 f1/0.
GNS3 模拟器对路由器进行了许多优化.
- 登录路由器直接进入了特权模式,而不是用户模式.
输入disable
命令退出特权模式,进入用户模式. 用户模式的提示符是>
,而特权模式的提示符是#
.
从用户模式或特权模式输入exit
命令,退出登录状态,回到登录页面.
在登陆页面按回车健,直接登录进入了特权模式. 这是因为没有设置登录密码和特权密码.
在登陆页面按回车健,直接登录进入了特权模式. 这是因为没有设置登录密码和特权密码.
- 查看 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 服务器集中密码认证.
local
和 tacacs
的原理是类似的,区别是 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.1
和 192.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.22
、224.0.0.251
、224.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,即“虚拟局域网”,就是把一个大的局域网,分成多个隔离的,小的局域网. 这样做的好处主要有两点.
- 隔离广播域,让每个节点(比如电脑、手机)不需要收到太多无关的广播包,从而减少计算性能和网络带宽的无谓消耗. 从而保证局域网的性能.
- 隔离常见病毒与攻击,这样即使某个主机感染了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
效果综合测试