当你和一个外部的公司接续了×××站点,由于本公司内部网络发生了变化,原来用于和对方接续的自己一方的IP地址段被迫变成了其它的地址段,而对方公司很难交涉,难道×××就不能用了,的确在以前版本的ASA的确没办法了,只能在ASA内侧加一个路由器进行NAT源地址变化。
    从8.3版发生了很多重大改变,NAT是其中之一。NAT不再是nat 0,1这样的许可和排除了,而是直接定义了原源地址,原目的地址,变化后的源地址,变化后的目的地址,即便是不做NAT,也需要定义一个不改变的策略,否则无法通过,而且引入了策略形式,执行多条相关NAT转换策略的时候,是分执行顺序的,最上面是最先执行,所以上网的NAT策略一定是最后一条。
    说句题外话,这个功能在juniper的防火墙上早就实现了,现在的asa比早期的netscreen都差很多,以后慢慢说差距在那儿。
    下面说配置吧。
 
定义地址摒弃了原来的直接地址而是代用自己定义的名字去定义IP地址范围(netscreen早就这样了)。
描述一下结构,本地参与×××站点的地址是172.26.7.0/24,对端abc公司参与的是10.24.60.0/28,
先定义对端地址
object network abcCorporation
 subnet 10.24.60.0 255.255.255.240
本公司和3个地方分公司通过专线接入,所以要把原来的172.26.7.0/24拆分成4份,本公司因为在原来的路由范围内,所以不做变化,只定义3个NAT变化的地址池。
object network abcNatPool_ChengDu
 subnet 172.26.7.128 255.255.255.128
object network abcNatPool_ShangHai
 subnet 172.26.7.64 255.255.255.192
object network abcNatPool_HangZhou
 subnet 172.26.7.32 255.255.255.224
本公司不做NAT变化,直接定义地址
object network Bendi_abc
 subnet 172.26.7.0 255.255.255.224
下面定义真实的各地IP地址
object network ChengDu_abc
 subnet 10.16.192.0 255.255.255.128
object network ShangHai_abc
 subnet 10.16.65.0 255.255.255.192
object network HangZhou_abc
 subnet 10.16.83.0 255.255.255.224
注意看地址范围和NAT地址池的大小范围是一致的。
定义一个访问许可的组,把所有许可的真实地址包含进去,这样配置看的干净,清晰
object-group network abcAccess
 network-object object ShangHai_abc
 network-object object Bendi_abc
 network-object object ChengDu_abc
 network-object object HangZhou_abc
下面要定义本地的本源地址
object network abcToSource
 subnet 172.26.7.0 255.255.255.0
这样,地址定义完了。下面就是NAT部分,因为发生了重大变化,不要用老版本的思想来解读。
nat (inside,outside) source static ChengDu_abc abcNatPool_ChengDu destination static abcCorporation abcCorporation
nat (inside,outside) source static ShangHai_abc abcNatPool_ShangHai destination static abcCorporation abcCorporation
nat (inside,outside) source static HangZhou_abc abcNatPool_HangZhou destination static abcCorporation abcCorporation
nat (inside,outside) source static Bendi_abc Bendi_abc destination static abcCorporation abcCorporation
nat (inside,outside) source dynamic NAT-Internet interface
nat的括号后面跟着的入和出的Zone的定义,现在人性化了,inside就是内,outside就是外,不在倒换让人找不到北。source是源地址的定义,static是NAT的原始含义,一一对应,所以上面的地址池的大小一定和真地址范围一样大。先是ChengDu_abc,真实源地址,abcNatPool_ChengDu 变成这个地址池的地址,destination static目的地址不发生变化,所以跟了两个abcCorporation abcCorporation
,意思就是说从a变到a,那不是什么都没变嘛。最后一行是本地上网用的,NAT-Internet是一个组,定义了本地可以上网的地址,和本案无关,不做表述了。
下面是内网可以进入的访问,作用在内网接口
access-group inside_access_in in interface inside
定义了访问许可列表
access-list inside_access_in extended permit ip object-group abcAccess object abcCorporation
这里调用了上面定义的abcAccess
access-list inside_access_in extended deny ip any object abcCorporation
阻止其它任意地址访问abc公司
当然还有本地上网的列表,也不做表述了。
这NAT部分就完了,下面就该是×××部分了,这里有个很重要的问题,就是在思科设备里,是先执行NAT还是先执行×××,看看我的案例,应该知道答案了,是先NAT后×××,所以先进行了NAT转换,用转换后的地址,也就是NAT地址池的地址参与×××配置。
access-list outside_1_cryptomap extended permit ip object abcToSource object abcCorporation
crypto ipsec transform-set ESP-AES-128-SHA esp-aes esp-sha-hmac
crypto ipsec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac
crypto ipsec security-association lifetime seconds 28800
crypto ipsec security-association lifetime kilobytes 4608000
crypto map outside_map 1 match address outside_1_cryptomap
crypto map outside_map 1 set peer 69.*.*.45
crypto map outside_map 1 set transform-set ESP-3DES-SHA
crypto map outside_map 1 set nat-t-disable
crypto map outside_map interface outside
crypto isakmp enable outside
crypto isakmp policy 10
 authentication pre-share
 encryption 3des
 hash sha
 group 1
 lifetime 28800
crypto isakmp policy 20
 authentication pre-share
 encryption 3des
 hash md5
 group 2
 lifetime 86400
crypto isakmp policy 30
 authentication pre-share
 encryption 3des
 hash sha
 group 2
 lifetime 86400
crypto isakmp nat-traversal 3600
tunnel-group 69.*.*.45 type ipsec-l2l
tunnel-group 69.*.*.45 ipsec-attributes
 pre-shared-key *****
网上asa建立vpn站点的案例很多,不解释了,强调一点,就是第一行的匹配地址,它的源地址是整个源abcToSource,172.26.7.0/24,是所有nat地址池组合起来的。
 
    到此整个配置就完成了,至于其它通过专线到个地路由什么的不在这里表述。