瞻博(Juniper)的SRX建立×××站点比较简单,NAT的运用也简单,我要谈的是他们之间的联合运用。
要求的情况:
本地A和一个地方B建立×××站点连接,一个远程地方C通过专线到达本地,该远程只有到达本地A的路由,而且不能添加路由。要求远程C通过本地A访问×××站点B。
先来看一下×××站点的配置,虽说很简单,还是贴一下配置。该SRX是11.4R6.6的版本
security { ike { proposal pre-g2-aes128-sha1 { authentication-method pre-shared-keys; dh-group group2; authentication-algorithm sha1; encryption-algorithm aes-128-cbc; lifetime-seconds 28800; } policy RemoteIKE { mode main; proposals pre-g2-aes128-sha1; pre-shared-key ascii-text "*****************"; ## SECRET-DATA }
gateway RemoteGW { ike-policy RemoteIKE; address 36.*.*.89;
external-interface ge-0/0/0; version v1-only; }
ipsec { proposal esp-3des-sha1 { protocol esp; authentication-algorithm hmac-sha1-96; encryption-algorithm 3des-cbc; lifetime-seconds 3600; }
policy g2-esp-3des-sha1 { perfect-forward-secrecy { keys group2; } proposals esp-3des-sha1; }
*** Remote××× { bind-interface st0.2; ***-monitor { optimized; } ike { gateway RemoteGW; ipsec-policy g2-esp-3des-sha1; } establish-tunnels on-traffic; }
routing-options { static { route 0.0.0.0/0 next-hop 122.*.*.185; route 172.24.60.0/24 next-hop st0.2; }
}
看到这里,估计能看出来×××站点B的地址就是172.24.60.0/24,远程C的地址是172.16.0.0/16,本地A是172.18.0.0/16,远程C只有到172.26.0.0/16的路由,而没有到172.24.60.0/24,同样×××站点B也没有到远程C的路由,那么不能用了?
NAT的联合运用可以解决这个问题。
SRX的NAT分3大类,source、destination、static,源地址NAT里面可以再分为地址池和接口两种,就是把源地址替换成地址池的地址还是指定接口的地址,destination和static很相似,都是换目的地址的,但是有区别,destination用地址池,是轮换着使用的,static则是定位固化变换。另外说一下他们3个的执行顺序,静态〉目的〉源,还要说一下他们和其它的执行顺序,路由是低于NAT的,×××是低于路由的(这里用的是基于路由的×××站点),最终执行的顺序是:静态NAT〉目的NAT〉策略〉源NAT〉路由〉×××。
这里第一次出现了策略,因为牵扯到NAT的变换,到底是用变换前的地址还是后呢?
就以本例来说明。
C地点是172.16.0.0/16,我们让C访问172.18.60.0/24,这样就可以到达本地A了,在A通过源地址NAT转换把源地址为172.18.12.0/24,通过静态NAT转换把172.18.60.0/24为172.24.60.0/24,这样就变成本地A访问×××站点的B了。
那么策略的地址该如何?
172.16.0.0/16-〉172.24.60.0/24
我们看到排序,静态NAT是先执行,先把目的地址换成了172.24.60.0/24,这时候的包源地址是172.16.0.0/16,目的是172.24.60.0/24,以这样的状态过策略,策略通过之后继续源NAT,把源地址换成172.18.12.0/24,到×××站点B之后就是符合要求的。
我们来看一下配置。
nat { source { pool ManCo { routing-instance { ManCo; } address { 172.18.12.0/24; } port no-translation; } rule-set ShangHai-ManCo { from zone ManIN; to zone ManCo×××; rule ShangHai { match { source-address 172.16.0.0/24; destination-address 172.24.60.0/24; } then { source-nat { pool { ManCo; } } } } 172.16.0.0/24 } } static { rule-set 5rt { from zone ManIN; rule 5rt-r { match { destination-address 172.18.60.0/24; } then { static-nat { prefix { 172.24.60.0/24; } } 172.16.0.0/24 } } } } } 静态NAT的变换是一一对应,访问172.18.60.1就变172.24.60.1,访问172.18.60.2就变172.24.60.2,这和源地址NAT最大不同, 172.16.0.1的源地址访问同一个172.24.60.1,一次session访问变成172.18.12.1,2次session的时候就变成172.18.12.2了。