Juniper的SRX的NAT詳解

不久前發了一篇NAT和×××的聯合使用。關於NAT方面有些細節,他們之間的做用和不一樣。我這裏都以11版爲基礎,我看過一些老版的資料,配置已經徹底不一樣了,功能也不太同樣。NAT分3大類
1.Static NAT--靜態NAT
它主要用途是發佈內網或者是DMZ裏面的服務器,供外部訪問,做用在數據流進來的接口或者安全Zone上,能夠細化到端口port,對指定的端口才進行內網的轉送,最大限度的提升安全性。
例子:
rule-set PublishWebServer  {
    from interface ge-0/0/0.0;
    rule WebHTTP {
        match {
            destination-address 122.*.*.189/32;
            destination-port 80;
        }
        then {
            static-nat {
                prefix {
                    192.168.18.26/32;
                    mapped-port 80;
                }
            }
        }
    }
}
[edit security nat static]
這是一個典型的發佈內部web服務器的例子。
 
2.Destination NAT--目的地址NAT
它其實和靜態NAT極爲類似,均可以用地址池,都做用在數據流進來的接口或者安全Zone上,也均可以細化到端口,然而惟一一個特性決定了它和靜態NAT用途不一樣,靜態NAT是發佈內部的服務器的,而目的地址NAT是用在各個區間之間地址不可用或者重疊用的,它就是它不單單匹配目的地址,也匹配源地址,這對於在同一接口上的流量進行分離識別,分別對待很是有用,固然對硬件的消耗天然也大,因此發佈服務器用靜態,內部流量轉換用目的地址NAT。
例子:
shen_xu@SRX240H# show
pool test {
    address 172.24.60.0/24;
}
rule-set t-d {
    from zone ManIN;
    rule r-t-d {
        match {
            source-address 172.26.2.0/24;
            destination-address 10.0.0.0/24;
        }
        then {
            destination-nat pool test;
        }
    }
}
[edit security nat destination]
能夠看到,此次咱們應用的安全Zone,而不是接口,由於不信任的Zone裏面可能不僅有一個接口,因此針對接口而不是zone;而這個是內部各個zone之間的通訊,可能來自於兩個線路,能夠屬於一個安全zone。這裏就不在用接口地址而是地址池,由於這樣的轉換是大範圍的,一個C段的轉換,這裏不單單出現了destination-address,還有source-address,爲何有這樣的細分呢,若是從其它線路來的到同一個目的的有些須要轉換,有些不須要,這樣這裏出現匹配源地址就頗有用處了。
 
3.Source NAT--源地址NAT
源地址和前兩個有個根本的不一樣,着眼點是源地址的轉換,它做用於策略以後,而剛纔的兩個是做用在策略以前。
它是最經常使用的,咱們上網必用它。
例:
pool USEN {
    address {
        122.*.*.189/32 to 122.*.*.190/32;
    }
}
rule-set Local-to-untrust {
    from zone Local;
    to zone untrust;
    rule Local-nat-rule {
        match {
            source-address 0.0.0.0/0;
        }
        then {
            source-nat {
                pool {
                    USEN;
                }
            }
        }
    }
}
[edit security nat source]
我這裏用的源地址是0.0.0.0/0,爲何呢,由於它做用於策略以後,有策略在前面驗證,後面對源地址的驗證就顯得多餘了,若是在驗證一下,實在是浪費資源,影響效率。
還記得上一篇說到,源地址的轉換,是使用地址池的地址,每次session都變IP,這樣有時候並很差,好比Voip的時候,也許就會出問題。要讓源地址也定住,那麼就須要加些東西。經過個人研究,得出告終果。
例:
pool ManCo {
    routing-instance {
        ManCo;
    }
    address {
        172.26.12.0/23;
    }
    port no-translation;
}
rule-set ManWork-ManCo {
    from zone ManIN;
    to zone ManCo×××;
    rule ShangHai {
        match {
            source-address 172.16.65.0/25;
            destination-address 172.24.60.0/24;
        }
        then {
            source-nat {
                pool {
                    ManulifeCo;
                    persistent-nat {
                        permit any-remote-host;
                        address-mapping;
                    }
                }
            }
        }
    }
}
[edit security nat source]
看到地址池怎麼多了個東西,   
 routing-instance {
        ManCo;
    }
這個之後在說,這是虛擬路由器。咱們看到port no-translation,這是很關鍵的,禁止port變換,必須用IP一一對應,若是不這樣作,後面的一些地方就進行不了了。看persistent-nat,這就是固定IP的,它的裏面有permit any-remote-host,其實還有3個選項,
permit Target host和permit Target host port,第一個是無條件的,從目的發來的包固定反射回來原本的IP,第2個是已經有過流量的IP,第3個就更加嚴格了不單單要IP還要端口。看看它們原來的英文介紹吧。
Any remote host—All Any external host can send a packet to the internal host by sending the packet to the reflexive transport address.
Target host—All  An external host can send a packet to an internal host by sending the packet to the reflexive transport address. The internal host must have previously sent a packet to the external host’s IP address.
Target host port—All  An external host can send a packet to an internal host by sending the packet to the reflexive transport address. The internal host must have previously sent a packet to the external host’s IP address and port.
最後還有句address-mapping,這個也和安全相關,這是動態映射地址,若是沒有這個那麼地址的轉換將會是永久的,若是加了,超過最大期限後會刪除這個對應關係的。
 
參考文檔
相關文章
相關標籤/搜索