Altıncı JunOS makalemizde, JunOS işletim sistemli bir Juniper SRX 3400 Firewall üzerinde NAT(Network Address Translation) konfigürasyonlarının nasıl gerçekleştirileceğini inceleyeceğiz.
IPv4 adreslerinin yetersizliğine çözüm olarak geliştirilmiş NAT fonksiyonu sayesinde internet ortamında kullanılan gerçek IP’ler (public) ve lokal ağda kullanılan özel IP’ler (private) arasında dönüşüm ve dolayısıyla iletişim mümkün olabilmektedir. Bu sayede zaten yetersiz kalan public IP’lerin lokal ağlarda kullanılmalarının önüne geçilmiş olmaktadır.
Private IP olarak kullanılabilecek IP blokları şu şekildedir:
Tüm firewall’larda özünde iki çeşit NAT konfigürasyonu gerçekleştirilmektedir. Bir tanesi Source NAT ve diğeri Destination NAT’tır. Yani lokal ağınızdaki sistemlerinizin internet ortamına erişimlerinde Source NAT tanımı yapılandırılmalıyken, internet ortamından lokal ağınızda publish ettiğiniz sistemlerinize erişimler için de destination NAT konfigürasyonu yapılandırılmalıdır.
Bu iki NAT tanımının haricinde bir de Static NAT vardır ki aslında görevi destination NAT’lık yapmaktır. Farklarını ve kullanımını ilerleyen sayfalarda inceleyeceğiz.
NAT
1 – Source NAT
2 – Destination NAT
i- Destination NAT
ii- Static NAT
NAT konfigürasyonları yapılandırılırken paketlerin source ve destination IP’leri için dönüşümler sağlanabildiği gibi port dönüşümleri de mümkün olabilmektedir(Port Address Translation – PAT).
Aşağıdaki topolojiye göre yapacak olduğumuz örnek konfigürasyonlarla JunOS CLI’ında NAT yapılandırmasını inceleyelim:
1 – Source NAT
Source NAT Örnek-1:
TRUST zone’undaki 192.168.1.11 IP’li bilgisayar internete 5.10.15.11 IP’si ile NAT’lanarak çıkış yapsın.
Source NAT Örnek-2:
TRUST zone’undaki diğer tüm bilgisayarlar 5.10.15.12 ve 5.10.15.13 IP’leriyle çıkış yapsın. (İki IP’den oluşan bir Pool’un kullanımı)
Bunun için yapacak olduğumuz Source NAT konfigürasyonları aşağıdaki gibi olmalıdır:
Örnek-1:
Rule-Set Tanımlanmalı (Kaynağı TRUST hedefi UNTRUST olacak T_to_U isimli bir rule-set tanımlayalım )
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat source rule-set T_to_U from zone TRUST
sensoy@Semerkand-Fw1# set security nat source rule-set T_to_U to zone UNTRUST
Pool Tanımlanmalı (Sensoy-pool isimli bir pool tanımlayalım)
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat source pool Sensoy-pool address 5.10.15.11/32
Rule Tanımlanmalı
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat source rule-set T_to_U rule Sensoy-rule match source-address 192.168.1.11/32
sensoy@Semerkand-Fw1# set security nat source rule-set T_to_U rule Sensoy-rule match destination-address
0.0.0.0/0
sensoy@Semerkand-Fw1# set security nat source rule-set T_to_U rule Sensoy-rule then source-nat pool
Sensoy-pool
Örnek-2:
Rule-Set Tanımlanmalı
T_to_U isimli bir rule-set bir önceki örnekte zaten tanımlanmıştı.
Pool Tanımlanmalı (All-Clients-pool isimli bir pool tanımlayalım)
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat source pool All-Clients-pool address 5.10.15.12/32 to 5.10.15.13/32
Rule Tanımlanmalı
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat source rule-set T_to_U rule All-Clients-rule match source-address
0.0.0.0/0
sensoy@Semerkand-Fw1# set security nat source rule-set T_to_U rule All-Clients-rule match destination-address 0.0.0.0/0
sensoy@Semerkand-Fw1# set security nat source rule-set T_to_U rule All-Clients-rule then source-nat pool All-Clients-pool
Source NAT konfigürasyonunda pool tanımı kullandığımız iki örneği yukarıda gördük. Pool tanımının haricinde, Source NAT IP değeri olaral UNTRUST interface’inin IP’si de kullanılabilir.
sensoy@Semerkand-Fw1# set security nat source rule-set T_to_U rule All-Clients-rule then source-nat interface
Ya da Source NAT kullanılmasın da denilebilir.
sensoy@Semerkand-Fw1# set security nat source rule-set T_to_U rule All-Clients-rule then source-nat off
2 – Destination NAT
i- Destination NAT
Destination NAT Örnek-1:
192.168.2.1 IP’li Web sunucumuz üzerinde geliştirilmiş sayfamızı dışarıdan 5.10.15.80 IP’si ile erişilebilir hale getirmek için(Web Publishing) Destination NAT tanımı yapalım.
Destination NAT Örnek-2:
192.168.5.1 IP’li SFTP sunucumuzu dışarıdan SSH portundan ve 5.10.15.22 IP’si ile erişilebilir hale getirmek için Destination NAT tanımı yapalım.
Örnek-1:
Rule-Set Tanımlanmalı (Kaynağı UNTRUST olacak U_DNAT isimli bir rule-set tanımlayalım )
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat destination rule-set U_DNAT from zone UNTRUST
Pool Tanımlanmalı (Web-pool isimli bir pool tanımlayalım)
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat destination pool Web-pool address 192.168.2.1/32
sensoy@Semerkand-Fw1# set security nat destination pool Web-pool address port 80
Rule Tanımlanmalı
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat destination rule-set U_DNAT rule Web–rule match source-address 0.0.0.0/0
sensoy@Semerkand-Fw1# set security nat destination rule-set U_DNAT rule Web–rule match destination-address 5.10.15.80/32
sensoy@Semerkand-Fw1# set security nat destination rule-set U_DNAT rule Web–rule match destination-port 80
sensoy@Semerkand-Fw1# set security nat destination rule-set U_DNAT rule Web–rule then destination-nat pool
Web-pool
Örnek-2:
Rule-Set Tanımlanmalı
U_DNAT isimli bir rule-set bir önceki örnekte zaten tanımlanmıştı.
Pool Tanımlanmalı (SFTP-pool isimli bir pool tanımlayalım)
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat destination pool SFTP-pool address 192.168.5.1/32
sensoy@Semerkand-Fw1# set security nat destination pool SFTP-pool address port 22
Rule Tanımlanmalı
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat destination rule-set U_DNAT rule SFTP–rule match source-address 0.0.0.0/0
sensoy@Semerkand-Fw1# set security nat destination rule-set U_DNAT rule SFTP–rule match destination-address 5.10.15.22/32
sensoy@Semerkand-Fw1# set security nat destination rule-set U_DNAT rule SFTP–rule match destination-port 22
sensoy@Semerkand-Fw1# set security nat destination rule-set U_DNAT rule SFTP–rule then destination-nat pool SFTP-pool
2 – Destination NAT
ii- Static NAT
Destination NAT tanımında yaptığımız iki örneği şimdi de Static NAT ile gerçekleştirelim.
Örnek-1:
Rule-Set Tanımlanmalı
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat static rule-set U_StNAT from zone UNTRUST
Rule Tanımlanmalı
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat static rule-set U_StNAT rule Web–rule match destination-address 5.10.15.80/32
sensoy@Semerkand-Fw1# set security nat static rule-set U_StNAT rule Web–rule then static-nat prefix 192.168.2.1/32
Örnek-2:
Rule-Set Tanımlanmalı
U_StNAT isimli bir rule-set bir önceki örnekte zaten tanımlanmıştı.
Rule Tanımlanmalı
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat static rule-set U_StNAT rule Web–rule match destination-address 5.10.15.22/32
sensoy@Semerkand-Fw1# set security nat static rule-set U_StNAT rule Web–rule then static-nat prefix 192.168.5.1/32
Destination NAT ile Static NAT arasındaki en büyük fark, Static NAT konfigürasyonunda port tanımlama imkanının bulunmamasıdır. Tanımlanan NAT, tüm port’lar için geçerli olacaktır.
Ayrıca, Static NAT tanımlanmış bir Server, dışarıya da aynı IP ile NAT’lanıp çıkar. Bizim örneğimizde Web Server için
5.10.15.80 ß à192.168.2.1 şeklinde bir Static NAT tanımı yaptık. 192.168.2.1 IP’li Web sunucumuz, internete erişim gerçekleştirdiğinde de IP’si 5.10.15.80 olarak görülecektir. Farklı bir IP ile NAT’lanıp çıkması mümkün olmayacaktır.
Proxy-ARP Konfigürasyonu
İster Source isterse de Destination( Destination & Static) NAT tanımı gerçekleştirilsin, NAT konfigürasyonunda tanımlanan tüm IP’ler için Proxy-ARP tanımı yapılmak zorundadır. Bizim örneklerimizde kullandığımız Public IP’ler şunlardı:
5.10.15.11/32
5.10.15.12/32
5.10.15.13/32
5.10.15.80/32
5.10.15.22/32
Bu beş IP için yapılması gereken Proxy-ARP konfigürasyonu aşağıdaki gibi olmalıdır:
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security nat proxy-arp interface reth1.0 address 5.10.15.11/32
sensoy@Semerkand-Fw1# set security nat proxy-arp interface reth1.0 address 5.10.15.12/32
sensoy@Semerkand-Fw1# set security nat proxy-arp interface reth1.0 address 5.10.15.13/32
sensoy@Semerkand-Fw1# set security nat proxy-arp interface reth1.0 address 5.10.15.80/32
sensoy@Semerkand-Fw1# set security nat proxy-arp interface reth1.0 address 5.10.15.22/32
Son olarak, Destination NAT tanımı yaptığımız Web Server için yazılacak policy örneğiyle makalemizi sonlandıralım. Dikkat edilmesi gereken husus, policy’nin destination-address kısmında public IP değil private IP tanımlanması gerektiğidir. Yani destination-address kısmında 5.10.15.80 değil, 192.168.2.1 IP’si yazılmalıdır.
{primary:node0}[edit]
sensoy@Semerkand-Fw1# set security policies from-zone UNTRUST to-zone WEB policy WebSayfasi-Erisim match source-address any
sensoy@Semerkand-Fw1# set security policies from-zone UNTRUST to-zone WEB policy WebSayfasi-Erisim match destination-address WEB_Server-192.168.2.1
sensoy@Semerkand-Fw1# set security policies from-zone UNTRUST to-zone WEB policy WebSayfasi-Erisim match application junos-http
sensoy@Semerkand-Fw1# set security policies from-zone UNTRUST to-zone WEB policy WebSayfasi-Erisim then permit
sensoy@Semerkand-Fw1# set security policies from-zone UNTRUST to-zone WEB policy WebSayfasi-Erisim then log session-close
Hoşçakalın.