FreeNASを愛用の方も多いかと思いますが、FreeNASではポートフォワードなどの機能がGUI上からは行えません。
とは言え、jailでプラグインなどを利用するとどうしても欲しくなる時があります。
ここではipfwとnatdを使ったポートフォワードを行います。
※tcp80をフォワードする時は管理GUIのポート番号をあらかじめ変更しておいてください。
手順
1. JailのConfigurationで内部用ネットワークを作成
jail→Configuration を選択
→物理ネットワークと被らないようにする
例)172.30.111.0/24など
※Jail側のゲートウェイアドレスは172.30.111.254になる
2. Jailでコンテナ作成する
プラグインなどを使ってコンテナを作成しましょう。
※作成の際は、VIMAGEとNATにチェック入れる事を忘れずに
3. rc.confの修正
natさせるため、/etc/rc.conf(/conf/base/etc/rc.conf)を修正する
下記を最終行へ追記
# Enable natd
natd_program="/sbin/natd" # path to natd, if you want a different one.
natd_enable="YES" # Enable natd (if firewall_enable == YES).
natd_interface="vtnet0" # Public interface or IPaddress to use.
natd_flags="-f /etc/natd.conf" # Additional flags for natd.
gateway_enable="YES"
firewall_enable="YES"
firewall_type="open"
4. natの設定
/etc/natd.conf(/conf/base/etc/natd.conf)を作成する
下記のような感じで。example: natd(8)以下に実施したい項目を追加する。
この場合は192.168.111.130:80,443(ホストインターフェース)に来たパケットを172.30.111.10:80,443(Jailインターフェース)へフォワード
### 基本設定
use_sockets yes
same_ports yes
port 8668 # NAT ルーティングに使用するポート
unregistered_only yes
dynamic yes # ルーティングインターフェイスの動的監視.ppp では必須
### これ以降はポートフォワーディング設定
## redirect_port PROT TARGET_ADDR:TARGET_PORT[-TARGET_PORT] IN_PORT[-IN_PORT]
## example: natd(8)
redirect_port tcp 172.30.111.10:80 192.168.111.130:80
redirect_port tcp 172.30.111.10:443 192.168.111.130:443
5. initコマンド追加
コンパネ→Tasks→Init/Shutdown Scriptの追加
- タイプ:コマンド
- コマンド:/sbin/ipfw add 10 divert 8668 ip from any to any via vtnet0
※最右は対象のインターフェース名 - When:Post Init
- 有効化:チェック
6. 再起動
Freenasを再起動して、設定が反映されているか確認する。
さいごに
FreeNASのバージョンによる差異がありますが、ipfwとnatdは使えますので問題ないと思います。