ほぼ雑記的メモ
最近さくらのVPSとか安価でFreeBSDを使えるサイトが出てきました。 こういったサービスでもjailを使いたいのですが、 悩ましいのが安いサービスはIPアドレスが1つしかもらえないこと。 もちろん適当なプライベートなIPアドレスをIFにaliasで振ってjailを作っちゃえばいいんですが、これだとjail内部から外部へ通信ができないという問題があります。
そこでpfを使ってNATを構築してみました。jailをプライベートIPで外へ出ていくパケットをNATでグローバルIPに変換してやろうという考え方です。
いろいろ試行錯誤してみましたが、結論からいうともう1つIFを作るのが手っ取り早いようです。とりあえずlo1を作ります。
# ifconfig lo1 create # ifconfig lo1 up
で、アドレスを振る。ここでは 10.0.0.1にしてみました。
# ifconfig lo1 10.0.0.1 netmask 255.255.255.255
/etc/pf.confに次のように書きます。
ext_if="em0" int_if="lo1" table <private> const {10.0.0/24} nat on $ext_if inet from ($int_if) to ! <private> -> ($ext_if)
これで jailを10.0.0.1で起動すれば、lo1(すなわちjail)から外に出るパケットはpfでext_ifのアドレスに書き換えられます。 (em0は適当に環境に合わせて書き換えてください)
/etc/rc.confで起動時に自動的に実行させるには以下の行を追加します。
ifconfig_lo1="inet 10.2.2.1 netmask 255.255.255.255" cloned_interfaces="lo1" pf_enable="YES" pf_rules="/etc/pf.conf"
いずれもFreeBSD-9.1で確認しました。
Powered by Red Leaf ( Rev. cbaa1e9fd ), © Issei Numata, 2007-2021
コメント一覧