うまいぼうぶろぐ

linuxとhttpdとperlのメモ

juniper screenos NAT メモ

久々すぎて一部忘れてた

  • VIP
  • MIP
  • DIP
  • ポリシーベース Nat-Dst, Nat-Src

設定内容によっては複数の方法で実現できるものもあるけど、基本的にはこんな感じ?

VIP

Virtaul IP
dest NATで使う。
untrust interfaceでのみ設定可能。
untrustに設定した(通常は)グローバルIP宛のパケットをtrustなどのプライベートIP宛に変換する際に利用する。

VIPはip:port のペアで設定するので、1つのIPで複数のプライベートIPを公開できる。

trustのプライベートIPからuntrustへパケットが出て行く場合に、
自動的にsrc IPがVirtualIPにNATされることはない。
(ポリシーベースの設定を別途すればできる)

MIP

Mapped IP
1対1のアドレス変換?
MIPの設定画面にnetmaskあるけど通常は255.255.255.255にして1対1で変換する際に利用する。と思う

ポリシーでアドレスを選択する際にMIPを選ぶ。
対象のゾーンはMIPをつけたinterfaceがバインドしているゾーン、もしくはGlobalゾーン。

DIP

src NAT
interfaceにあらかじめsrc NATしたいIPを設定しておく。
次にポリシーのAdvancedの画面でNAT Source Translationで設定したDIPを選択する。
DIPを設定していなくてもNone(Use Egress Interface IP)が選べる。
文字通り、outboundへ出て行く時のinterfaceのIPでnatする設定。

ポリシーベース NAT

mip,dipを利用せず(src-natの場合はdipは使う)
ポリシーのAdvancedでNATを設定する。

おまけ: ゾーンを跨ったDestination NAT

ゾーンを跨ったDest Natする場合は複数のポリシーの組み合わせが必要?
こんな設定する機会ないような気もするけど、
ふと気になったのでやってみた。

例えばssgがこうなっているとする。

  • eth0 untrust 192.0.2.1 # global IP
  • eth1 dmz 198.51.100.1 # global IP
  • eth2 trust 192.168.0.1 # private IP

この時、インターネット上のPC 203.0.113.1 から
trust ネットワークにいるサーバ 192.168.0.2 へアクセスしたいとする。

通常のdest nat (宛先IPはuntrustのネットワーク)の設定方法

次の2種類のどっちか

  • 1. VIP/MIP

untrustのeth0にVIPかMIP(ex: 192.0.2.2)を設定
MIP 192.0.2.2
Netmask 255.255.255.255
host IP: 192.168.0.2

untrust to untrust もしくはuntrust to global のポリシーを設定
src: 203.0.113.1
dest: MIP(192.0.2.2)

  • 2. ポリシーベースNAT

untrust to untrust のポリシーでAdvanced、
src: 203.0.113.1
dst: 192.0.2.2
NAT dst: 192.168.0.2

宛先IPをdmz のネットワークにする

インターネット上からdmzの198.51.100.2 へアクセスし、それをtrustの192.168.0.2 へdst nat する。

直接MIPでNATしても出来なかった。

色々やってできた例 (policyとmip組み合わせる)
policy
untrust to dmz
src: 203.0.113.1
dst: 198.51.100.2
NAT dst: 198.51.100.3
(一旦、他のipへNAT)


dmzのMIP
Mapped IP: 198.51.100.3
host: 192.168.0.2


このあとdmz to Global にポリシー追加
(denyされた時はログ残るけどpermitしたのが残らない。なんで?)
src: 203.0.113.1
dst: MIP(198.51.100.3)


やったあと気づいたけど、screenosが5.xでかなり古かったので新しいのだともっとスマートにできそう