FreeBSD12.0からデフォルトで有効化されたVIMAGEを使ってjailを構築してみます
qjailはVIMAGEに対応済みなのでqjailを使ってみます
qjail: http://qjail.sourceforge.net/
Qjail Vnet Howto の手順通りに行います
環境
FreeBSDのバージョン: 12.0 Release
qjailのバージョン: 5.4
デフォルトゲートウェイ: 192.168.141.2
IPアドレス: 192.168.141.167/24
※VMware Fusion上のFreeBSD12.0でネットワークアダプタの設定は "Macを共有" にしています
qjailをインストール
# pkg install -y qjail
jail環境用のファイルをダウンロード
デフォルトでftp2.freebsd.orgが使われていますが"404 - Not Found"になったので
ダウンロード先をftp3.freebsd.orgに変更して実行します
# qjail install -h ftp3.freebsd.org
resolving server address: ftp3.freebsd.org:80
requesting http://ftp3.freebsd.org/pub/FreeBSD/releases/amd64/amd64/12.0-RELEASE/base.txz
remote size / mtime: 154325028 / 1544159064
base.txz 2% of 147 MB 706 kBps 03m13s
jailを作成
jailを1つ作成します。IPアドレスは192.168.141.168、名前はv10にします
# qjail create -4 192.168.141.168 v10
Successfully created v10
VIMAGE用の設定
作成したv10にVIMAGE用の設定を行います
# qjail config -w em0 -v none v10
Successfully enabled vnet.interface for v10
Successfully enabled vnet for v10
v10の設定ファイルは/usr/local/etc/qjail.config/v10に作成されます。中身はこんな感じです
# cat /usr/local/etc/qjail.config/v10
v10 {
host.hostname = "v10";
path = "/usr/jails/v10";
mount.fstab = "/usr/local/etc/qjail.fstab/v10";
exec.consolelog = "/var/log/qjail.v10.console.log";
mount.devfs;
devfs_ruleset = "4";
vnet = "new";
vnet.interface = "epair9b";
exec.start = "ifconfig epair9b 192.168.141.168";
exec.start += "route add default 192.168.141.2";
exec.start += "/bin/echo "epair9b" > /etc/epair";
exec.start += "/bin/sh /etc/rc";
exec.stop = "/bin/sh /etc/rc.shutdown";
}
v10を起動する
# qjail start v10
Jail successfully started v10
NICの設定を確認
bridge10とepair9aが追加されています
# ifconfig -a
em0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=810099<RXCSUM,VLAN_MTU,VLAN_HWTAGGING,VLAN_HWCSUM,VLAN_HWFILTER>
ether 00:0c:29:88:52:6c
inet 192.168.141.167 netmask 0xffffff00 broadcast 192.168.141.255
media: Ethernet autoselect (1000baseT <full-duplex>)
status: active
nd6 options=29<PERFORMNUD,IFDISABLED,AUTO_LINKLOCAL>
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x2
inet 127.0.0.1 netmask 0xff000000
groups: lo
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
bridge10: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
ether 02:ce:e4:af:bf:0a
id 00:00:00:00:00:00 priority 32768 hellotime 2 fwddelay 15
maxage 20 holdcnt 6 proto rstp maxaddr 2000 timeout 1200
root id 00:00:00:00:00:00 priority 32768 ifcost 0 port 0
member: epair9a flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 4 priority 128 path cost 2000
member: em0 flags=143<LEARNING,DISCOVER,AUTOEDGE,AUTOPTP>
ifmaxaddr 0 port 1 priority 128 path cost 20000
groups: bridge
nd6 options=1<PERFORMNUD>
epair9a: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 02:b4:a7:8e:98:0a
inet6 fe80::b4:a7ff:fe8e:980a%epair9a prefixlen 64 scopeid 0x4
groups: epair
media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
status: active
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
jail(v10)にログイン&NIC設定確認&接続確認
NICの設定はこんな感じになります
インターネットとの接続も確認できました
# qjail console v10
FreeBSD 12.0-RELEASE r341666 GENERIC
Welcome to your FreeBSD jail.
v10 /root >ifconfig
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> metric 0 mtu 16384
options=680003<RXCSUM,TXCSUM,LINKSTATE,RXCSUM_IPV6,TXCSUM_IPV6>
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x1
inet 127.0.0.1 netmask 0xff000000
groups: lo
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
epair9b: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> metric 0 mtu 1500
options=8<VLAN_MTU>
ether 02:b4:a7:8e:98:0b
inet 192.168.141.168 netmask 0xffffff00 broadcast 192.168.141.255
inet6 fe80::b4:a7ff:fe8e:980b%epair9b prefixlen 64 scopeid 0x2
groups: epair
media: Ethernet 10Gbase-T (10Gbase-T <full-duplex>)
status: active
nd6 options=21<PERFORMNUD,AUTO_LINKLOCAL>
v10 /root >ping -c 2 8.8.8.8
PING 8.8.8.8 (8.8.8.8): 56 data bytes
64 bytes from 8.8.8.8: icmp_seq=0 ttl=128 time=8.688 ms
64 bytes from 8.8.8.8: icmp_seq=1 ttl=128 time=7.727 ms
--- 8.8.8.8 ping statistics ---
2 packets transmitted, 2 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 7.727/8.207/8.688/0.481 ms
トラブルシューティング
今回の環境ではトラブルは発生しませんでしたが、環境などによって発生するかもしれないので
下記のページの"Trouble shooting network problems."を参照すると解決するかもしれません
http://qjail.sourceforge.net/qjail-vnet-howto.html