从ASA 8.31开始(习惯称为8.3开始,其实还有个8.30是老NAT),改为新的NAT设计。
思科CCIE安全培训学习笔记-只有两种NAT规则类型:
(1)Twice NAT (二次NAT,手动NAT)
(2)Network Object NAT (自动NAT)
特点:
(1)access-list注意要放行真实地址(与pre 8.3不同)
(2)助你记忆:Network Object NAT的命令格式中, nat 是object network的参数; Twice NAT中,object network是nat的参数
(3)你要转换什么地址,就定义这个地址的Network Object,然后加nat参数定义转换规则
一、Network Object NAT
——要么转换源地址,要么转换目的地址
(1)一个规则只能做一项转换(要么是源,要么是目的)
(2)一个数据包只能匹配上一个转换规则,之后就不会再匹配其他规则(自上至下)
(3)规则执行是有顺序的,系统会自动将所有network object nat规则进行排序,顺序:
(a)static优于dynamic
(b)掩码越长越优先
(c) IP地址越小越优先
(d)object名字字母越小越优先
(4)对于转换后地址为一个单一地址的情况下,可以直接写,也可以调用另一个定义好的object,好处是方便在不同策略中多次调用。如果是地址范围,就只能定义object了。
二、Twice NAT
——用于策略NAT转换,既能转换源地址,也能转换目的地址
(1)一个规则内既能转换源地址,也能转换目的地址
(2)一个数据包同样只能匹配上一个转换规则,之后就不会再匹配其他规则(自上至下)
(3)Twice NAT 规则执行顺序: 手动调整(行号)
(4)定义转换前转换后各个地址,都只能通过object来定义,不能直接写地址
(5)Twice NAT可以调用object也可以调用object-group,而Network Object NAT只能在object中使用,不能在object-group中使用
三、两者之间的关系
https://pics2.baidu.com/feed/d8f9d72a6059252d643a430779faea315bb5b974@f_auto?token=3d97acab3643ae456248205c049c3a76&f=png
对于系统整体而言,所有的Twice NAT和Network Object NAT策略会共同形成一套统一的NAT规则表。可以通过show nat 查看,规则表分为三个部分(Section 1 ~ 3)。分别是:
(1)Twice NAT
(2)Network Object NAT
(3)Twice NAT with "after-auto" 参数
一般情况下都推荐使用Network Object NAT(可以满足绝大多数场景),个别情况下使用Twice NAT
1. 动态一对一转换
传统配置:
nat (inside) 1 10.1.1.0 255.255.255.0
global (outside) 1 202.100.1.100-202.100.1.200
新配置(Network Object NAT)
object network Outside-Pool
range 202.100.1.100 202.100.1.200
object network Inside-Network
subnet 10.1.1.0 255.255.255.0
nat (inside,outside) dynamic Outside-Pool
注:object network Inside-Network下两句话可以连打,但show run会看到subnet/host/range与nat会分别在两个相同的object network下显示,中间被其他配置隔开,变成:
object network Inside-Network
subnet 10.1.1.0 255.255.255.0
……………………
object network Inside-Network
nat (inside,outside) dynamic Outside-Pool
2. 动态PAT (多对一)
传统配置:
nat (inside) 1 10.1.1.0 255.255.255.0
global(outside) 1 202.100.1.101
新配置(Network Object NAT)
object network Outside-PAT-Address
host 202.100.1.101
object network Inside-Network
subnet 10.1.1.0 255.255.255.0
object network Inside-Network
nat (inside,outside) dynamic Outside-PAT-Address
或者直接写PAT地址
nat (inside,outside) dynamic 202.100.1.101
或直接复用接口地址 (global (outside) 1 interface )
nat (inside,outside) dynamic interface
注:还可以写subnet 0.0.0.0 0.0.0.0 表示内网所有地址都转换
如果是多个地址做PAT复用地址的话:
传统配置:
global (outside) 1 202.100.1.101
global (outside) 1 202.100.1.102
新配置:
object network Outside-PAT-Pool
range 202.100.1.101 202.100.1.102 //只能是连续地址, 如果不是连续地址,用obj-group做
nat (inside,outside) dynamic pat-pool Ouside-PAT-Pool
后面还可跟round-robin参数,表示多个PAT地址轮流使用,而不是耗尽第一个才用第二个
2.5 先做动态一对一,地址不够了再做PAT
传统配置:
nat (inside) 1 10.1.1.0 255.255.255.0
global(outside) 1 202.100.1.101--109
global(outside) 1 202.100.1.110
新配置(Network Object NAT)
object network Inside-Network
subnet 10.1.1.0 255.255.255.0
object network Outside-Pool-Address
range 202.100.1.11 202.100.1.22
object network Outside-PAT-Pool
host 202.100.1.110
object network Inside-Network
nat (inside,outside) dynamic Outside-Pool-Address pat-pool Outside-PAT-Pool
注: 或者PAT地址池也不够了,再用接口地址复用,就在后面再加interface参数
3. Identity NAT (等同转换)
传统配置:
nat (inside) 0 10.1.1.1 255.255.255.255
新配置(Network Object NAT)
object network Inside-Address
host 10.1.1.1
object network Inside-Address
nat (inside,outside) static Inside-Address
或者直接写转换后地址
nat (inside,outside) static 10.1.1.1
4. 静态一对一转换
传统配置:
static (inside,outside) 202.100.1.101 10.1.1.1
新配置(Network Object NAT)
object network Static-Outside-Address
host 202.100.1.101
object network Static-Inside-Address
host 10.1.1.1
object network Static-Inside-Address
nat (Inside,Outside) static Static-Outside-Address
或者
nat (Inside,Outside) static 202.100.1.101
5. 静态端口转换
传统配置:
static (inside,outside) tcp 202.100.1.102 2323 10.1.1.1 23
新配置(Network Object NAT)
object network Static-Outside-Address
host 202.100.1.102
object network Static-Inside-Address
host 10.1.1.1
object network Static-Inside-Address
nat (Inside,Outside) static Static-Outside-Address service tcp 23 2323
或者
nat (Inside,Outside) static 202.100.1.102 service tcp 23 2323
6. Twice NAT
多个不同的流量,只转换源地址,不转换目的地址
传统配置:
access-list inside-to-1 permit ip 10.1.1.0 255.255.255.0 host 202.100.1.1
access-list inside-to-2 permit ip 10.1.1.0 255.255.255.0 host 202.100.1.2
nat (inside) 1 access-list inside-to-1
nat (inside) 2 access-list inside-to-2
global (outside) 1 202.100.1.101
global (outside) 2 202.100.1.102
新配置(Twice NAT):
object network dst-1
host 202.100.1.1
object network dst-2
host 202.100.1.2
object network pat-1
host 202.100.1.101
object network pat-2
host 202.100.1.102
object network Inside-Network
subnet 10.1.1.0 255.255.255.0
nat (inside,outside) source dynamic Inside-Network pat-1 destination static dst-1 dst-1
nat (inside,outside) source dynamic Inside-Network pat-2 destination static dst-2 dst-2
思科CCIE安全培训学习笔记-既转换源地址,也转换目的地址
说明:这种需求极为少见,例如两个私网(A,B)中间隔了一个公网,A私网只想直接通过B私网的地址去访问,就需要把A的源地址转换成公网地址,并且把目的地址B也转换成公网地址。当然需要在B的公网出口也做同样的工作。
传统配置:
access-list inside-to-1 permit ip 10.1.1.0 255.255.255.0 host 202.100.1.1
nat (inside) 1 access-list inside-to-1
global (outside) 1 202.100.1.101
static (outside,inside) 10.1.1.101 202.100.1.1
新配置方法(Twice NAT):
object network dst-1
host 202.100.1.1
object network pat-1
host 202.100.1.101
object network Inside-Network
subnet 10.1.1.0 255.255.255.0
object network map-dst
host 10.1.1.101
nat (inside,outside) source dynamic Inside-Network pat-1 destination static map-dst-1 dst-1
手工调整Twice Nat规则顺序
show nat
可以看到每条twice nat规则前面的序号,针对此序号操作,与access-list方法相同
如,在当前第1条前面插入一条:
nat (inside,outside) 1 source …… //插入到第1,将当前的第1行往下挤
NAT 0 + ACL 为什么不需要了
https://pics2.baidu.com/feed/f3d3572c11dfa9ec135e37d231b11e09908fc16b@f_auto?token=1981c8d369d43dc6e28d68404a0ad985&f=jpeg
nat (inside) 1 30.0.0.0 255.255.255.0
global (outside) 1 interface
这两条配置做完, Inside路由器可以PAT转换后访问到Outside路由器,但会发现Inside到dmz不通了。就是因为nat (inside) 1 影响到了 inside去往其他接口的流量(没有定义转换项)
解决办法是加上:
access-list IN-TO-DMZ permit ip 30.0.0.0 255.255.255.0 20.0.0.0 255.255.255.0
nat (inside) 0 access-list IN-TO-DMZ
但是在Network Object Nat中, nat (inside,outside) 已经明确关联了两个接口,自然就不会影响到inside去dmz了。
等同转换和NAT免除都取消了,改为使用twiceNAT完成:
nat (inside,outside) source dynamic NONAT-Network NONAT-Network destination static DST-Network DST-Network //mapped 和 real 相同,等于不翻译,或是等同翻译。 加之twiceNAT可以指定源地址和目的地址,即是可以匹配特定流量。