Raspberry PIでJail+vnet

やること

Raspberry Piで、Jailとnet(VIMAGE)を使ってみる。 カーネルカーネルのビルドはこちら。

rixwwd.hatenablog.jp

epairの作成

LANケーブル的な役割をするインターフェースを作成する。

ifconfig epair0 create
ifconfig epair1 create

ルーターとホスト用のJailの作成

実験用の環境として、ルーターとホストを作成する。

jail -c name=router1 host.hostname=router1 vnet persist 
jail -c name=host1 host.hostname=host1 vnet persist 

epair0はRaspberry Piルーターの接続用。 epair1はルーターとホストの接続用。

ifconfig epair0b vnet router1
ifconfig epair1a vnet router1
ifconfig epair1b vnet host1

ifconfig epair0a inet 10.0.0.1 netmask 255.255.255.0
jexec router1 ifconfig epair0b inet 10.0.0.2 netmask 255.255.255.0
jexec router1 ifconfig epair1a inet 10.0.1.1 netmask 255.255.255.0
jexec host1   ifconfig epair1b inet 10.0.1.2 netmask 255.255.255.0

ルーターの構築

パケットを転送するようにするだけ。

jexec router1 sysctl net.inet.ip.forwarding=1

ルーティングテーブル修正

Raspberry Piからルーターを経由してホストへ接続できるよう、ルーティングテーブルの設定をする、

route add -net 10.0.1.0/24 10.0.0.2
jexec host1 route add default 10.0.1.1

pingで接続できていることを確認する。

jexec host1 ping 10.0.0.1
ping 10.0.1.2

後始末

使い終わったら削除する。

jail -r host1
jail -r router1

ifconfig epair0a destroy
ifconfig epair1a destroy