# rule

モード
  NATモード
カテゴリー
  UTM / NAT

## 構文

コマンド構文

`(config-nat)# rule [<1-65535>] masq {APPNAME|any} from SRC_ENTITY to DST_ENTITY [with src ADDR_ENTITY]`

`(config-nat)# rule [<1-65535>] netmap {APPNAME|any} from SRC_ENTITY to DST_ENTITY with {dst|src} NET_ENTITY`

`(config-nat)# rule [<1-65535>] portfwd {APPNAME|any} from SRC_ENTITY [to DST_ENTITY] with dst ADDR_ENTITY [dport <1-65535>]`

`(config-nat)# no rule {<1-65535>|all}`

## コマンド説明

NATルールを追加する。
no形式で実行した場合は指定したルールを削除する。
ルールの指定にはエンティティーとアプリケーションの両定義を使用するが、これらの定義が不完全な場合（指定したアプリケーションやエンティティーが未定義である、アプリケーション定義でIPプロトコルが未指定、など）、該当ルールは有効にならないので注意。ルールが有効化どうかは、show nat rule config-checkコマンドでチェックできる。
なお、ルールの順番はmove ruleコマンドで変更可能。

## パラメーター

`<1-65535>`
  ルール番号。省略時はリストの最後尾に新規ルールが追加される。このときのルール番号決定方法については「注意・補足事項」を参照
`masq`
  NATアクションとしてダイナミックENAT（IPマスカレード）または「内 → 外」方向のスタティックNATを指定する。「SRC_ENTITY」が単一アドレスを表しており、なおかつ「with src ADDR_ENTITY」で本ルール専用の（他で使われていない）変換後アドレスが指定されている場合は、「SRC_ENTITY」から「DST_ENTITY」に宛てられた「APPNAME」トラフィックの始点IPアドレスだけを「ADDR_ENTITY」に変換するスタティックNATの動作となる。それ以外の場合は、「SRC_ENTITY」から「DST_ENTITY」に宛てられた「APPNAME」トラフィックの始点IPアドレスとポート番号を動的に変換するダイナミックENATの動作となる（ポート番号の変換は必要なときだけ行われる）。変換後のIPアドレスは、「with src ADDR_ENTITY」が指定されている場合はADDR_ENTITYに関連付けられたホストアドレス、そうでないときは、該当パケットの出力インターフェースのIPアドレスとなる
`netmap`
  NATアクションとしてサブネットベースNATを指定する。サブネットベースNATでは、「SRC_ENTITY」から「DST_ENTITY」に宛てられた「APPNAME」トラフィックにおいて、「with dst NET_ENTITY」が指定されている場合は終点アドレスのサブネット部だけを「NET_ENTITY」で指定されたものに、「with src NET_ENTITY」が指定されている場合は始点アドレスのサブネット部だけを「NET_ENTITY」で指定されたものに変換する。サブネットベースNATでは、アドレスのホスト部は変換されない
`portfwd`
  NATアクションとしてスタティックENAT（ポートフォワーディング）または「外 → 内」方向のスタティックNATを指定する。「DST_ENTITY」で本ルール専用の変換前アドレス（グローバル側アドレス）が指定されており、ポート変換の指定（dport）がない場合は、「SRC_ENTITY」から「DST_ENTITY」に宛てられた「APPNAME」トラフィックの終点IPアドレスだけを「ADDR_ENTITY」に変換するスタティックNATの動作となる。それ以外の場合は「SRC_ENTITY」から本製品に宛てられた「APPNAME」トラフィックの終点IPアドレスを「ADDR_ENTITY」のIPアドレスに変換して転送するスタティックENATの動作となる。このとき、ポート変換の指定（dport）があればTCP/UDPポート番号も変換する。スタティックENATは本製品宛てのIPv4パケットに対してのみ作用する
`APPNAME`
  制御対象のアプリケーション名。指定可能なアプリケーションはshow application detailで確認可能（ただし、DPIアプリケーションは指定できない）。詳細は解説編を参照
`any`
  すべてのトラフィックをNAT対象にする
`from SRC_ENTITY`
  NAT対象トラフィックの送信元エンティティー名（show entityで一覧表示可能）
`to DST_ENTITY`
  NAT対象トラフィックの宛先エンティティー名（show entityで一覧表示可能）
`with src ADDR_ENTITY`
  ダイナミックENATおよび「内 → 外」方向のスタティックNATにおいて変換後のIPアドレスを表すエンティティー名（show entityで一覧表示可能）。「ゾーン.ネットワーク.ホスト」形式のホスト定義名で指定する。該当ホスト定義にはIPv4アドレス（ip address）を1つだけ関連付けること。アクションがmasqのときだけ有効。なお、本パラメーター省略時は、該当パケットの出力インターフェースのIPアドレスが変換後の始点アドレスとなる
`with {dst|src} NET_ENTITY`
  サブネットベースNATルールにおける変換後のサブネットアドレスを表すエンティティー名（show entityで一覧表示可能）。「ゾーン.ネットワーク」形式のネットワーク定義名で指定する。該当ネットワーク定義にはIPv4サブネット（ip subnet）を1つだけ関連付けること。「with dst」の場合は終点アドレスのサブネット部、「with src」の場合は始点アドレスのサブネット部が NET_ENTITY で指定したサブネットアドレスに変換される。アクションがnetmapのときだけ有効
`with dst ADDR_ENTITY`
  スタティックENATおよび「外 → 内」方向のスタティックNATにおける転送先ホスト（変換後アドレス）のエンティティー名（show entityで一覧表示可能）。「ゾーン.ネットワーク.ホスト」形式のホスト定義名で指定する。該当ホスト定義にはIPv4アドレス（ip address）を1つだけ関連付けること。アクションがportfwdのときだけ有効
`dport <1-65535>`
  スタティックENATにおいて、終点TCP/UDPポートを書き換えたい場合に変換後のポート番号を指定する。未指定時は終点TCP/UDPポートの書き換えは行わない
`all`
  no形式ですべてのNATルールを削除するときに指定する

## 使用例

ゾーン「private」から「public」へのトラフィックにダイナミックENATを適用するNATルールを追加する。

    awplus(config-nat)# rule masq any from private to public

ネットワーク「private.netA1」から「private.netB2」へのトラフィックについて、始点アドレスのサブネット部だけを「private.netA1」のアドレスから「private.netB1」のアドレスに変換するサブネットベースNATルールを追加する。

    awplus(config-nat)# rule netmap any from private.netA1 to private.netB2 with src private.netB1

ゾーン「public」から本製品に宛てられたHTTPトラフィックをゾーン「private」内ネットワーク「wired」上のホスト「webhost」に転送するポートフォワーディングルールを追加する。

    awplus(config-nat)# rule portfwd http from public with dst private.wired.webhost

ホスト「private.lan.srcA」から「private.lan.dstA」へのトラフィックについて、終点アドレスを「public.wan.dstA」に、始点アドレスを「public.wan.srcA」に変換するダブルNATを設定する。

    awplus(config-nat)# rule portfwd any from private.lan.srcA to private.lan.dstA with dst public.wan.dstA
    awplus(config-nat)# rule masq any from private.lan.srcA to public.wan.dstA with src public.wan.srcA

NATルール「20」を削除する。ルール番号はshow nat ruleコマンドで確認すること。

    awplus(config-nat)# no nat rule 20

## 注意・補足事項

ルールの処理順序については解説編を参照。
本コマンドでルール番号を指定しなかったときはリストの最後尾に新規ルールが追加される。このときのルール番号は次のようにして決まる。

- (1) 原則：既存の最後尾ルールより大きい直近の10の倍数になる
  - ルールが存在しない状態でルール番号を省略して作成したルールの番号は10（有効範囲内にある最小の10の倍数）
  - 最後尾のルール番号が10～18の状態でルール番号を省略して作成したルールの番号は20
- (2) 例外：既存の最後尾ルール番号の一の位が9のときは、「+11」した値（直近ではなくその次の10の倍数）になる
  - 最後尾のルール番号が19の状態でルール番号を省略して作成したルールの番号は20ではなく30（=19+11）
    ※この動作は、既存の最後尾ルールと新規に追加したルールの間に、後から別のルールを挿入する余地を残すため。
- その他：前述の仕様 (1) (2) により、最後尾のルール番号が65529以上の時は、ルール番号を省略して新規ルールを追加することはできない（65529 + 11 = 65540となりルール番号の最大値 65535 を超えてしまうため）。その場合はルール番号を明示的に指定して追加すること。

ポートフォワーディングでは、dportパラメーターを指定したときだけTCP/UDPのポート番号の変換を行う。dportパラメーター未指定時は変換せず、またICMPなどTCP/UDP以外のパケットに対しても終点IPアドレスの書き換え（指定ホストへの転送）を行う。
NAT機能の対象はIPv4アドレスのみ。IPv6アドレスには対応していない。
NATルールでは、アプリケーションコントロール（DPI）によって判別されたアプリケーションは指定できない。APPNAMEパラメーターでNAT対象トラフィックを指定するときは、あらかじめ定義されている事前定義済みアプリケーションかapplicationコマンドで定義したカスタムアプリケーションを指定すること。あるいは、すべてのトラフィックを意味する「any」キーワードを指定すること。
既存のルールを変更したときに、変更前のルールに該当するセッション情報がすでに登録されている場合は、clear firewall connectionsコマンドで古いセッション情報を削除すること。
NATルールの適用タイミングは、NATアクションによって次のように異なる。

- portfwd, netmap with dst - ファイアウォールルールの前に適用
- masq, netmap with src - ファイアウォールルールの後に適用

設定によっては、同一のトラフィックに対して2つのNATアクションが適用される場合があるため、不要なNATルールが適用されないよう、エンティティー定義を考慮すること。

## コマンドツリー

## 関連コマンド