SlideShare a Scribd company logo
1 of 27
Download to read offline
FreeBSD jail入門
自己紹介
 名前
 乃村 翼
 facebook
 Tsubasa Nomura で検索してください
 お仕事
 Windows Serverのサポート
 英語とMCPの勉強中。。。
サポート終了!
2
目次
1. FreeBSD jailとは
2. FreeBSD jailとは(もう少し詳しく)
3. FreeBSD jailの構築(基本編)
4. FreeBSD jailの構築(ezjail編)
5. FreeBSD jail Tips
6. 【番外編】Hyper-Vでの仮想環境構築Tips
3
FreeBSD jailとは
 コンテナ型仮想化のひとつ
 Linux界隈で盛り上がっているLXCと類似。
 各jailはホストマシン上で動く仮想機械であり、独自のファイ
ルシステムやプロセス空間、ユーザーアカウントを持つ。
(by Wikipedia:http://ja.wikipedia.org/wiki/FreeBSD_jail)
引用元:
http://ascii.jp/elem/000/000/419/419268/#eid419270
4
FreeBSD jailとは
 FreeBSD 4.0で登場
 2000年。LXCよりもだいぶ前!
 安定
5
FreeBSD jailとは(もう少し詳しく)
 ディレクトリツリー、プロセス、ネットワークスタックの分離
 jail 環境ではプロセスは指定されたルートディレクトリから外に出るこ
とは出来ません。
 似た機構に chroot がありますが、こちらはアクセス出来るファイルシ
ステムを限定するのみであり、 ユーザやネットワークはホスト環境と共
有します。
 プログラムのロジックによっては、プロセスは chroot されたディレク
トリの外にアクセスすることが出来てしまいます。
 ネットワークスタックも仮想化。
 FreeBSD 8.0からjail が Vimage 対応に。
 ホスト名
 jail では環境毎にホスト名を持つことが出来ます。
6
FreeBSD jailとは(もう少し詳しく)
 IP アドレス
 jail では構築時に IP アドレスが割り当てられます。複数のIPアドレスを割り
当てることも可能です。
 コマンド
 ファイルシステムが分離される為、もちろんコマンドパスは jail 毎に全く異
なります。ports シ ステムを使用した環境ではユーザ用コマンドは
/usr/local/bin に配置されますが、コマンドパスを 変えることが出来ます。
 root ユーザ
 Unix では root ユーザは特権ユーザとして全ての権限を持っています。jail
のゲスト環境でもroot ユーザは存在しますが、ホスト環境を破壊すること
が無いように、root ユーザであっても、一部の機能に制限事項があります。
7
動かしてみる
8
構成
vyatta
192.168.20.x/24
FreeBSD
Hyper-V
Jail
Jail
Jail
9
FreeBSD jailの構築(基本編)〜jail 作成〜
1. jailのディレクトリを作成し、
2. ユーザランドをビルドして、
3. 指定したディレクトリへインストール。
4. ユーザランドのアプリが使うことがある為、デバイスのマウ
ントもしておく。
 セキュリティリスクが上がる為注意する。
5. インターフェースにエイリアスIPアドレスを設定して、起動
# export JAIL_D=/opt/jails/container01
# mkdir -p $JAIL_D
# cd /usr/src/
# make -j 5 buildworld
# make installworld DESTDIR=$JAIL_D
# make distribution DESTDIR=$JAIL_D
# mount -t devfs devfs $JAIL_D/dev
# ifconfig hn0 alias 192.168.20.10
# jail /opt/jails/containers container01 192.168.20.10 /bin/sh /etc/rc
10
FreeBSD jailの構築(基本編)〜jail 起動と停止〜
1. jailの一覧を出力
2. jail IDを指定してシェルを実行
3. killall の jオプションでjail IDを指定
# jls
# jexec 22 tcsh
# killall -j 22
11
jail簡単ですね!でも。。。
 jailコマンドで作成すると・・・
 ディスクを無駄に使う。
 同じ設定・構成のjailを何個も作るのが面倒。
 バックアップやリカバリを簡単にしたい。
 そこで。。。
ezjail
12
FreeBSD jailの構築(ezjail編)〜jail 作成〜
1. jailのインストール先を設定ファイルに記述
2. ベースシステムをインストール
3. jailを作成する
# vi /usr/local/etc/ezjail.conf
ezjail_jaildir=/opt/ezjails
# ezjail-admin install
# ezjail-admin create -f example container02 192.168.20.10
 予めportsもしくはpkgでezjailをインストールする。
13
FreeBSD jailの構築(ezjail編)〜jail 起動と停止〜
1. ezjail-admin startで起動
2. ezjail-admin consoleでjailの中へ
# ezjail-admin start container02
# ezjail-admin console container02
1. ezjail-admin stopで停止
2. ezjai-admin delete で削除
※-wオプションでファイルの削除までします
# ezjail-admin stop container02
# ezjail-admin delete –w container02
14
FreeBSD jailの構築(ezjail編)〜さらに詳しく〜
 ezjail-admin install
 -m
manpageのインストール
 -s
FreeBSDソースのインストール
 -p
portsのインストール
 -r
リリースバージョンを指定してjail をインストールします。8.4-
RELEASE、9.2-RELEASE などが指定できます。
尚、jail 環境下でuname -r をした場合でも、ホスト環境のバー
ジョンが出力されます。ライブラリ、コマンドが指定されたバー
ジョンでインストールされます。
# ezjail-admin install -r 9.2-RELEASE
15
FreeBSD jailの構築(ezjail編)〜さらに詳しく〜
 ezjail-admin create
 -i
md デバイスを用い、img ファイルにjail のゲスト環境を構築し
ます。
 -c
他のファイルシステムを使用したjailを構築します。
以下コマンドでは、ZFS へjail のゲスト環境を構築します。
# ezjail-admin create -c zfs -s 300M container001 192.168.20.100
# ezjail-admin create -i -s 100M -f example C78 192.168.1.250
# ll /opt/jails/
total 102488
drwxr-xr-x 2 root wheel 512 Jul 26 01:50 C78
-rw-r--r-- 1 root wheel 104857600 Jul 26 01:50 C78.img
drwxr-xr-x 9 root wheel 512 Jul 26 00:59 basejail
drwxr-xr-x 3 root wheel 512 Jul 26 00:59 flavours
drwxr-xr-x 12 root wheel 512 Jul 26 00:59 newjail
16
FreeBSD jailの構築(ezjail編)〜さらに詳しく〜
 ezjail-admin console
 -f
停止状態のゲスト環境を起動した後に、ログインすることが出来
ます。
バグがありましたが、V3.2.3で直してもらいました!
https://erdgeist.org/gitweb/ezjail/
17
FreeBSD jailの構築(ezjail編)〜さらに詳しく〜
 ezjail-admin list
 jail 環境を一覧で出力します。
 STA の列にはjail のステータスが出力されています。それぞ
れのアルファベットは以下の状態を表します。
D ディレクトリベースで構築されたjail。
I md ファイルイメージベースで構築されたjail。
B bde デバイスで構築されたjail。
E eli デバイスで構築されたjail。
Z zfs デバイスで構築されたjail。
R 起動状態のjail。
A bde デバイス、eli デバイスにおいて、attach されているjail。
S 停止状態のjail。
N config オプションにより、disable 状態となっているjail。
18
FreeBSD jailの構築(ezjail編)〜さらに詳しく〜
 ezjail-admin config
 -r
run、norun により、disable/enable 状態を切り替えることが出
来ます。disable 状態となったjail は、start 時に起動しません。
複数のjail 環境が存在する場合に、特定のjail 環境を起動させたく
ない場合に使用します。
 -n
jail名の変更ができます。
 -c
CPU が複数個ある場合、jail を動作させるCPU を指定することが
出来ます。内部的にcpuset(1) を使用しています。
# ezjail-admin config -r norun C78
# ezjail-admin config -n after before
# ezjail-admin config -c 0 C80 19
FreeBSD jailの構築(ezjail編)〜さらに詳しく〜
 ezjail-admin delete
 jail のゲスト環境を削除します。
-w オプションにより、ファイルの削除を行いま
す。ZFS を使用していた場合はデータセットを削
除します。
# ezjail-admin delete -w C80
20
FreeBSD jailの構築(ezjail編)〜さらに詳しく〜
 ezjail-admin archive
 jail 環境のバックアップを作成します。
-a オプションで作成後のファイル名、-d オプションで作成先の
ディレクトリパスを指定します。
デフォルトではjail のルートディレクトリに、jail 名をファイル名
として作成されます。
また、-A オプションを使用することで全てのjail のバックアップ
を作成することが出来ます。
 ezjail-admin restore
 archive オプションによって作成したバックアップから復元しま
す。
# ezjail-admin restore C80
# ezjail-admin archive C80
21
FreeBSD jail Tips
 インストールしたら以下の初期設定をしておく。
 /etc/resolv.confの作成。
 /etc/hostsの追記。
 cronからadjkerntzのコメントアウト。
 タイムゾーンの設定。
22
FreeBSD jail Tips
 マウントポイントの設定
 jail のマウントポイントはホスト環境の/etc/fstab.<jail 名>に記
述されています。内容は、ホスト環境のfstab と同様です。
 dmesg の不可視化
 jail 環境でセキュアな環境を構築する場合、ハードウェアやカー
ネルログを出力するdmesg コマンドを実行できるのは好ましく
ないでしょう。sysctl により、抑止することが出来ます。
 以下をホスト環境のsysctl.conf に追記します。
※下記カーネルパラメータを設定するとホストのrootユーザ以外
はdmesgの内容を取得することができません。
# security.bsd.unprivileged_read_msgbuf=0
23
FreeBSD jail Tips
 pingを打てるようにする
 /usr/local/etc/ezjail/<コンテナ名> ファイルに下記を記述する
 ホストからパッケージ管理を行う
export jail_container001_parameters="allow.raw_sockets"
pkg –j コンテナ名 <info|install|delete|etc…>
24
【番外編】Hyper-Vでの仮想環境構築Tips
25
まとめ
 jailは簡単!
 ezjailを使うともっと簡単&便利!
 Dockerもいいけどjailも頑張ってます
26
ご清聴ありがとうございました。
27

More Related Content

What's hot

Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルMasahito Zembutsu
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較Akihiro Suda
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーションMasahito Zembutsu
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較beyond Co., Ltd.
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Kohei Tokunaga
 
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctlP2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctlKohei Tokunaga
 
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Masaki Yamamoto
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to DockerJian Wu
 
해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack SolutionNalee Jang
 
Intro to Docker November 2013
Intro to Docker November 2013Intro to Docker November 2013
Intro to Docker November 2013Docker, Inc.
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
DockerクイックツアーEtsuji Nakai
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能Kohei Tokunaga
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化dcubeio
 
Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Masanori Nara
 
Datadog による Container の監視について
Datadog による Container の監視についてDatadog による Container の監視について
Datadog による Container の監視についてMasaya Aoyama
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Emma Haruka Iwao
 
Cephのベンチマークをしました
CephのベンチマークをしましたCephのベンチマークをしました
CephのベンチマークをしましたOSSラボ株式会社
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Masahito Zembutsu
 

What's hot (20)

Dockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクルDockerイメージの理解とコンテナのライフサイクル
Dockerイメージの理解とコンテナのライフサイクル
 
DockerとPodmanの比較
DockerとPodmanの比較DockerとPodmanの比較
DockerとPodmanの比較
 
分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション分散環境におけるDocker とオーケストレーション
分散環境におけるDocker とオーケストレーション
 
AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較AlmaLinux と Rocky Linux の誕生経緯&比較
AlmaLinux と Rocky Linux の誕生経緯&比較
 
Dockerからcontainerdへの移行
Dockerからcontainerdへの移行Dockerからcontainerdへの移行
Dockerからcontainerdへの移行
 
P2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctlP2P Container Image Distribution on IPFS With containerd and nerdctl
P2P Container Image Distribution on IPFS With containerd and nerdctl
 
Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話Jenkins x Kubernetesが簡単だと思ったら大変だった話
Jenkins x Kubernetesが簡単だと思ったら大変だった話
 
Jenkins 再入門
Jenkins 再入門Jenkins 再入門
Jenkins 再入門
 
Introduction to Docker
Introduction  to DockerIntroduction  to Docker
Introduction to Docker
 
해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution해외 사례로 보는 Billing for OpenStack Solution
해외 사례로 보는 Billing for OpenStack Solution
 
Intro to Docker November 2013
Intro to Docker November 2013Intro to Docker November 2013
Intro to Docker November 2013
 
Dockerクイックツアー
DockerクイックツアーDockerクイックツアー
Dockerクイックツアー
 
containerdの概要と最近の機能
containerdの概要と最近の機能containerdの概要と最近の機能
containerdの概要と最近の機能
 
Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化Ansibleで始めるインフラ構築自動化
Ansibleで始めるインフラ構築自動化
 
Harbor RegistryのReplication機能
Harbor RegistryのReplication機能Harbor RegistryのReplication機能
Harbor RegistryのReplication機能
 
Datadog による Container の監視について
Datadog による Container の監視についてDatadog による Container の監視について
Datadog による Container の監視について
 
Ceph アーキテクチャ概説
Ceph アーキテクチャ概説Ceph アーキテクチャ概説
Ceph アーキテクチャ概説
 
Cephのベンチマークをしました
CephのベンチマークをしましたCephのベンチマークをしました
Cephのベンチマークをしました
 
Docker Compose 徹底解説
Docker Compose 徹底解説Docker Compose 徹底解説
Docker Compose 徹底解説
 
Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編Dockerfile を書くためのベストプラクティス解説編
Dockerfile を書くためのベストプラクティス解説編
 

Viewers also liked

Webinar - Como aumentar a audiência usando Redes Sociais - Projeto Editorial ...
Webinar - Como aumentar a audiência usando Redes Sociais - Projeto Editorial ...Webinar - Como aumentar a audiência usando Redes Sociais - Projeto Editorial ...
Webinar - Como aumentar a audiência usando Redes Sociais - Projeto Editorial ...Edney Souza
 
コンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのかコンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのかえむ ばーど
 
BHyVe: The BSD Hypervisor
BHyVe: The BSD HypervisorBHyVe: The BSD Hypervisor
BHyVe: The BSD HypervisorTakuya ASADA
 
【Kof2014】Jail-deploy, 若しくはjailhub, あるいは Jail as a Service
【Kof2014】Jail-deploy, 若しくはjailhub,あるいは Jail as a Service【Kof2014】Jail-deploy, 若しくはjailhub,あるいは Jail as a Service
【Kof2014】Jail-deploy, 若しくはjailhub, あるいは Jail as a Servicekunst1080
 
Amandaを利用した仮想マシンバックアップ
Amandaを利用した仮想マシンバックアップAmandaを利用した仮想マシンバックアップ
Amandaを利用した仮想マシンバックアップVirtualTech Japan Inc.
 
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...Insight Technology, Inc.
 
Hyperでエキサイティングなシェル芸ライフ
Hyperでエキサイティングなシェル芸ライフHyperでエキサイティングなシェル芸ライフ
Hyperでエキサイティングなシェル芸ライフkunst1080
 
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)Masahiro Tsuji
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話Masaru Oki
 
Bhyve code reading
Bhyve code readingBhyve code reading
Bhyve code readingTakuya ASADA
 
BHyVeってなんや
BHyVeってなんやBHyVeってなんや
BHyVeってなんやTakuya ASADA
 
Zag brand strategy
Zag   brand strategyZag   brand strategy
Zag brand strategyjohnecooper
 

Viewers also liked (13)

Webinar - Como aumentar a audiência usando Redes Sociais - Projeto Editorial ...
Webinar - Como aumentar a audiência usando Redes Sociais - Projeto Editorial ...Webinar - Como aumentar a audiência usando Redes Sociais - Projeto Editorial ...
Webinar - Como aumentar a audiência usando Redes Sociais - Projeto Editorial ...
 
コンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのかコンテナ型仮想化とはなんだったのか
コンテナ型仮想化とはなんだったのか
 
BHyVe: The BSD Hypervisor
BHyVe: The BSD HypervisorBHyVe: The BSD Hypervisor
BHyVe: The BSD Hypervisor
 
【Kof2014】Jail-deploy, 若しくはjailhub, あるいは Jail as a Service
【Kof2014】Jail-deploy, 若しくはjailhub,あるいは Jail as a Service【Kof2014】Jail-deploy, 若しくはjailhub,あるいは Jail as a Service
【Kof2014】Jail-deploy, 若しくはjailhub, あるいは Jail as a Service
 
Amandaを利用した仮想マシンバックアップ
Amandaを利用した仮想マシンバックアップAmandaを利用した仮想マシンバックアップ
Amandaを利用した仮想マシンバックアップ
 
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
[db tech showcase Tokyo 2016] D32: SPARCサーバ + Pure Storage DB仮想化のすべらない話 〜 Exa...
 
Hyperでエキサイティングなシェル芸ライフ
Hyperでエキサイティングなシェル芸ライフHyperでエキサイティングなシェル芸ライフ
Hyperでエキサイティングなシェル芸ライフ
 
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
Sheepdogを使ってみて分かったこと(第六回ストレージ研究会発表資料)
 
FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話FreeBSD jail+vnetと戯れた話
FreeBSD jail+vnetと戯れた話
 
Bhyve code reading
Bhyve code readingBhyve code reading
Bhyve code reading
 
Bhyve Internals
Bhyve InternalsBhyve Internals
Bhyve Internals
 
BHyVeってなんや
BHyVeってなんやBHyVeってなんや
BHyVeってなんや
 
Zag brand strategy
Zag   brand strategyZag   brand strategy
Zag brand strategy
 

Similar to Free bsd jail入門

XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)tokuhy
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jAkira Yoshiyama
 
ZFS on Linux @ZFS Day 2011.10
ZFS on Linux @ZFS Day 2011.10ZFS on Linux @ZFS Day 2011.10
ZFS on Linux @ZFS Day 2011.10Kazuhisa Hara
 
Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presenKouhei Maeda
 
osoljp201105_ZFSjiman_nslope
osoljp201105_ZFSjiman_nslopeosoljp201105_ZFSjiman_nslope
osoljp201105_ZFSjiman_nslopeNoriyasu Sakaue
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0Etsuji Nakai
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成Izumi Tsutsui
 
2021 10-12.linx device-tree
2021 10-12.linx device-tree2021 10-12.linx device-tree
2021 10-12.linx device-treeShin-ya Koga
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 
Raspberry pi で始める v sphere 7 超入門
Raspberry pi で始める v sphere 7 超入門Raspberry pi で始める v sphere 7 超入門
Raspberry pi で始める v sphere 7 超入門Satoshi Imai
 
Solaris11 osc tokyo2011_fall
Solaris11 osc tokyo2011_fallSolaris11 osc tokyo2011_fall
Solaris11 osc tokyo2011_fall悟 宮崎
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西Masahide Yamamoto
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門VirtualTech Japan Inc.
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾外道 父
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1Etsuji Nakai
 
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000Tetsurou Yano
 
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)Satoshi Shimazaki
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1Kotaro Noyama
 

Similar to Free bsd jail入門 (20)

XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
 
Open VZ
Open VZOpen VZ
Open VZ
 
Osc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 jOsc201703 tokyo-clonezilla-v1.2 j
Osc201703 tokyo-clonezilla-v1.2 j
 
ZFS on Linux @ZFS Day 2011.10
ZFS on Linux @ZFS Day 2011.10ZFS on Linux @ZFS Day 2011.10
ZFS on Linux @ZFS Day 2011.10
 
Lxc cf201207-presen
Lxc cf201207-presenLxc cf201207-presen
Lxc cf201207-presen
 
osoljp201105_ZFSjiman_nslope
osoljp201105_ZFSjiman_nslopeosoljp201105_ZFSjiman_nslope
osoljp201105_ZFSjiman_nslope
 
IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0IaaSクラウドを支える基礎技術 演習編_v1_0
IaaSクラウドを支える基礎技術 演習編_v1_0
 
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
NetBSDのクロスビルドのしくみとインストール済みLive Imageの作成
 
2021 10-12.linx device-tree
2021 10-12.linx device-tree2021 10-12.linx device-tree
2021 10-12.linx device-tree
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 
Raspberry pi で始める v sphere 7 超入門
Raspberry pi で始める v sphere 7 超入門Raspberry pi で始める v sphere 7 超入門
Raspberry pi で始める v sphere 7 超入門
 
Solaris11 osc tokyo2011_fall
Solaris11 osc tokyo2011_fallSolaris11 osc tokyo2011_fall
Solaris11 osc tokyo2011_fall
 
第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西第一回コンテナ情報交換会@関西
第一回コンテナ情報交換会@関西
 
FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!FreeBSD 12.0 RELEASE!
FreeBSD 12.0 RELEASE!
 
OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門OpenStackで始めるクラウド環境構築入門
OpenStackで始めるクラウド環境構築入門
 
OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾OpenStackでつくる開発環境と外道塾
OpenStackでつくる開発環境と外道塾
 
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
OpenStackクラウド基盤構築ハンズオンセミナー 第1日:ハンズオンNo1
 
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
ownCloud 負荷測定検証レポート FUJITSU Storage ETERNUS CD10000
 
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
OSC 2011 Tokyo/Fall 自宅SAN友の会 (Infinibandお試し編)
 
CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1CloudFoundry 2 on Apache CloudStack 4.2.1
CloudFoundry 2 on Apache CloudStack 4.2.1
 

Free bsd jail入門

  • 2. 自己紹介  名前  乃村 翼  facebook  Tsubasa Nomura で検索してください  お仕事  Windows Serverのサポート  英語とMCPの勉強中。。。 サポート終了! 2
  • 3. 目次 1. FreeBSD jailとは 2. FreeBSD jailとは(もう少し詳しく) 3. FreeBSD jailの構築(基本編) 4. FreeBSD jailの構築(ezjail編) 5. FreeBSD jail Tips 6. 【番外編】Hyper-Vでの仮想環境構築Tips 3
  • 4. FreeBSD jailとは  コンテナ型仮想化のひとつ  Linux界隈で盛り上がっているLXCと類似。  各jailはホストマシン上で動く仮想機械であり、独自のファイ ルシステムやプロセス空間、ユーザーアカウントを持つ。 (by Wikipedia:http://ja.wikipedia.org/wiki/FreeBSD_jail) 引用元: http://ascii.jp/elem/000/000/419/419268/#eid419270 4
  • 5. FreeBSD jailとは  FreeBSD 4.0で登場  2000年。LXCよりもだいぶ前!  安定 5
  • 6. FreeBSD jailとは(もう少し詳しく)  ディレクトリツリー、プロセス、ネットワークスタックの分離  jail 環境ではプロセスは指定されたルートディレクトリから外に出るこ とは出来ません。  似た機構に chroot がありますが、こちらはアクセス出来るファイルシ ステムを限定するのみであり、 ユーザやネットワークはホスト環境と共 有します。  プログラムのロジックによっては、プロセスは chroot されたディレク トリの外にアクセスすることが出来てしまいます。  ネットワークスタックも仮想化。  FreeBSD 8.0からjail が Vimage 対応に。  ホスト名  jail では環境毎にホスト名を持つことが出来ます。 6
  • 7. FreeBSD jailとは(もう少し詳しく)  IP アドレス  jail では構築時に IP アドレスが割り当てられます。複数のIPアドレスを割り 当てることも可能です。  コマンド  ファイルシステムが分離される為、もちろんコマンドパスは jail 毎に全く異 なります。ports シ ステムを使用した環境ではユーザ用コマンドは /usr/local/bin に配置されますが、コマンドパスを 変えることが出来ます。  root ユーザ  Unix では root ユーザは特権ユーザとして全ての権限を持っています。jail のゲスト環境でもroot ユーザは存在しますが、ホスト環境を破壊すること が無いように、root ユーザであっても、一部の機能に制限事項があります。 7
  • 10. FreeBSD jailの構築(基本編)〜jail 作成〜 1. jailのディレクトリを作成し、 2. ユーザランドをビルドして、 3. 指定したディレクトリへインストール。 4. ユーザランドのアプリが使うことがある為、デバイスのマウ ントもしておく。  セキュリティリスクが上がる為注意する。 5. インターフェースにエイリアスIPアドレスを設定して、起動 # export JAIL_D=/opt/jails/container01 # mkdir -p $JAIL_D # cd /usr/src/ # make -j 5 buildworld # make installworld DESTDIR=$JAIL_D # make distribution DESTDIR=$JAIL_D # mount -t devfs devfs $JAIL_D/dev # ifconfig hn0 alias 192.168.20.10 # jail /opt/jails/containers container01 192.168.20.10 /bin/sh /etc/rc 10
  • 11. FreeBSD jailの構築(基本編)〜jail 起動と停止〜 1. jailの一覧を出力 2. jail IDを指定してシェルを実行 3. killall の jオプションでjail IDを指定 # jls # jexec 22 tcsh # killall -j 22 11
  • 12. jail簡単ですね!でも。。。  jailコマンドで作成すると・・・  ディスクを無駄に使う。  同じ設定・構成のjailを何個も作るのが面倒。  バックアップやリカバリを簡単にしたい。  そこで。。。 ezjail 12
  • 13. FreeBSD jailの構築(ezjail編)〜jail 作成〜 1. jailのインストール先を設定ファイルに記述 2. ベースシステムをインストール 3. jailを作成する # vi /usr/local/etc/ezjail.conf ezjail_jaildir=/opt/ezjails # ezjail-admin install # ezjail-admin create -f example container02 192.168.20.10  予めportsもしくはpkgでezjailをインストールする。 13
  • 14. FreeBSD jailの構築(ezjail編)〜jail 起動と停止〜 1. ezjail-admin startで起動 2. ezjail-admin consoleでjailの中へ # ezjail-admin start container02 # ezjail-admin console container02 1. ezjail-admin stopで停止 2. ezjai-admin delete で削除 ※-wオプションでファイルの削除までします # ezjail-admin stop container02 # ezjail-admin delete –w container02 14
  • 15. FreeBSD jailの構築(ezjail編)〜さらに詳しく〜  ezjail-admin install  -m manpageのインストール  -s FreeBSDソースのインストール  -p portsのインストール  -r リリースバージョンを指定してjail をインストールします。8.4- RELEASE、9.2-RELEASE などが指定できます。 尚、jail 環境下でuname -r をした場合でも、ホスト環境のバー ジョンが出力されます。ライブラリ、コマンドが指定されたバー ジョンでインストールされます。 # ezjail-admin install -r 9.2-RELEASE 15
  • 16. FreeBSD jailの構築(ezjail編)〜さらに詳しく〜  ezjail-admin create  -i md デバイスを用い、img ファイルにjail のゲスト環境を構築し ます。  -c 他のファイルシステムを使用したjailを構築します。 以下コマンドでは、ZFS へjail のゲスト環境を構築します。 # ezjail-admin create -c zfs -s 300M container001 192.168.20.100 # ezjail-admin create -i -s 100M -f example C78 192.168.1.250 # ll /opt/jails/ total 102488 drwxr-xr-x 2 root wheel 512 Jul 26 01:50 C78 -rw-r--r-- 1 root wheel 104857600 Jul 26 01:50 C78.img drwxr-xr-x 9 root wheel 512 Jul 26 00:59 basejail drwxr-xr-x 3 root wheel 512 Jul 26 00:59 flavours drwxr-xr-x 12 root wheel 512 Jul 26 00:59 newjail 16
  • 17. FreeBSD jailの構築(ezjail編)〜さらに詳しく〜  ezjail-admin console  -f 停止状態のゲスト環境を起動した後に、ログインすることが出来 ます。 バグがありましたが、V3.2.3で直してもらいました! https://erdgeist.org/gitweb/ezjail/ 17
  • 18. FreeBSD jailの構築(ezjail編)〜さらに詳しく〜  ezjail-admin list  jail 環境を一覧で出力します。  STA の列にはjail のステータスが出力されています。それぞ れのアルファベットは以下の状態を表します。 D ディレクトリベースで構築されたjail。 I md ファイルイメージベースで構築されたjail。 B bde デバイスで構築されたjail。 E eli デバイスで構築されたjail。 Z zfs デバイスで構築されたjail。 R 起動状態のjail。 A bde デバイス、eli デバイスにおいて、attach されているjail。 S 停止状態のjail。 N config オプションにより、disable 状態となっているjail。 18
  • 19. FreeBSD jailの構築(ezjail編)〜さらに詳しく〜  ezjail-admin config  -r run、norun により、disable/enable 状態を切り替えることが出 来ます。disable 状態となったjail は、start 時に起動しません。 複数のjail 環境が存在する場合に、特定のjail 環境を起動させたく ない場合に使用します。  -n jail名の変更ができます。  -c CPU が複数個ある場合、jail を動作させるCPU を指定することが 出来ます。内部的にcpuset(1) を使用しています。 # ezjail-admin config -r norun C78 # ezjail-admin config -n after before # ezjail-admin config -c 0 C80 19
  • 20. FreeBSD jailの構築(ezjail編)〜さらに詳しく〜  ezjail-admin delete  jail のゲスト環境を削除します。 -w オプションにより、ファイルの削除を行いま す。ZFS を使用していた場合はデータセットを削 除します。 # ezjail-admin delete -w C80 20
  • 21. FreeBSD jailの構築(ezjail編)〜さらに詳しく〜  ezjail-admin archive  jail 環境のバックアップを作成します。 -a オプションで作成後のファイル名、-d オプションで作成先の ディレクトリパスを指定します。 デフォルトではjail のルートディレクトリに、jail 名をファイル名 として作成されます。 また、-A オプションを使用することで全てのjail のバックアップ を作成することが出来ます。  ezjail-admin restore  archive オプションによって作成したバックアップから復元しま す。 # ezjail-admin restore C80 # ezjail-admin archive C80 21
  • 22. FreeBSD jail Tips  インストールしたら以下の初期設定をしておく。  /etc/resolv.confの作成。  /etc/hostsの追記。  cronからadjkerntzのコメントアウト。  タイムゾーンの設定。 22
  • 23. FreeBSD jail Tips  マウントポイントの設定  jail のマウントポイントはホスト環境の/etc/fstab.<jail 名>に記 述されています。内容は、ホスト環境のfstab と同様です。  dmesg の不可視化  jail 環境でセキュアな環境を構築する場合、ハードウェアやカー ネルログを出力するdmesg コマンドを実行できるのは好ましく ないでしょう。sysctl により、抑止することが出来ます。  以下をホスト環境のsysctl.conf に追記します。 ※下記カーネルパラメータを設定するとホストのrootユーザ以外 はdmesgの内容を取得することができません。 # security.bsd.unprivileged_read_msgbuf=0 23
  • 24. FreeBSD jail Tips  pingを打てるようにする  /usr/local/etc/ezjail/<コンテナ名> ファイルに下記を記述する  ホストからパッケージ管理を行う export jail_container001_parameters="allow.raw_sockets" pkg –j コンテナ名 <info|install|delete|etc…> 24