ASA的twice-nat将互联网访问的源地址转换为内网接口地址测试

本文涉及的产品
云防火墙,500元 1000GB
公网NAT网关,每月750个小时 15CU
简介:

一.测试拓扑

wKioL1Xztm_z5aokAAEJC0duUpE278.jpg


二.测试思路

  1. 不考虑网络拓扑的合理性,只是考虑网络是否可通

  2. 外网访问内部服务器在防火墙上映射的公网地址不通是因为R1的默认路由指向的不是防火墙,出现了非对称路由问题,导致TCP连接来回路径不一致而会话失败

  3. 如果把外网访问内部服务器的源地址转换为防火墙内网接口地址,则不会出现非对称路由问题


三.基本配置

  1. 路由器Server:

    interface FastEthernet0/0
         ip address 192.168.1.8 255.255.255.0
         no shut
    ip route 0.0.0.0 0.0.0.0 192.168.1.1

  2. 路由器R1:

    interface Ethernet0/0
         ip address 192.168.2.1 255.255.255.0
         no shut!         
    interface Ethernet0/1
         ip address 192.168.3.1 255.255.255.0
         no shut
    interface Ethernet0/2
         ip address 192.168.1.1 255.255.255.0
         no shut!
    ip route 0.0.0.0 0.0.0.0 192.168.3.254

  3. 路由器R2:

    interface Ethernet0/0
     ip address 202.100.2.1 255.255.255.0
         ip nat outside
         no shut

    interface Ethernet0/1
         ip address 192.168.3.254 255.255.255.0
         ip nat inside
         no shut
    ip route 0.0.0.0 0.0.0.0 202.100.2.2
    ip route 192.168.0.0 255.255.0.0 192.168.3.1


    ip nat inside source list PAT interface Ethernet0/0 overload
    ip access-list extended PAT
     permit ip 192.168.0.0 0.0.255.255 any

  4. 防火墙ASA842:

    interface GigabitEthernet0
         nameif Outside
         security-level 0
         ip address 202.100.1.1 255.255.255.0 
    interface GigabitEthernet1
         nameif Inside
         security-level 100
         ip address 192.168.2.254 255.255.255.0 

    route Outside 0.0.0.0 0.0.0.0 202.100.1.2 1
    route Inside 192.168.0.0 255.255.0.0 192.168.2.1 1

  5. 路由器Internet:

    interface Loopback0
         ip address 61.1.1.1 255.255.255.0
    interface FastEthernet0/0
         ip address 202.100.1.2 255.255.255.0
         no shut
    interface FastEthernet0/1
         ip address 202.100.2.2 255.255.255.0
         no shut


四.防火墙twice-nat相关配置

  1. 定义内网服务器对象:

    object network ServerReal
         host 192.168.1.8

  2. 定义内网服务器映射后的公网IP对象:

    object network ServerMap

    host 202.100.1.8

  3. 配置twice-nat:

    转换前-----源地址:any 目标地址:内网服务器映射后的公网IP

    转换后-----源地址:防火墙inside口地址 目标地址:内网服务器实际

    IP nat (Outside,Inside) source dynamic any interface destination static ServerMap ServerReal

  4. 定义防火墙外网口策略:

    access-list Outside extended permit ip any object ServerReal

    ---注意这些是服务器的实际地址,而不是映射后的地址

  5. 应用防火墙外网口策略:

    access-group Outside in interface Outside

  6. 测试:


    Internet#telnet 202.100.1.8
    Trying 202.100.1.8 ... Open


    User Access Verification

    Password: 
    Server>show user
    % Ambiguous command:  "show user"
    Server>show users
        Line       User       Host(s)              Idle       Location
       0 con 0                idle                 00:05:42   
    *  2 vty 0                idle                 00:00:00 192.168.2.254

      Interface    User               Mode         Idle     Peer Address

    Server>q

    [Connection to 202.100.1.8 closed by foreign host]
    Internet#

    -----从公网来的防火墙已经作了源地址转换

    Server#ping 61.1.1.1

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

    Server#

    Internet#debug ip icmp 
    ICMP packet debugging is on
    Internet#
    *Aug 22 13:02:57.787: ICMP: echo reply sent, src 61.1.1.1, dst 202.100.2.1
    *Aug 22 13:02:57.967: ICMP: echo reply sent, src 61.1.1.1, dst 202.100.2.1
    *Aug 22 13:02:58.067: ICMP: echo reply sent, src 61.1.1.1, dst 202.100.2.1
    *Aug 22 13:02:58.123: ICMP: echo reply sent, src 61.1.1.1, dst 202.100.2.1
    *Aug 22 13:02:58.127: ICMP: echo reply sent, src 61.1.1.1, dst 202.100.2.1
    Internet#

    ------Server可以正常从R2路由器PAT上公网

五.后记

  1. 多个内网地址,多个公网地址,都是一对一映射情况

    可以按上面格式配置多个映射,并且都是映射到防火墙内网口地址

    object network ServerMap

         host 202.100.1.8

    object network ServerReal
         host 192.168.1.8

    object network R1Map
         host 202.100.1.18

    object network R1Real
         host 192.168.1.1


    nat (Outside,Inside) source dynamic any interface destination static ServerMap ServerReal

    nat (Outside,Inside) source dynamic any interface destination static R1Map R1Real


    access-list Outside extended permit tcp any object ServerReal eq telnet 
    access-list Outside extended permit tcp any object R1Real eq telnet 
    access-group Outside in interface Outside

  2. 多个内网地址,一个公网地址(比如接口地址),都是端口映射情况

    object network ServerReal
         host 192.168.1.8
    object network R1Real
         host 192.168.1.1


    object service telnet
         service tcp destination eq telnet 
    object service ServerMapTelnet2321
         service tcp destination eq 2321 
    object service R1MapTelnet2322
         service tcp destination eq 2322


    nat (Outside,Inside) source dynamic any interface destination static interface ServerReal service ServerMapTelnet2321 telnet
    nat (Outside,Inside) source dynamic any interface destination static interface R1Real service R1MapTelnet2322 telnet


    access-list Outside extended permit tcp any object Serverreal eq telnet 
    access-list Outside extended permit tcp any object R1Real eq telnet 
    access-group Outside in interface Outside




本文转自 碧云天 51CTO博客,原文链接:http://blog.51cto.com/333234/1694064,如需转载请自行联系原作者
相关实践学习
每个IT人都想学的“Web应用上云经典架构”实战
本实验从Web应用上云这个最基本的、最普遍的需求出发,帮助IT从业者们通过“阿里云Web应用上云解决方案”,了解一个企业级Web应用上云的常见架构,了解如何构建一个高可用、可扩展的企业级应用架构。
相关文章
|
2月前
|
安全 应用服务中间件 网络安全
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
如何测试Nginx反向代理实现SSL加密访问的配置是否正确?
106 3
|
3月前
|
安全 网络安全 数据安全/隐私保护
Cisco-网络地址转换动态NAT
Cisco-网络地址转换动态NAT
|
3月前
|
安全 网络安全 数据安全/隐私保护
Cisco-网络地址转换静态NAT
Cisco-网络地址转换静态NAT
|
4月前
|
SQL JavaScript 前端开发
基于Python访问Hive的pytest测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Python、来开发Hive应用的方法,产生的代码如下
88 6
基于Python访问Hive的pytest测试代码实现
|
3月前
|
存储 监控 网络安全
内网渗透测试基础——敏感数据的防护
内网渗透测试基础——敏感数据的防护
53 2
|
3月前
|
网络协议 Ubuntu 前端开发
好好的容器突然起不来,经定位是容器内无法访问外网了?测试又说没改网络配置,该如何定位网络问题
本文记录了一次解决前端应用集成到主应用后出现502错误的问题。通过与测试人员的沟通,最终发现是DNS配置问题导致的。文章详细描述了问题的背景、沟通过程、解决方案,并总结了相关知识点和经验教训,帮助读者学习如何分析和定位网络问题。
133 0
|
4月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
61 2
|
4月前
|
SQL JavaScript 前端开发
基于Java访问Hive的JUnit5测试代码实现
根据《用Java、Python来开发Hive应用》一文,建立了使用Java、来开发Hive应用的方法,产生的代码如下
84 6
|
3月前
|
安全 Shell Linux
内网渗透测试基础——Windows PowerShell篇
内网渗透测试基础——Windows PowerShell篇
137 0
|
5月前
|
网络协议 安全 前端开发
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)