什麼是Network Namespace

1. 什麼是Network namespace

  1. 虛擬化網路相關的功能
  2. Linux近幾年特有的技術(Darwin/Windows無類似功能)(約Kernel 3.0開始才有)
  3. 輕量級虛擬化技術的基礎(Docker,LXC,OpenVZ的原理)
  4. 多用在虛擬化隔離
  5. 很少被單獨使用

2. 虛擬化網路相關的功能,是指哪些?

  • 不同Network namespace內的Process,具有不同的Network資源
    如下:
    • 虛擬網卡列表
    • IPv4和IPv6協議
    • Routing Table
    • 防火牆設定
    • /proc/net目錄
    • /sys/class/net目錄
    • 埠(socket)

3. 有什麼特性?

  • 簡單說就是幾個Process之間搞小團體,小團體有私有網路資源,且小團體之間互不干擾

  • 多用在虛擬化隔離

4. 如果Network Namespace之間要互相溝通怎麼辦?

  • 在不同的Network namespace間創建通道:veth pair(虛擬網路設備對接口)

  • 不同Network Namespace因為veth pair得以共享同一個實體網路設備

5. 傳統沒有Network natags: Namespace,Network namespacemespace前是怎樣?

  • 一般乙太網路應用程式
一般乙太網路應用程式
Image 1 - 一般乙太網路應用程式
  • 如果是ADSL/光世代的PPPoE
PPPoE
Image 2 - PPPoE
  • 如果是VPN
VPN
Image 3 - VPN
  • 網卡拿來當Hub用的Bridge
Bridge
Image 4 - Bridge

Bridge相關指令:

  • 需要安裝bridge-utils才能使用brctl
  • brctl show - 顯示bridge狀況
  • brctl addbr/delbr - 新增/刪除bridge
  • brctl addif - 將interface新增至bridge
  • brctl delif - 將interface從bridge移除

6. 有Network namespace後是怎樣?

  • 只有一個Network namespace的話
一個Network namespace
Image 5 - 一個Network namespace
  • 複數Network namespace的話
複數Network namespace
Image 6 - 複數Network namespace
  • 透過veth可以連接兩個Network namespace
veth
Image 7 - veth
  • 搭配Bridge使其他Network namespace上網
Bridge+Network namespace
Image 8 - Bridge+Network namespace

7. 有什麼應用場景?

  1. 多個Network namespace可以共享eth0和lo等實體網路設備
  2. 多個Apache伺服器Process可以在不同Network namespace的80埠上進行監聽
  3. 一個Process不能嗅探其他Network namespace的流量
  4. 一個Process不能關閉其他Network namespace的接口
© 2017 Trashman all right reserved,powered by Gitbook修訂時間: 2024-10-14 03:41:00

results matching ""

    No results matching ""