将一个公共 IP NAT 到 ASA 8.4 上的两个内部服务器

将一个公共 IP NAT 到 ASA 8.4 上的两个内部服务器

例如我想要:

 NAT 5.5.5.5 tcp 85 to 192.168.1.5 tcp 85
 NAT 5.5.5.5 tcp 33 to 192.168.1.9 tcp 33
 NAT 6.6.6.6 tcp 80 443 to 192.168.1.20 tcp 80 443

我打算这样做:

object obj-192.168.1.5
host 192.168.1.5
nat (inside,outside) static 5.5.5.5 service tcp 85 85

object obj-192.168.1.9
host 192.168.1.9
nat (inside,outside) static 5.5.5.5 service tcp 33 33

object obj-192.168.1.20
host 192.168.1.9
nat (inside,outside) static 6.6.6.6. ????

然后添加一个 ACL 以允许流量进入。我不知道如何创建服务组并将其应用于 NAT,它似乎只允许您一次进入一个端口。

知道如何做到这一点吗?

答案1

ASA 8.3 及更高版本极大地改变了 ASA OS 中的 NAT。

如果您在对象配置模式(对象内部)中定义 NAT 行为,则称为对象 NAT。如果您在全局配置模式中定义 NAT 行为,则称为两次 NAT。 请务必阅读8.4 CLI 指南中有关 NAT 的部分

在对象 NAT 中,只有一个 NAT陈述可以按对象使用。因此,如果您想实现静态 PAT(通俗地说是端口转发),则需要为每个要转发的端口创建一个对象——无论是转发到同一内部主机还是不同的内部主机。

以下是我配置静态 PAT 的概述。静态 NAT 的过程相同,但省略了步骤 2。

  1. object为内部主机创建一个主机。如果此主机将用于静态,请不要nat在此使用声明object. (在静态NATnat应该在这个对象上使用语句。)

  2. 创建另一个主机object,用于将每个静态 PAT 连接到内部主机。命名很重要,因为nat语句将针对此对象。使用nat此对象上的语句来转发端口/服务。

  3. 为转发/允许进入内部/内部主机的所有“端口/服务”创建一个object-group类型。这是serviceobject-group不是用于 NAT/PAT 目的,但稍后用于 ACL。

  4. 使用 中定义的 NAT(静态 PAT)规则object,将 ACL 要求放在 中access-list

下面是一个示例,其中包含您自己的示例中的以下内容:

  • 静态 PAT 将两个服务从一个外部 IP 映射到两个内部 IP/主机。
  • 将两个服务从一个外部 IP 静态 PAT 到一个内部 IP/主机。
  • (已添加)从一个外部 IP 到一个内部 IP/主机的静态 NAT,ACL 允许 5 个服务。

例子:

object network hst-192.168.1.5
 host 192.168.1.5
 description Server1 Host Object

object network hst-192.168.1.5-tcp85
 host 192.168.1.5
 description Server1 TCP/85 Static PAT Object
 nat (inside,outside) static 5.5.5.5 service tcp 85 85

object network hst-192.168.1.9
 host 192.168.1.9
 description Server2 Host Object

object network hst-192.168.1.9-tcp33
 host 192.168.1.9
 description Server2 TCP/33 Static PAT Object
 nat (inside,outside) static 5.5.5.5 service tcp 33 33

object network hst-192.168.1.20
 host 192.168.1.20
 description Server3 Host Object

object network hst-192.168.1.20-tcp80
 host 192.168.1.20
 description Server3 TCP/80 Static PAT Object
 nat (inside,outside) static 6.6.6.6 service tcp 80 80

object network hst-192.168.1.20-tcp443
 host 192.168.1.20
 description Server3 TCP/443 Static PAT Object
 nat (inside,outside) static 6.6.6.6 service tcp 443 443

object network hst-192.168.1.30
 host 192.168.1.30
 description Server4 Host Object (and Static NAT)
 nat (inside,outside) static 7.7.7.7

object-group service svcgrp-192.168.1.5-tcp tcp
 port-object eq 85

object-group service svcgrp-192.168.1.9-tcp tcp
 port-object eq 33

object-group service svcgrp-192.168.1.9-tcp tcp
 port-object eq 80
 port-object eq 443

object-group service svcgrp-192.168.1.30-tcp tcp
 port-object eq 20
 port-object eq 21
 port-object eq 22
 port-object eq 80
 port-object eq 443

access-list outside_access_in extended permit tcp any object hst-192.168.1.5 object-group svcgrp-192.168.1.5-tcp
access-list outside_access_in extended permit tcp any object hst-192.168.1.9 object-group svcgrp-192.168.1.9-tcp
access-list outside_access_in extended permit tcp any object hst-192.168.1.20 object-group svcgrp-192.168.1.20-tcp
access-list outside_access_in extended permit tcp any object hst-192.168.1.30 object-group svcgrp-192.168.1.30-tcp

access-group outside_access_in in interface outside

您可以从该示例(以及一般的新 NAT 样式)中得到以下内容:

  • 静态 PAT 似乎比它应该的更复杂一些 —— 特别是在涉及许多不同服务/端口转发时。
  • 静态 NAT——在网络对象模式下更简单。如果充分利用对象(针对主机和服务组)——“允许”更多端口就像向服务组添加条目一样简单。
  • 尽可能使用静态 NAT,因为它比较简单。
  • 如果您没有命名约定/标准——您的配置将很快失控并且难以阅读。

答案2

每个“nat”行只能用于单个端口或所有端口(任意)。要转换两个端口,需要两行。

object obj-192.168.1.20
host 192.168.1.9
nat (inside,outside) static 6.6.6.6 service tcp 80 80
nat (inside,outside) static 6.6.6.6 service tcp 443 443

相关内容