Tumgik
#isolated2
lukewhiteonthebeat · 2 years
Photo
Tumblr media
New @bigbabygucci out now Mixed #11 feat @_kevinpowers Prod this with @kirigerbs and @cd.mp3 #isolated2 #explore #explorepage (at Los Angeles, California) https://www.instagram.com/p/CjRIyzyvZpJ/?igshid=NGJjMDIxMWI=
0 notes
nekopippi · 7 years
Text
箱庭ネットワークの構築
後日書き足すつもりだけど、まずはL2まで。
ネットワークの勉強あるいは実習をしようというときに困るのは、そう易々とスイッチやルーター、それにPCなど端末を買い揃えることは難しいよね...というところで、であるならば仮想化したネットワークを作れば良かろうと調査をはじめた。当エントリーはその際に残したメモである。
iproute2で仮想ブリッジや仮想Etherケーブルが作れる
仮想ブリッジをつくる
# ip link add name br0 type bridge # ip link set br0 up
仮想ブリッジを消す
# ip link set br0 down # ip link delete br0 type bridge
仮想Etherケーブルをつくる
# ip link add veth1_2 type veth peer name veth2_1 消す # ip link delete veth1_2 type veth # ip link delete veth2_1 type veth
ネットワークの隔離されたchroot環境をつくる
ひとまず、Busyboxのソースを落として make menuconfig で static library としてビルドするオプションを有効にしてビルド。 /path/to/busybox-src/_install にchrootする。
# chroot _install ash
この際、PIDもホストの環境から隔離するために unshare コマンドを使う。
# unshare -pf chroot _install ash
隔離されたネットワークをつくるには、ip netns をつかう。
# ip netns add isolated1 # ip netns add isolated2
これらのネットワーク上でコマンドを実行するには、 ip netns exec を使う。 上のChroot環境に入る場合は、
# ip netns exec isolated1 unshare -pf chroot _install ash
のようなコマンドを叩く。
仮想ケーブルで接続する
隔離されたネットワークにケーブルをさす。
# ip link set veth1_2 netns isolated1 up # ip link set veth2_1 netns isolated2 up
仮想ブリッジにケーブルをさす。
# ip link set veth0_1 master br0
仮想ブリッジからケーブルを抜く
# ip link set veth0_1 nomaster br0
IPアドレスの割り当て
これで、 isolate1 というネットワークと isolated2 というネットワークが仮想Etherケーブルで接続された。 IPでルーティングするためには、それぞれの環境で ip address add を叩けばよい。
たとえば、isolated1 にささっているインターフェース veth1_2 に 172.16.0.1、 isolated2 にささっているインターフェース veth2_1 に 172.16.0.2 を割り当てる場合は、 以下のようなコマンドを叩く。
# ip netns exec isolated1 unshare -pf chroot _install ash / # ip address add 172.16.0.1/24 dev veth1_2 / # ip address add 127.0.0.1/8 dev lo #ループバックにIPアドレスを割り当てるのも忘れずに。 / # ip link set lo up # ip netns exec isolated2 unshare -pf chroot _install ash / # ip address add 172.16.0.2/24 dev veth2_1 / # ip address add 127.0.0.1/8 dev lo / # ip link set lo up
疎通確認
ここまでできたら、疎通確認をしてみる。 172.16.0.1 → 172.16.0.2 あるいはその逆に ping が届くのが確認できる。
# ip netns exec isolated1 unshare -pf chroot _install ash / # ping 172.16.0.2 # ip netns exec isolated2 unshare -pf chroot _install ash / # ping 172.16.0.1
次やること
Busyboxだとできることが少なすぎる。Dropbearをstatic buildして動かせないか。
上の方法だと各コンテナ (もどき) がファイルシステムを共有している。overlayfs で下層のみ共通にして、あとは隔離できないか。
Routing protocolをしゃべる軽量なコンテナを作れないか (仮想ルーターを作りたい)
仮想ブリッジを使ってみる (STPとか使えるのかな)
0 notes