LoginSignup
0
0

More than 5 years have passed since last update.

纪念我的第三个CCNA实验 NAT和PAT内外网转换

Posted at

CCNA的NAT和PAT的基本实验

背景

我们在玩virtualBox和Vmware这样的虚拟机的时候,在设置虚拟机的网卡配置的时候,虚拟机会让我们选择NAT或者说是桥接(Bridge)。我们通常选择NAT的话,如果不出意外,虚拟机里面的操作系统就会自动连上网络了。如下图所示。
スクリーンショット 2018-01-27 22.56.20.png
图1

需求

那么这里的NAT是指什么意思呢。
我们先提一个需求,如下图所示
スクリーンショット 2018-01-27 23.23.10.png
图2

PCA和PCB要完成通信,需要跨过属于它们的路由RT1和RT2,所以需要在路由器RT1和RT2上做路由分配。这样当然可以实现通信,PCA的IP地址也同样被暴露。当PCB想pingPCA的时候,他需要指明PCA在路由RT1管理下的具体的IP地址。
那么有没有一直方式能够在不用暴露PCA的IP的情况下,能够在PCA上ping通PCB呢,答案就是NAT。

需求解决方案

スクリーンショット 2018-01-27 23.39.04.png
图3

如上图所示,通过在路由器RT1上设置NAT,从而实现了PCA的ping包里面的源IP地址得到了更换,ping包在从RT1出来以后,ping包就一10.1.1.1而不是192.168.10.1的身份去寻找PCB了。
スクリーンショット 2018-01-27 23.43.32.png
图4

如上图所示,当PCB拿到源目的地址为10.1.1.1的ping包而不是源目的地址为192.168.10.1的ping包的时候,为了给源目的地址返回“我已经收到ping包的信息”,PCB会下意识的去寻找源目的地址10.1.1.1即路由器RT1.这是第一步
然后第二步,在路由器RT1上,路由器RT1会告诉ping的返回包:其实目的地址10.1.1.1是我管辖下的192.168.10.1哦。然后将ping的返回包的目的ip换为192.168.10.1然后再决定要通过F0口,然后再发送给PCA。
这里可以看出,和一般的单纯靠路由通信的最大的不同时,NAT将源地址换掉了。
这里讲一下专业术语
192.168.10.1 local IP address
10.1.1.1 local global IP address
172.16.10.1 outside local IP address
***** outside global IP address

实验

实验需求

スクリーンショット 2018-01-28 0.50.05.png

图5

如上图所示,还是那五个人,只是liugongpeng充当了server。现在要求其余四个人pingserver的时候能够在通过RT1后以2.2.2.0/24的ip的身份对server进行ping访问,同时server在对其余四个人返回ping信息的时候是通过找2.2.2.0/24的方式去寻找的。
这里需要用到的是动态nat,除了需要在RT1,RT2上做路由表设置以外,还需要做的是在RT1上做动态NAT设置。这里因为篇幅有限,咱就贴出如何陪路由的IP的代码了。

实验场景

スクリーンショット 2018-01-28 0.58.10.png

实验步骤

1.在RT1上配置默认路由。配完以后RT1可以ping通liugongpeng

RT1(config)#ip route 0.0.0.0 0.0.0.0 s2/0

RT1(config)#do ping 10.1.1.1

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

2.在RT1上配置access-list,允许192.168.10.0/24,192.168.20.0/24这两个网段通过。

RT1(config)#ip access-list standard 1
RT1(config-std-nacl)#permit 192.168.10.0 0.0.0.255
RT1(config-std-nacl)#permit 192.168.20.0 0.0.0.255

RT1(config)#do show access-list
Standard IP access list 1
    10 permit 192.168.10.0 0.0.0.255
    20 permit 192.168.20.0 0.0.0.255

3.在RT1上建立名字为syoui的NAT pool,范围为2.2.2.1~2.2.2.254

RT1(config)#ip nat pool syoui 2.2.2.1 2.2.2.254 netmask 255.255.255.0

RT1(config)#do show running-config | begin ip nat pool
ip nat pool syoui 2.2.2.1 2.2.2.254 netmask 255.255.255.0

4.在RT1上指定F0, F1端口为NAT inside,同时指明S2/0为NAT outside.

RT1(config)#int f0/0
RT1(config-if)#ip nat inside
RT1(config-if)#int f1/0
RT1(config-if)#ip nat inside
RT1(config)#int s2/0
RT1(config-if)#ip nat outside

5.在RT1上将NATpool和accesslist 1赋给RT1上所有的inside

RT1(config)#ip nat inside source list 1 pool syoui

6.在RT2上,配置去往2.2.2.0/24的路由表

RT2(config)#ip route 2.2.2.0 255.255.255.0 s2/0

7.分别在panjiahong,xuzhongwei,zhangyang,zhengquan上ping liugongpeng

C:\>ipconfig

FastEthernet0 Connection:(default port)

   Link-local IPv6 Address.........: FE80::202:17FF:FE1A:D3B9
   IP Address......................: 192.168.10.1
   Subnet Mask.....................: 255.255.255.0
   Default Gateway.................: 192.168.10.254

C:\>ping 172.16.10.1

Pinging 172.16.10.1 with 32 bytes of data:

Reply from 172.16.10.1: bytes=32 time=1ms TTL=126
Reply from 172.16.10.1: bytes=32 time=1ms TTL=126
Reply from 172.16.10.1: bytes=32 time=2ms TTL=126
Reply from 172.16.10.1: bytes=32 time=1ms TTL=126

Ping statistics for 172.16.10.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 1ms, Maximum = 2ms, Average = 1ms
C:\>ipconfig

FastEthernet0 Connection:(default port)

   Link-local IPv6 Address.........: FE80::2E0:F7FF:FED8:A290
   IP Address......................: 192.168.20.4
   Subnet Mask.....................: 255.255.255.0
   Default Gateway.................: 192.168.20.254

C:\>
C:\>
C:\>ping 172.16.10.1

Pinging 172.16.10.1 with 32 bytes of data:

Reply from 172.16.10.1: bytes=32 time=28ms TTL=126
Reply from 172.16.10.1: bytes=32 time=1ms TTL=126
Reply from 172.16.10.1: bytes=32 time=1ms TTL=126
Reply from 172.16.10.1: bytes=32 time=10ms TTL=126

Ping statistics for 172.16.10.1:
    Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
    Minimum = 1ms, Maximum = 28ms, Average = 10ms

成功

7.在RT1上查看NAT转换记录

RT1#
RT1#show ip nat translations
Pro  Inside global     Inside local       Outside local      Outside global
icmp 2.2.2.4:13        192.168.10.1:13    172.16.10.1:13     172.16.10.1:13
icmp 2.2.2.4:14        192.168.10.1:14    172.16.10.1:14     172.16.10.1:14
icmp 2.2.2.4:15        192.168.10.1:15    172.16.10.1:15     172.16.10.1:15
icmp 2.2.2.4:16        192.168.10.1:16    172.16.10.1:16     172.16.10.1:16
icmp 2.2.2.5:5         192.168.20.4:5     172.16.10.1:5      172.16.10.1:5
icmp 2.2.2.5:6         192.168.20.4:6     172.16.10.1:6      172.16.10.1:6
icmp 2.2.2.5:7         192.168.20.4:7     172.16.10.1:7      172.16.10.1:7
icmp 2.2.2.5:8         192.168.20.4:8     172.16.10.1:8      172.16.10.1:8

我们可以看到192.168.10.1上ping了四次,这里记录了192.168.10.1的四次转换记录,均换为2.2.2.4的local global IP地址。
我们也在192.168.20.4上ping了四次,同样的道理,这里记录了192.168.20.4转换为2.2.2.5的四次记录。
至此动态NAT的实验成功
接下来我们进行PAT的实验,PAT的实验和动态NAT实验的区别主要在两个地方
1.pool里面只需要指定一个ip就可以了
2.给RT1上的inside赋予access-list和pool的时候最后要加上overload,指明端口超载
下面我们继续

8.取消对inside的赋值,取消pool,重新生成pool,重新对inside赋值,清空nat转换表

RT1(config)#no ip nat inside source list 1 pool syoui
RT1(config)#no ip nat pool syoui
RT1(config)#ip nat pool syoui 2.2.2.2 2.2.2.2 netmask 255.255.255.255
RT1(config)#ip nat inside source list 1 pool syoui overload
RT1(config)#exit
RT1#clear ip nat translation *

9.重新ping,发现也能ping通liugongpeng,然后在RT1上查看NAT转换记录。

RT1#show ip nat translation
Pro  Inside global     Inside local       Outside local      Outside global
icmp 2.2.2.2:1024      192.168.20.4:9     172.16.10.1:9      172.16.10.1:1024
icmp 2.2.2.2:1025      192.168.20.4:10    172.16.10.1:10     172.16.10.1:1025
icmp 2.2.2.2:1026      192.168.20.4:11    172.16.10.1:11     172.16.10.1:1026
icmp 2.2.2.2:1027      192.168.20.4:12    172.16.10.1:12     172.16.10.1:1027
icmp 2.2.2.2:10        192.168.10.2:10    172.16.10.1:10     172.16.10.1:10
icmp 2.2.2.2:11        192.168.10.2:11    172.16.10.1:11     172.16.10.1:11
icmp 2.2.2.2:12        192.168.10.2:12    172.16.10.1:12     172.16.10.1:12
icmp 2.2.2.2:5         192.168.20.3:5     172.16.10.1:5      172.16.10.1:5
icmp 2.2.2.2:6         192.168.20.3:6     172.16.10.1:6      172.16.10.1:6
icmp 2.2.2.2:7         192.168.20.3:7     172.16.10.1:7      172.16.10.1:7
icmp 2.2.2.2:8         192.168.20.3:8     172.16.10.1:8      172.16.10.1:8
icmp 2.2.2.2:9         192.168.10.2:9     172.16.10.1:9      172.16.10.1:9

这里可以看到,192.168.10.2,192.168.20.3,192.168.20.4在对liugongpengping的时候,都转换成了唯一的2.2.2.2.
这就是PAT的特点
用一个local global IP解决所有的local IP的出行问题

这里补充说命的是,一般的PAT都是指定端口的,也就是说没有必要建立pool了。如下面的写法

RT1(config)#ip nat inside source list 1 interface s2/0

这样在查看NAT转换表的时候出来的结果是这样的

RT1#show ip nat translations
Pro  Inside global     Inside local       Outside local      Outside global
icmp 10.1.1.1:13       192.168.20.4:13    172.16.10.1:13     172.16.10.1:13
icmp 10.1.1.1:14       192.168.20.4:14    172.16.10.1:14     172.16.10.1:14
icmp 10.1.1.1:15       192.168.20.4:15    172.16.10.1:15     172.16.10.1:15
icmp 10.1.1.1:16       192.168.20.4:16    172.16.10.1:16     172.16.10.1:16
icmp 10.1.1.1:21       192.168.10.1:21    172.16.10.1:21     172.16.10.1:21
icmp 10.1.1.1:22       192.168.10.1:22    172.16.10.1:22     172.16.10.1:22
icmp 10.1.1.1:23       192.168.10.1:23    172.16.10.1:23     172.16.10.1:23
icmp 10.1.1.1:24       192.168.10.1:24    172.16.10.1:24     172.16.10.1:24

可以看到,NAT转换后的local global的IP就自动转换为乐s2/0的IP了。

结尾

NAT,PAT的作用除了隐蔽IP外,还有一个重要的作用就是解决IP不足的问题。当然不用NAT似乎也可以,只要在ISP上把针对内网IP的路由陪好就行了,但是没人那么干吧。
祝大家生活愉快。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0