Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Network Namespace / 2nd kistudy

tenforward
November 23, 2015

Network Namespace / 2nd kistudy

2015-11-23 の第2回関西ITインフラ系勉強会でお話した際の発表資料です。
参考となる情報にはPDF中からリンクをしていますが、資料中のリンクは Speaker Deck 上ではクリックできないので PDF をダウンロードしてご覧ください。

tenforward

November 23, 2015
Tweet

More Decks by tenforward

Other Decks in Technology

Transcript

  1. ίϯςφͱ͸ Ծ૝తͳίϯϐϡʔλɾγεςϜΛ࠶ݱ͢ΔԾ૝Ϛγϯʹର ͯ͠ɺԾ૝తͳ OS ؀ڥΛఏڙ͢Δ ˠ OS ϨϕϧͷԾ૝Խ Χʔωϧ͔ΒݟΔͱී௨ʹϓϩηε͕ىಈ͢Δ͚ͩ ىಈ͢Δࡍʹִ཭Λࢦࣔ͢Δ

    ΧʔωϧͷػೳͰ (ෳ਺ͷ) ಠཱۭͨؒ͠Λ࡞Γग़͠ɼϦιʔ εΛ෼ׂɾ෼഑͢Δ ϓϩηεΛάϧʔϓԽͯ͠ଞͷάϧʔϓͱϦιʔεۭؒΛִ཭ άϧʔϓԽͨ͠ϓϩηεʹର͢ΔϦιʔε੍ݶ Ծ૝Խͱ͍͏ΑΓʮִ཭Խʯͱݴͬͨ΄͏͕Θ͔Γ΍͍͔͢΋ Ճ౻ହจ ୈ 2 ճؔ੢ IT Πϯϑϥܥษڧձ 2015-11-23 9 / 24
  2. Linux ͰίϯςφΛ࣮ݱ͢ΔͨΊͷػೳ Linux Χʔωϧʹؚ·ΕΔ৭ʑͳػೳΛ૊Έ߹Θͤͯίϯςφ؀ ڥΛ࡞੒͢ΔɻͦΕͧΕͷػೳ͸ίϯςφઐ༻ͷػೳͱ͍͏Θ͚ Ͱ͸ͳ͍ɻ ϓϩηεΛάϧʔϓԽͯ͠ଞͷάϧʔϓͱִ཭ OS Ϧιʔεͷִ཭ ˠ

    Namespace (໊લۭؒ) άϧʔϓԽͨ͠ϓϩηεʹର͢ΔϦιʔε੍ݶ ϗετͷ෺ཧϦιʔεʹର͢Δ੍ݶ ˠ Cgroup (control group) ͦͷଞ ωοτϫʔΫؔ࿈ػೳ (vethɺmacvlan) pivot root bind-mount ͳͲͳͲ Ճ౻ହจ ୈ 2 ճؔ੢ IT Πϯϑϥܥษڧձ 2015-11-23 10 / 24
  3. ৭ʑͳ Namespace Mount Namespace: 2.4.19 UTS Namespace: 2.6.19 PID Namespace:

    2.6.24 IPC Namespace: 2.6.19 User Namespace: 2.6.23 ˜ 3.8 Network Namespace: 2.6.26 Ճ౻ହจ ୈ 2 ճؔ੢ IT Πϯϑϥܥษڧձ 2015-11-23 12 / 24
  4. Network Namespaceͷ࡞Γํ ௨ৗɺdocker ΍ LXC ͳͲͷίϯςφΛѻ͏ιϑτ΢ΣΞ͔Βͩ ͱɺҙࣝͤͣʹ࡞੒͞ΕΔ (ωοτϫʔΫͷઃఆΛ͢Ε͹) docker: “docker

    run --net="host"” Ҏ֎Ͱ࣮ߦ͢Ε͹ LXC: “lxc.network.type = none” Ҏ֎ͷઃఆͰ͋Ε͹ ͦΕҎ֎ʹ؆୯ʹࢼ͢৔߹͸ɺ util-linux ʹؚ·ΕΔ unshare ίϚϯυ iproute2 ʹؚ·ΕΔ ip ίϚϯυ Ճ౻ହจ ୈ 2 ճؔ੢ IT Πϯϑϥܥษڧձ 2015-11-23 16 / 24
  5. ίϚϯυͰ؆୯ʹNetwork Namespace ࠓ೔͸ ip ίϚϯυͰ Network Namespace Λମݧͯ͠Έ· ͠ΐ͏ɻ ɹ

    ίϚϯυͰ Network Namespace Λ࡞ͬͯԿͷ໾ʹཱͭͷ? ίϯςφͷ࢓૊ΈΛཧղ͢Δ ୯Ұϗετ্Ͱؾܰʹෳ਺ͷΞυϨε͔ΒͷςετΛߦ͍ ͍ͨ ωοτϫʔΫ͕ෆཁͳίϚϯυΛ҆શʹ࣮ߦ͢Δ Ճ౻ହจ ୈ 2 ճؔ੢ IT Πϯϑϥܥษڧձ 2015-11-23 17 / 24
  6. σϞ 1 Network Namespace Λ࡞੒ 2 Network Namespace Λ֬ೝ 3

    ࡞੒௚ޙͷ Network Namespace Λ֬ೝ 1 ΠϯλʔϑΣʔε 2 ϧʔςΟϯά 3 ϑΟϧλϦϯά 4 veth ϖΞͷ࡞੒ (veth0-host / veth0-ns) 5 ࡞੒௚ޙͷ veth ϖΞͷ֬ೝ 6 veth0-ns Λ Namespace netns01 ʹׂΓ͋ͯΔ 7 ϗετଆͷ veth ΠϯλʔϑΣʔεͷ֬ೝ 8 Namespace netns01 ಺ͷΠϯλʔϑΣʔεͷ֬ೝ 9 ϗετଆͷ veth0-host ʹΞυϨεΛׂΓ͋ͯΔ 10 Namespace netns01 ಺ͷ veth0-ns ʹΞυϨεΛׂΓ͋ͯΔ 11 ϗετଆͷ veth0-host Λ࡟আ 12 Namespace netns01 Λ࡟আ Ճ౻ହจ ୈ 2 ճؔ੢ IT Πϯϑϥܥษڧձ 2015-11-23 20 / 24
  7. σϞ ✓ ✏ NETNS="netns01" VETH="veth0" ip a ip netns add

    $NETNS ip netns list ip netns exec $NETNS ip link show ip netns exec $NETNS ip route ip netns exec $NETNS iptables -L -n -v ip link add name $VETH-host type veth peer name $VETH-ns ip link show | grep $VETH # on host ip link set $VETH-ns netns $NETNS ip link show | grep $VETH # on host ip netns exec $NETNS ip link show # in netns ip addr add 10.10.10.10/24 dev $VETH-host ip link set $VETH-host up ip addr show | grep veth ip netns exec $NETNS ip addr add 10.10.10.11/24 dev $VETH-ns ip netns exec $NETNS ip link set $VETH-ns up ip netns exec $NETNS ip addr show | grep veth ping -c 1 10.10.10.11 ip netns exec $NETNS ping -c 1 10.10.10.10 ip link delete $VETH-host ip netns delete $NETNS ✒ ✑ Ճ౻ହจ ୈ 2 ճؔ੢ IT Πϯϑϥܥษڧձ 2015-11-23 21 / 24