Juniper SSG140 Policy-based Destination NAT in ScreenOS 6.3
Juniper NetScreenシリーズやSSGシリーズのScreenOSで使えていたVIP(Virtual IP)機能ですが、SRXシリーズのJUNOSでは使えないようです。
※SCREENOS TO JUNOS CONFIGURATION TRANSLATION TOOL(S2J)ではエラーになり、当該箇所はTRANSLATIONされません。
そんなこともあり、VIPで構成したものをPolicy-based Destination NAT(nat-dst)に書き換える作業をしています。
ところが世の中そんなに甘くはないものです。
資料の通りにやってみても上手くいかない。
インターネットで情報集めするものの...サイト毎に書いてあることが違うといういつものパターン。
[ScreenOS] Configuration Example - Policy-based Destination NAT in ScreenOS 6.3とConfiguration Example -- Configure Destination PAT (Port Address Translation) to Multiple Servers; includes Port Mapping/Port Forwardingを参考にして解決しました。
あくまでも私見での解釈ですので間違っていたら御免なさい。
= 前提条件 =
グローバルIPアドレス x.y.z.0/28(使えるIPアドレスは x.y.z.1 ~ x.y.z.14 まで)のインターネット環境があると仮定します。
"ethernet0/0"を"Untrust"ゾーン、"ethernet0/1"を"DMZ"ゾーンと設定します。
"ethernet0/0"にはIPアドレス x.y.z.2 が割り当てられてあり、他にサーバー用として割り当て可能なアドレスは以下の3つです。
x.y.z.3 x.y.z.7 x.y.z.10
グローバルIPアドレスと対象サービス(プロトコル:ポート番号)、転送されるプライベートIPアドレスは以下の通りです。
x.y.z.3 SMTP(TCP:25) → 192.168.1.2 x.y.z.7 DNS(TCP/UDP:53) → 192.168.1.3 x.y.z.10 HTTP(TCP:80) → 192.168.1.4 x.y.z.3 POP3(TCP:110) → 192.168.1.2 x.y.z.10 HTTPS(TCP:443) → 192.168.1.4
= 手順 =
1. Destination NATで使うグローバルIPアドレスをproxy-arp-entryとして定義する。
set interface ethernet0/0 proxy-arp-entry x.y.z.3 x.y.z.3 set interface ethernet0/0 proxy-arp-entry x.y.z.7 x.y.z.7 set interface ethernet0/0 proxy-arp-entry x.y.z.10 x.y.z.10
ScreenOS 6.3から"set arp nat-dst"が推奨されなくなりました。
代わりに"set interface Untrustインターフェース名 proxy-arp-entry グローバルIPアドレス グローバルIPアドレス"を設定しましょう。
2. route cacheを無効にする。
unset flow route-cache
資料の通りです。
3. グローバルIPアドレスを"DMZ"にオブジェクトとして定義する。
set address "DMZ" "global-mail" x.y.z.3 255.255.255.255 set address "DMZ" "global-dns" x.y.z.7 255.255.255.255 set address "DMZ" "global-web" x.y.z.10 255.255.255.255
通常は"DMZ"にはプライベートIPアドレスでオブジェクトを定義するのですが、Destination NATの場合はグローバルIPアドレスで定義します。
4. ポリシーを定義する。
set policy id 13 from "Untrust" to "DMZ" "Any" "global-mail" "SMTP" nat dst ip 192.168.1.2 permit log set policy id 13 set service "POP3" exit set policy id 14 from "Untrust" to "DMZ" "Any" "global-dns" "DNS" nat dst ip 192.168.1.3 permit log set policy id 14 exit set policy id 15 from "Untrust" to "DMZ" "Any" "global-web" "HTTP" nat dst ip 192.168.1.4 permit log set policy id 15 set service "HTTPS" exit
"Untrust" to "DMZ"のポリシーとして定義します。
"global-mail"などのdst-addressは3.で定義したものを使用します。
"nat dst ip プライベートIPアドレス permit"でDestination NATを有効にします。
policy id は一意の数字で構いません。
5. グローバルIPアドレスを"DMZ"インターフェースへのスタティックルートとして定義します。
set vrouter "trust-vr" set route x.y.z.3/32 interface ethernet0/1 set route x.y.z.7/32 interface ethernet0/1 set route x.y.z.10/32 interface ethernet0/1 exit
"DMZ"のインターフェースは"ethernet0/1"になりますので上記の書き方になります。
"Untrust"にあるIPアドレスを転送するのに必要なようです。
= 備考 =
これでPolicy-based Destination NATが機能するはずです。
自分の環境に合わせて書き換えてみてください。
今回は"DMZ"にあるサーバを外部公開しましたが、"DMZ"の部分を"Trust"に変更すれば"Trust"にあるサーバも外部公開できるようです。
参考になれば幸いです。