试验介绍

网络地址转换(NAT)是把IP地址改成另一个地址的技术。它帮助解决IP地址不够用的问题,通过重复使用地址来满足需求。除了这个好处,NAT还有两个主要优点:

增强网络安全,能更好地防止外部攻击。

控制内网和外网的通信,防止外部访问内网,也限制内网访问外部。

这次实验会通过设置不同的NAT场景,帮助理解它的基本原理。

因为IPv4地址有限,企业内部通常用私有地址。但他们仍需要访问互联网,或者提供服务。这时就需要用到NAT。

实验目的

  • 掌握动态NAT的配置方法

  • 掌握EasyIP的配置方法

  • 掌握NAT Server的配置方法

拓扑结构

接口信息

路由器

接口

IP Address/Mask

R1

GigabitEthernet 0/0/0

192.168.1.1/24

R2

GigabitEthernet 0/0/0

192.168.1.254/24

GigabitEthernet 0/0/1

1.2.3.4/24

R3

GigabitEthernet 0/0/0

1.2.3.254/24

实验步骤

步骤一:基本配置

接口IP地址和路由配置

在R1上
[R1-GigabitEthernet0/0/0]dis th
[V200R003C00]
#
interface GigabitEthernet0/0/0
 ip address 192.168.1.1 255.255.255.0
#
return
在R2上
[R2-GigabitEthernet0/0/0]dis th
[V200R003C00]
#
interface GigabitEthernet0/0/0
 ip address 192.168.1.254 255.255.255.0
#
return

[R2-GigabitEthernet0/0/1]dis th
[V200R003C00]
#
interface GigabitEthernet0/0/1
 ip address 1.2.3.4 255.255.255.0
#
return
在R3上
[R3-GigabitEthernet0/0/0]dis th
[V200R003C00]
#
interface GigabitEthernet0/0/0
 ip address 1.2.3.254 255.255.255.0
#
return

配置R1和R3的telnet功能(用于后续实验验证)

在R1上
[R1-ui-vty0-4]dis th
[V200R003C00]
#
user-interface con 0
 authentication-mode password
 idle-timeout 0 0
user-interface vty 0 4
 authentication-mode aaa
user-interface vty 16 20
#
[R1-aaa]dis th
[V200R003C00]
#
aaa
 authentication-scheme default
 authorization-scheme default
 accounting-scheme default
 domain default
 domain default_admin
 local-user test password cipher %$%$,cl/5by6PBg#:=O-Z>x6JnS]%$%$ ##密码:Huawei@123
 local-user test privilege level 15
 local-user test service-type telnet
 local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
 local-user admin service-type http
#
return
在R3上
[R3-ui-vty0-4]dis th
[V200R003C00]
#
user-interface con 0
 authentication-mode password
 idle-timeout 0 0
user-interface vty 0 4
 authentication-mode aaa
user-interface vty 16 20
#
return

[R3-aaa]dis th
[V200R003C00]
#
aaa
 authentication-scheme default
 authorization-scheme default
 accounting-scheme default
 domain default
 domain default_admin
 local-user test password cipher %$%$6Z"CSyc|)Wj<0fSY/6wYJqWr%$%$ ##密码:Huawei@123
 local-user test privilege level 15
 local-user test service-type telnet
 local-user admin password cipher %$%$K8m.Nt84DZ}e#<0`8bmE3Uw}%$%$
 local-user admin service-type http
#
return

测试当前联通性

由于当前R3未配置通向192.168.1.0/24网段的路由,导致R1无法访问R3。在实际操作中,R3也禁止配置指向私有IP网段的路由。

在R1上
[R1]ping 1.2.3.254
  PING 1.2.3.254: 56  data bytes, press CTRL_C to break
    Request time out
    Request time out
    Request time out
    Request time out
    Request time out

  --- 1.2.3.254 ping statistics ---
    5 packet(s) transmitted
    0 packet(s) received
    100.00% packet loss
在R3上
[R3]ping 192.168.1.1
  PING 192.168.1.1: 56  data bytes, press CTRL_C to break
    Request time out
    Request time out
    Request time out
    Request time out
    Request time out

  --- 192.168.1.1 ping statistics ---
    5 packet(s) transmitted
    0 packet(s) received
    100.00% packet loss
在R2上
[R2]ping 1.2.3.254
  PING 1.2.3.254: 56  data bytes, press CTRL_C to break
    Reply from 1.2.3.254: bytes=56 Sequence=1 ttl=255 time=90 ms
    Reply from 1.2.3.254: bytes=56 Sequence=2 ttl=255 time=50 ms
    Reply from 1.2.3.254: bytes=56 Sequence=3 ttl=255 time=30 ms
    Reply from 1.2.3.254: bytes=56 Sequence=4 ttl=255 time=20 ms
    Reply from 1.2.3.254: bytes=56 Sequence=5 ttl=255 time=40 ms

  --- 1.2.3.254 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 20/46/90 ms

步骤二

假设该公司获得了1.2.3.10至1.2.3.20这段公网IP,现需要配置动态NAT

配置NAT地址池

[R2]nat a 1 1.2.3.10 1.2.3.20

[R2]dis nat address-group
 NAT Address-Group Information:
 --------------------------------------
 Index   Start-address      End-address
 --------------------------------------
 1            1.2.3.10         1.2.3.20
 --------------------------------------



[R2-GigabitEthernet0/0/1]dis th
[V200R003C00]
#
interface GigabitEthernet0/0/1
 ip address 1.2.3.4 255.255.255.0
 nat outbound 2000 address-group 1
#
return

nat address-group 命令用于配置NAT地址池。编号「1」代表该地址池的标识,地址池必须是一段连续的IP地址范围。当内部数据报文经过地址转换后到达外部网络时,其源地址将被转换为地址池中的其他IP地址。

配置ACL

在R2上
[R2-acl-basic-2000]dis th
[V200R003C00]
#
acl number 2000
 rule 5 permit
#
return

nat outbound命令用于将访问控制列表(ACL)与地址池关联,从而实现符合ACL规则的地址转换。当地址池中的地址数量充足时,可以添加no-pat参数,表示采用一对一的地址转换方式,仅转换数据报的地址,而不涉及端口信息的转换。

配置动态NAT

在R2上
[R2-GigabitEthernet0/0/1]dis th
[V200R003C00]
#
interface GigabitEthernet0/0/1
 ip address 1.2.3.4 255.255.255.0
 nat outbound 2000 address-group 1
#
return

测试联通性

在R1上
配置R2为网关
[R1]ip route-static 0.0.0.0 0.0.0.0 192.168.1.254
测试Ping
[R1]ping 1.2.3.254
  PING 1.2.3.254: 56  data bytes, press CTRL_C to break
    Reply from 1.2.3.254: bytes=56 Sequence=1 ttl=254 time=30 ms
    Reply from 1.2.3.254: bytes=56 Sequence=2 ttl=254 time=30 ms
    Reply from 1.2.3.254: bytes=56 Sequence=3 ttl=254 time=40 ms
    Reply from 1.2.3.254: bytes=56 Sequence=4 ttl=254 time=50 ms
    Reply from 1.2.3.254: bytes=56 Sequence=5 ttl=254 time=40 ms

  --- 1.2.3.254 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 30/38/50 ms

R1通过telnet远程登录到R3(模拟TCP流量)

<R1>telnet 1.2.3.254
  Press CTRL_] to quit telnet mode
  Trying 1.2.3.254 ...
  Connected to 1.2.3.254 ...

Login authentication


Username:test
Password:
<R3>

查看R2上的NAT会话表

[R2]dis nat session all
  NAT Session Table Information:

     Protocol          : TCP(6)
     SrcAddr  Port Vpn : 192.168.1.1     18117
     DestAddr Port Vpn : 1.2.3.254       5888
     NAT-Info
       New SrcAddr     : 1.2.3.16
       New SrcPort     : 10254
       New DestAddr    : ----
       New DestPort    : ----

     Protocol          : TCP(6)
     SrcAddr  Port Vpn : 192.168.1.1     45249
     DestAddr Port Vpn : 1.2.3.254       5888
     NAT-Info
       New SrcAddr     : 1.2.3.16
       New SrcPort     : 10253
       New DestAddr    : ----
       New DestPort    : ----

  Total : 2

尽管此时R3没有到R1的路由条目,但由于转换后的源地址为1.2.3.16,R3会将数据回复到该地址。R2收到后,会根据NAT会话表中的信息,将数据重新转换为R1的地址并进行转发。因此,此时R1可以主动向R3发起访问请求。

在R2的两个接口抓包

可知R2调用了NAT地址池中的1.2.3.16/24完成地址转换并建立连接。

步骤三

假设 R2 的 GigabitEthernet0/0/4 的地址不是固定 IP 地址(DHCP 动态获取或 PPPoE 拨号获取),此时需要配置 Easy IP

删除上一步骤的配置

[R2-GigabitEthernet0/0/1]undo nat outbound 2000 address-group 1

配置 Easy IP

[R2-GigabitEthernet0/0/1]dis th
[V200R003C00]
#
interface GigabitEthernet0/0/1
 ip address 1.2.3.4 255.255.255.0
 nat outbound 2000
#
return

测试联通性

[R1]ping 1.2.3.254
  PING 1.2.3.254: 56  data bytes, press CTRL_C to break
    Reply from 1.2.3.254: bytes=56 Sequence=1 ttl=254 time=30 ms
    Reply from 1.2.3.254: bytes=56 Sequence=2 ttl=254 time=30 ms
    Reply from 1.2.3.254: bytes=56 Sequence=3 ttl=254 time=40 ms
    Reply from 1.2.3.254: bytes=56 Sequence=4 ttl=254 time=50 ms
    Reply from 1.2.3.254: bytes=56 Sequence=5 ttl=254 time=40 ms

  --- 1.2.3.254 ping statistics ---
    5 packet(s) transmitted
    5 packet(s) received
    0.00% packet loss
    round-trip min/avg/max = 30/38/50 ms

R1通过telnet远程登录到R3(模拟TCP流量)

<R1>telnet 1.2.3.254
  Press CTRL_] to quit telnet mode
  Trying 1.2.3.254 ...
  Connected to 1.2.3.254 ...

Login authentication


Username:test
Password:
  -----------------------------------------------------------------------------  
  User last login information:
  -----------------------------------------------------------------------------
  Access Type: Telnet
  IP-Address : 1.2.3.16
  Time       : 2025-09-26 16:29:14-08:00
  -----------------------------------------------------------------------------
<R3>
[R2]dis nat session all
  NAT Session Table Information:

     Protocol          : TCP(6)
     SrcAddr  Port Vpn : 192.168.1.1     20934
     DestAddr Port Vpn : 1.2.3.254       5888
     NAT-Info
       New SrcAddr     : 1.2.3.4
       New SrcPort     : 10242
       New DestAddr    : ----
       New DestPort    : ----

  Total : 1

在R2的两个接口抓包

可见直接调用了接口IP。

步骤四

假设 R3 要向公网提供网络服务(用 telnet 模拟),由于 R3 没有公网 IP 地址,故需要在 R2 的出接口上配置 NAT Server

在 R2 上配置 NAT Server

[R2-GigabitEthernet0/0/1]dis th
[V200R003C00]
#
interface GigabitEthernet0/0/1
 ip address 1.2.3.4 255.255.255.0
 nat server protocol tcp global current-interface 2323 inside 192.168.1.1 telnet
 nat outbound 2000
#
return

nat server命令用于定义内部服务器的映射关系,允许外部用户通过特定的地址和端口转换访问内部服务器的某项服务。配置内部服务器后,外部网络可以主动访问私有网络中的服务器。当外部网络向内部服务器的外部地址(global-address)发起连接请求时,NAT会将该请求的目标地址替换为私网地址(inside-address),然后将请求转发到私网内部的服务器。

R3通过telnet远程登录到R1

<R3>telnet 1.2.3.4 2323
  Press CTRL_] to quit telnet mode
  Trying 1.2.3.4 ...
  Connected to 1.2.3.4 ...

Login authentication


Username:test
Password:
<R1>

查看R2上的NAT会话表

[R2]dis nat s all
  NAT Session Table Information:

     Protocol          : TCP(6)
     SrcAddr  Port Vpn : 192.168.1.1     20934
     DestAddr Port Vpn : 1.2.3.254       5888
     NAT-Info
       New SrcAddr     : 1.2.3.4
       New SrcPort     : 10242
       New DestAddr    : ----
       New DestPort    : ----

     Protocol          : TCP(6)
     SrcAddr  Port Vpn : 1.2.3.254       13252
     DestAddr Port Vpn : 1.2.3.4         4873
     NAT-Info
       New SrcAddr     : ----
       New SrcPort     : ----
       New DestAddr    : 192.168.1.1
       New DestPort    : 5888

  Total : 2

在R2的两个接口抓包

思考题

Q:在配置 NAT Server 时,转换前的目的端口和转换后的目的端口是否需要相同?

A:NAT 服务器可以把公网的某个端口映射到内网服务器的不同端口上。这让端口管理变得更灵活,转换前后的端口不一定一样。