読者です 読者をやめる 読者になる 読者になる

qjailについてのTIPS

単発ネタが多いからまとめて投稿
随時更新します。

qjailでもVIMAGE vnetを使う方法


追記(07/10)
そのままではvnetを有効化できませんでした。
こちらの記事の内容で有効化できます。

vnetが動かないqjailを無理やり動かしてみる -


freebsd qjailでもvnetを有効化できます。

# qjail config -w em1 test01
Successfully enabled vnet.interface for test01
  • wのあとにはインターネットに到達できる(もしくは予定)のインターフェイスを指定。


qjailでホストへのシンボリックリンクを貼る方法

ezjailではそのままflavours/defaultに、

ln -s /basejail/pkg /usr/jails/flavours/default/pkg

して、ezjail-admin createしても何のエラーもなく通してくれますが、
qjailのflavors/defaultに

ln -s /sharedfs/pkg /usr/jails/flavours/default/pkg

上記のようにシンボリックリンクを張ったあとqjail createすると、

# qjail create -f default -4 10.0.0.1 example
Only in /usr/jails/flavors/example: pkg
Error invalid directories in flavor default.

とエラーが出て作成ができません。

しかしシンボリックリンクを張らずに先にqjail createし、その後に

ln -s /sharedfs/pkg /usr/jails/example/pkg

と打てば普通にホスト側へのシンボリックリンクが貼れます。

qjailで一気に複数のjailを作成する方法

qjail create -f default -d [jailの数] -4 10.0.0.1 test
  • dのあとに数値を入れればその数のjailを作ってくれます。

以下は例

# qjail create -f default -d 15 -4 10.0.0.1 test
Warning: Existing jail test01 is already assigned IP address 10.0.0.1
Successfully created  test-1
Successfully created  test-2
Successfully created  test-3
Successfully created  test-4
Successfully created  test-5
Successfully created  test-6
Successfully created  test-7
Successfully created  test-8
Successfully created  test-9
Successfully created  test-10
Successfully created  test-11
Successfully created  test-12
Successfully created  test-13
Successfully created  test-14
Successfully created  test-15

qjail delete -Aで全て削除できる

qjail start で全てのjailが動く

qjail stop で全てのjailが止まる

pingなどを有効化する

標準の状態では無効になっているのでpingが飛ばせません。

#jail -m name=test01 allow.raw_sockets=1

または、

#qjail config -k test01

netstatなどを有効化する

標準のdevfsでは/dev/memや/dev/kmemがないとnetstatなどルーティング系ができませんでした。
なのでdevfsに追加をします。
こちらの参考ページをどうぞ。
FreeBSD 9.1-STABLEでVIMAGEなJailを構築する | funi2.jp

jailのルールセットの変更は、

#jail -m name=test01 devfs_ruleset=5

上記でルールセットを5に変更できます。

しかしqjailでjailを作成したあとにjailコマンドで変更しても、実際は/devが変わっていないうえにjailを再起動すると4に戻ってしまいます。
その場合はやはりqjailのソースコードを書き換えるしかありません。

echo "devfs_ruleset       =  \"4\";"

      ↓

echo "devfs_ruleset       =  \"5\";"

qjail のオプションあれこれ

qjail update -pでportsのアップデート。