OpenStack環境で、 FreeBSD Jail + VIMAGE を使った 疑似インターネット実験環境の構築

Similar documents
sato-FBSDW key

n PSMT(Perfectly Secure Message Transmission) PSMT

XEN 仮想マシンの移植 Islandcenter.jp 2009/04/14 既に作成済みの XEN 仮想マシンを移植する方法を説明します 仮想マシンイメージは 通常 /var/lib/xen/image/myvmachine に作成されていますが このファイルを tar 圧縮してリムーバブルメデ

2012/6/8 (c) Hiroki Sato 2 / 70

東京エリアDebian勉強会 debootstrapを有効活用してみよう

Microsoft PowerPoint - InfPro_I6.pptx

Microsoft Word - AFT_3TB_HDD_install_guide doc

TFTP serverの実装

PowerPoint プレゼンテーション

Microsoft Word - VPN...[.U.K.C.hLinux doc

2-3- 基 Linux のシステム管理に関する知識 1 独立行政法人情報処理推進機構

第一章 LPC2478 ボードの概要...3 第二章 uclinux の初体験 SD カードのテスト USB メモリのテスト USB Devices のテスト network のテスト...6 第三章 uclinux のコンパイル...

スライド 1

スライド 1

Microsoft Word - amp_setup.doc

吉田坂本.pptx

ゴール インターネットの動作原理を理解する インターネットは様々な技術が連携して動作する 家族に聞かれて説明できるように主要技術を理解する

PowerPoint プレゼンテーション

第 3 回情報基礎演習 UNIX / Linux: ファイルシステム シェルを理解しよう! 谷口貴志 Panda に login し 情報基礎演習クラスの VDI から Ubuntu に接続し Linux に login した後, 左 上の Activity 端末のアイオン をクリック 端末 を立ち

スライド 1

ict2-.key

OpenStack運用実践によるエンタープライズ適用に向けた課題と今後について~ベアメタルサービスの現状とDesign Summitでの討議状況~

MINI2440マニュアル

KTest

tcp/ip.key

t20s3-fn09.pdf

GettingStarted.fm

VLAN.dvi

Microsoft Word - K5VSSP32-install.docx

4 自己登録 の画面が表示されたら 送信 をクリックします 5 アクションが完了しました : 成功 が表示されたら 画面を下にスクロールし 画面右下隅の OK をクリックします 6Windows 用または Mac 用のキャンパスクラウドエージェントをクリックしてダウ ンロードしてください 8 ダウン

IPIP(Si-RG)

2014/07/18 1

VNX ファイル ストレージの管理

PowerPoint Presentation

PowerPoint プレゼンテーション

IP 2.2 (IP ) IP 2.3 DNS IP IP DNS DNS 3 (PC) PC PC PC Linux(ubuntu) PC TA 2

スライド 1

2

ファイル メニューのコマンド

CD 起動可能な Linux KNOPPIX について 産業技術総合研究所 情報技術研究部門須崎有康

Microsoft Word - ManagerIPChange.doc

WiFiの現状

SCore と escience の install と 設定について 理化学研究所 亀山豊久

i.lon600 をリピータとして使うことができます 元になるネットワークは の 1 本の線で構成 を分割しリピータ設定済み ilon600 を挿入 利点 LonWorksデバイスのサブネット デバイスアドレスはそのままで良い IP 媒体により遠隔接続が可能 セルフインストールなネットワークでもOK

Microsoft PowerPoint - Android+TPMによるセキュアブート_KDDI研_後日配布用

勉強会基本情報

MINI2440マニュアル

PowerPoint プレゼンテーション

付録

LinuxCD操作ガイド コピー

PowerPoint プレゼンテーション

IPIP(Si-RGX)

System Console Software ユーザーズガイド

ICND2-Road to ICND2- 前提知識 ICND 2では CCEN Tレベルの知識がある方 (ICND 1 試験の合格レベル ) を対象とし それ同等 の知識が必要になってきます 研修に参加されるまでに以下の項目を復習しておくことを お勧めします IP アドレスとサブネットマスク ホスト

MC3000一般ユーザ利用手順書

実習 :VLAN 間ルーティングのトラブルシューティング トポロジ 2014 Cisco and/or its affiliates. All rights reserved. This document is Cisco Public. 1 / 8 ページ

ServerView RAID Manager VMware vSphere ESXi 5 インストールガイド

VG シリーズ用ローカルファームアップ / 自動ファームウェア更新設定手順書 VG400aⅡ ローカルファームアップ / 自動ファームウェア更新設定手順書

2011 NTT Information Sharing Platform Laboratories

アライドテレシス ディストリビューションスイッチ x610シリーズで実現するVRF-Lite + Tagging + EPSR for x610

untitled

2. 生田仮想デスクトップ PC の接続方法 生田仮想デスクトップ PC に接続する方法は 次の 2 通りです 1. HTML アクセス Internet Explorer や Safari などのブラウザを用います PC に特別なソフトウェアをインストールす る必要が無いので 管理者権限をもってい

Crashinfo ファイルからの情報の取得

mpd の音楽再生用データを別のディスク /NAS にしたい ( ローカルディスク編 ) 簡単におおまかな手順を上級者のメモとして書いておきます 事前に確認しておくべき事項は以下です 追加接続するディスクの接続方法 (S-ATA/e-SATA/USB etc.) 追加接続するディスクのパーティション

Microsoft Word - nvsi_090203_r1_sanboot_vaultdr.doc

情報通信の基礎

ServerView RAID Manager VMware vSphere ESXi 6 インストールガイド

BSD Unix IPv6 WIDE Project / ( ) All rights reserved. Copyright(c)2006 WIDE Project 1

第5回 マインクラフト・プログラミング入門

HGWとかアダプタとか

第133回東京エリアDebian勉強会   Debian GNU/kFreeBSD セットアップガイド 2015年版

FUJITSU Software Systemwalker Centric Manager Lite Edition V13.5 機能紹介資料

はじめに 1. 概要本書では SuitePRO V3 にて提供している迷惑メールフィルタのバージョンアップ手順について案内しています なお この手順につきましては 迷惑メールフィルタ機能について オンラインマニュアルの内容通りに設定されていることを前提条件とします

スライド 1

p_network-management_old-access_ras_faq_radius2.xlsx

ネットワーク工学演習 解答編 典型的な IP アドレス問題と解答を示す 解き方をよく覚えるように N 科 ある PC がある ネットワークの設定をみると IP アドレスが であり サブネットマスクは である 下記について解答せよ [1]

XAMPP で CMS のお手軽 テスト環境を手に入れよう 2011/5/21 上村崇 1

下位互換サポートの注意点 下位互換サポートにはいくつか注意点があります 1. 全体的な注意点 と 利用する各製品の注意点 最後に 7. そのほかの注意点 をすべて確認してください 1. 全体的な注意点 ライセンスキーの登録 ( 重要 ) 利用中の環境で Arcserve Backup の上書きインス

r10s4-fn03.pdf

Microsoft Word - nvsi_090196_r1_vaultdr_offline_rhel_dualpath.doc

2. 生田仮想デスクトップ PC の接続方法 生田仮想デスクトップ PC に接続する方法は 次の 2 通りです 1. HTML アクセス Internet Explorer や Safari などのブラウザを用います PC に特別なソフトウェアをインストールす る必要が無いので 管理者権限をもってい

UT-VPN ブリッジ構築手順 2013/03/24 Ver1.1 大阪キャプショナーズ米田

Windows10の標準機能だけでデータを完全バックアップする方法 | 【ぱそちき】パソコン初心者に教えたい仕事に役立つPC知識

アライドテレシス・コアスイッチ AT-x900 シリーズ で実現するエンタープライズ・VRRPネットワーク

これを調べるには pwd というコマンドを使います pwd とは print working directory の頭文 字をとったもので これから意味は明らかですよね 演習 1 (a) pwd を実行した結果を書け なお 立ち上げた直後の作業用ディレクトリのことをホー ムディレクトリ もしくは単に

rndc BIND

ServerView RAID Manager VMware vSphere ESXi 5 インストールガイド

PowerPoint Presentation

オープンソース・ソリューション・テクノロジ株式会社 会社紹介

スライド 1

UNIX とは? 1969 年 米国のベル研究所で開発されたオペレーティングシステム特徴 文字ベースの対話型 OS マルチユーザ 複数のユーザが同時に利用できる マルチタスク マルチプロセス 複数の処理を平行して行える タイムシェアリング 一定の時間に区切って処理を行う 複数の処理を平行しているよう

学生実験

FlashAir TM Tutorial FlashAir のチュートリアル FlashAir でライブ配信 1 用意するもの HLS FlashAir からのブート 環境設定作業 動作確認... 8 FlashAir Developers

SVN UUID の不一致と SVN のデータ同期

GenieATM 6300-T / 6200-T シリーズ 1. 基本的な機器オペレーションのために 1-1. 機器への接続 機器への接続方法は 以下の 2 通りがあります シリアルポートを使用してログインする LAN 経由で Telnet または SSH を使用して仮想 Interface からロ

2 サーバ用 PC 設定(Windows) 2.1 Node.js インストール を開き Node.js をインストールします バージョン LTS での動作を確認しています このバージョンであれば イン ストーラ node-v

エンドユーザーコンピューティングⅠ

Mobile IPの概要

情報処理概論(第二日目)

Transcription:

OpenStack 環境で FreeBSD Jail + VIMAGE を使った 疑似インターネット実験環境の構築 株式会社インターネットイニシアティブ 山本茂 shigeru@iij.ad.jp 1

自己紹介 FreeBSD は 2.1.5 から BSD 自体は大学で 4.3BSD にふれたのが最初 基本的に current しか使っていない もちろん業務用 PC も current よって release 版のことはよくわからない Linux はよくわからない 必要迫られると man と google で調べてなんとかする 今は FreeBSD/RaspberryPi で遊んでます http://freebsd-current.os-hackers.jp/pub/freebsd/ @BsdHacker 2

概要 FreBSD の Jail と VIMAGE の紹介 Jail の概要 Jail の遊び方 OpenStack 環境で疑似インターネット環境を作って実験してみた なぜ軽量仮想化を使ったのか OpenStack で使ってわかった Tips 3

FREBSD の JAIL と VIMAGE の紹介 4

FreeBSD の Jail(1) chroot(8) の発展系 root directory を変更する ファイルシステムに対するアクセスを制限できる プロセスの実行環境を分離 プロセスの実行を Jail の中だけに制限できる Jail で実行中のプロセスは Jail 外のプロセスに対して影響を与えられない Linux emulator 機能を利用すると linux 環境を作ることができる ただし 現在対応しているのは 32bit 環境のみ 5

FreeBSD の Jail(2) Jail 1 Jail 2 p0 p1 p2 p3 Jail 外ではすべてのプロセスが見える jail 1 では p1 だけが見える Jail 2 では p2 だけが見える 6

VIMAGE(1) Jail 毎に異なるネットワークスタックを作成できるようにするための拡張 FreeBSD 9.0 Release から普通に使える ただし kernel の re-compile は必要 オプションを付けずにコンパイルしたものは使えない 混ぜるな危険 まだ対応できていないライバ / スタックもある ネットワークインタフェースを自由に Jail に配置できる Jail に配置されたネットワークは Jail 専用になる 7

VIMAGE(2) Jail 1 Jail 2 p0 p1 p2 p3 em0 em1 em2 em3 Jail 外では em0 と em3 が見える Jail 1 では em1 だけが見える Jail 2 では em2 だけが見える 8

chroot/jail/vimage のまとめ chroot jail VIMAGE ファイルシステム分離分離分離 プロセス共通分離分離 ネットワークスタック共通共通分離 9

Jail + VIMAGE で遊んでみよう jail を四つ作る それぞれの jail にはネットワークインタフェースを二つ作る ループ状に接続 bridge3 bridge1 lan1 lan1 lan1 lan1 jail 1 jail 2 jail 3 jail 4 lan0 lan0 lan0 lan0 bridge0 bridge2 10

材料 FreeBSD 9.1 Relase optin VIMAGE をつけて kernel を再構築 jail(8), jls(8), jexec(8) epair(4) if_bridge(4) Ifconfig(8) Name オプション tmpfs(5) nullfs(5) 11

作り方 1. VIMAGE 付きのFreeBSD 環境を用意する 2. Jail 用のファイルシステムを準備する 3. vnet オプション付きでjailを作成 4. 作ったjailにインタフェースを作成 5. 各 jailのインタフェースを接続 6. 各 jailのネットワーク設定を行う 12

VIMAGE 付きの FreeBSD 環境を用意 1. FreeBSD 9.1 Release をインストールする 2. source code を取得する インストール時に src を入れておくと楽 3. option VIMAGE を追加して kernel を再構築する # cd /usr/src/sys/amd64/conf # cat > VIMAGE <<EOM include GENERIC ident VIMAGE option VIMAGE EOM # cd /usr/src # make buildworld # make buildkernel KERNCONF=VIMAGE # make installkernel KERNCONF=VIMAGE 13

Jail 用のファイルシステムを準備する chroot と同じように各 Jail 用の root を用意する cp r, tar, dump なのでファイルをすべてコピーする ZFS を使って cloning nullfs を使って必要なディレクトを mount 14

Jail 用のファイルシステムの作成 # mkdir -p /jail # mount -t tmpfs tmpfs /jail # sysctl security.jail.mount_devfs_allowed=1 # sysctl security.jail.mount_procfs_allowed=1 # for i in 1 2 3 4 do mkdir -p /jail/jail${i} mkdir -p /jail/jail${i}/dev mount -t devfs devfs /jail/jail${i}/dev mkdir -p /jail/jail${i}/proc mount -t procfs proc /jail/jail${i}/proc for d in lib libexec etc bin sbin usr var do mkdir -p /jail/jail${i}/${d} mount -t nullfs /${d} /jail/jail${i}/${d} done done 15

vnet オプション付きで jail を作成 指定オプション 目的 -c Jail の作成 persist vnet jid path host.hostname 恒常的な Jail 環境の作成 VIMAGE を利用する Jail の ID を指定する Jail の root filesystem を指定する Hostname を設定する # for i in 1 2 3 4 do jail -c persist vnet jid=${i} path=/jail/jail${i} host.hostname=jail-${i} done # jls JID IP Address Hostname Path 1 - jail-1 /jail/jail1 2 - jail-2 /jail/jail2 3 - jail-3 /jail/jail3 4 - jail-4 /jail/jail4 16

作った jail にインタフェースを作成 epair インタフェースを作成する A/B の二つの口をもつ仮想インタフェース イメージは Ethernet ケーブル A から B B から A にパケットが送信される # kldload if_epair # for i in 1 2 3 4 do for n in 0 1 do ifconfig epair${i}${n} create ifconfig epair${i}${n}b vnet ${i} jexec ${i} ifconfig epair${i}${n}b name lan${n} jexec ${i} ifconfig lan${n} inet6 -ifdisabled accept_rtadv up ifconfig epair${i}${n}a up done done 17

各 jail のインタフェースを接続 仮想ブリインタフェース (if_bridge) を作成し b 側の epair インタフェースを接続していく 複数のインタフェースを L2 で接続するための仮想インタフェース イメージとしては仮想 HUB # kldload if_bridge # ifconfig bridge0 create up # ifconfig bridge0 addm epair40a addm epair10a # ifconfig bridge1 create up # ifconfig bridge1 addm epair11a addm epair21a # ifconfig bridge2 create up # ifconfig bridge2 addm epair20a addm epair30a # ifconfig bridge3 create up # ifconfig bridge3 addm epair31a addm epair41a 18

各 jail のネットワーク設定を行う 後は jexec コマンを使って操作する以外は 通常のネットワーク設定作業と同じ # jexec 1 ifconfig lan0 inet 192.168.4.1/24 # jexec 1 ifconfig lan1 inet 192.168.1.1/24 # jexec 2 ifconfig lan1 inet 192.168.1.2/24 # jexec 2 ifconfig lan0 inet 192.168.2.2/24 # jexec 3 ifconfig lan0 inet 192.168.2.3/24 # jexec 3 ifconfig lan1 inet 192.168.3.3/24 # jexec 4 ifconfig lan1 inet 192.168.3.4/24 # jexec 4 ifconfig lan0 inet 192.168.4.4/24 # for i in 1 2 3 4 do jexec ${i} sysctl net.inet.ip.forwarding=1 jexec ${i} sysctl net.inet6.ip6.forwarding=1 jexec ${i} route add default 192.168.${i}.$(((${i}%4)+1)) done 19

Tips epair を Ethernet ケーブル bridge を HUB とみなすことで ケーブルのつなぎ変えを再現できる Jail 側のインタフェースはどの Jail でも同じ構成にしておくと設計が楽 できるだけ計算で決められるような Jail のホスト名 インタフェース名 アレス設定 ネットワーク構成にしておくことで 大規模なネットワークを構成しやすい 20

参考資料 http://people.allbsd.org/~hrs/freebsd/sato- FBSD20120608.pdf たぶん こちらの方がわかりやすいです 21

OpenStack 環境で疑似インターネッ ト環境を作って実験してみた 22

OpenStack で FreeBSD Jail/VIMAGE を 使った疑似インターネット環境の構築 NICT の委託研究にかかわっていた 大規模コンテンツ配信基盤を実現するアクセス網のクラウ化 大規模コンテンツ配信基盤を実現するアクセス網のクラウ化 23

ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー ッ ジノ ー Cache, meta info P2P 情報提供サーバ P2P 型コンテンツ配信サーバ Cache, meta info ルータ Cache, meta info Cache, meta info コアルータ Cache, meta info Cache, meta info 局舎ルータ Cache, meta info Cache, meta info Cache, meta info Cache, meta info Cache, meta info Cache, meta info ホームホームホームホームホームホームホーム Cache, meta info ホーム Cache, meta info Cache, meta info Cache, meta info ホーム Cache, meta info 24

実験ネットワークに対する要求 ンをいっぱい作りたい ルータもいっぱい作りたい ネットワーク構成も自由に変更したい ンやルータの実装に手を入れたい 物理的な機器を使うにはお金が なら仮想化環境を使おう 25

一般的な仮想化環境を考えてみる ン一つに VM 一つ ルータ一つに VM 一つ VM のメモリ 2G とすると Host 側のメモリが 32G だと 16VM/1Host ぐらいか? ンを 100 ぐらい作りたい場合 7Host ぐらい必要 1000 だと 63Host ぐらい ネットワーク構成を自由にしたいなら VLAN が使える L2 switch が必要 これって StarBet 26

そうだ Jail と VIMAGE があった Jail は軽量仮想化なので いっぱいが作成できる Jail を作るだけなら VIMAGE を使うとネットワークスタックも別々にできる FreeBSD ならコーもあるていどわかっている lxc Linux はよく知らないんです 27

こんな環境で実験してました 場所 : IIJ のコンテナデータセンターの一つ 仮想環境 : Jail/VIMAGE + KVM + OpenStack つまり コンテナ in コンテナ! 28

JID/ インタフェース名 計算で JID やインタフェース名を決められるようにする 数を変えやすくするため VM の番号 : VID = 1,2,3, コアルータ JID(C) = VID = 1,2,3, 局舎ルータ JID(R) = (JID(C) 10 + r), r = 1,2,3, ホーム JID(H) = (JID(R) 10 + h), h = 1,2,3, JID(E) = 100 + (JID(R) 10 + e), e=1,2,3, ユーザ JID(U) = 200 + (JID(R) 10 + u), u = 1,2,3, インタフェース番号 = JID 10 + i, i = 0,1,2,3 Jail 側は lan0, lan1, lan2, lan3 Jail 外は epairnb, N はインタフェース番号 29

こういう Jail になりました Core Router: 1 局舎ルータ : 9 局舎一つあたりの Edge/Home/U ser の数 : 9 組 合計 : (9 3) 9 + 1 = 243 r11 e111 h211 u311 e112 h212 u312 c1 r19 e199 h299 u399 30

さらに数を増やす場合 同じ構成のVMを立ち上げる tun(4) を使ってVM 間の接続回線を作る IPv6アレスを使ってtunnelを作成 作ったtunnelをbridge/epairを使ってL2 接続 VM1 VM2 bridge1000 tun0 tun0 bridge1000 Core Router Core Router 31

OpenStack 上で使う場合の Tips 1/3 ディスクイメージは小さい方がいい 必要最小限のイメージを作る 標準以外のソフトは pkg で起動後に入れる GPT を使って 起動時に空き領域を確保する 設定などはリモートから取得できるようにしておく VM を削除するとディスクイメージごと消える 32

OpenStack 上で使う場合の Tips 2/3 使う必要がないメモリは使わない Jail 自体より Jail で動くプロセスの方がメモリを使う 不要なプロセスは立ち上げない 経路制御もできれば static で設定 ZFS を使わず UFS を使う 変更されない部分は NULLFS 設定ファイルの名前を別々にして 設定ファイルをオプションで指定 必要に応じて UNIONFS の利用も考える 33

OpenStack 上で使う場合の Tips 3/3 Hostname に VM の ID を入れておき hostname から VM の ID を取り出す 設定は 計算で決まるようにしておく 設定が楽になるようにするため 本当は OpenStack 対応を頑張るのが正道なんだろうけど 34

まとめと妄想 35

まとめ FreeBSD の Jail と VIMAGE はそこそこ使えるようになっている でも VIMAGE はまだまだ発展途上 Jail/VIMAGE/epair/bridge を組み合わせると実験ネットワークの構築が簡単にできる Jail は軽量仮想化なので数を稼ぎやすい Jail は完全 / 準仮想環境でも利用できるため 実験環境を固定できる 36

あったらいいなあ HTML5+JavaScript でネットワーク図を描くと それに合わせて Jail の設定を作ってくれるもの Jail やインタフェースは動的に確保してくれる 再起動しても自動的に立ち上がるように設定を生成してくれる OpenStack 対応 LXC は対応しているらしいので amd64 Linux Emurator 環境 Jail の中で amd64 な Linux 環境を作るため必要 37