簡介 linux 的 network namespace 功能

Post on 22-Jan-2018

1.781 Views

Category:

Software

1 Downloads

Preview:

Click to see full reader

TRANSCRIPT

簡介 Linux的Network Namespace功能

Zuan@Chroot

whoami

● Zuan

● 台科大學生● 前年 SITCON講者 (關於遊戲外掛 )

● HITCON議程組 /翻譯組● chroot讀書會成員

先講一些 Linux Networking基礎

lo 一台電腦

應用程式

eth0

DNS 設定

Routing Table

防火牆設定

如果是 ADSL/光世代的 PPPoE

lo 一台電腦

應用程式

eth0

pppd

ppp0

或者 VPN

lo 一台電腦

應用程式

eth0

VPN Client

tap0

網卡拿來當 Hub用的 Bridge

lo 一台電腦

應用程式

eth0 eth1

br0

Bridge相關指令

● 需要安裝 bridge-utils才能使用 brctl

● brctl show – 顯示 bridge狀況● brctl addbr/delbr – 新增 /刪除 bridge界面● brctl addif – 將界面新增至 bridge界面● brctl delif – 將界面從 bridge移除

lo 一台電腦

應用程式

eth0 eth1

br0

brctl addbr br0

brctl addif br0 eth1

什麼是 Network Namespace?

● 一個可以讓你只虛擬化網路部份的功能– 獨立的 (虛擬 )網卡列表 , Routing Table, Resolver設定 , 防火牆設定

● Linux特有 (Darwin/Windows無類似功能 )

● 最近幾年才出現 (約 Kernel 3.0開始有有 )

● 是輕量化虛擬技術的基礎– Docker, LXC, 甚至 OpenVZ都是用他

● 很少被單獨使用

lo

一台電腦

應用程式

eth0

NetNSeth0

Network Namespace相關指令

● ip netns add <NetNS名稱 > – 新增 NetNS

● ip netns list – 列出現有的 NetNS

● ip netns identify <PID> – 顯示 PID所在的NetNS

● ip netns identify $$ – 顯示目前的 NetNS

● ip netns exec <NetNS 名稱 > <指令 > – 在NetNS執行指令

lo

一台電腦

應用程式

eth0

“”eth0 “nsA”

應用程式

veth – 對接的虛擬網卡

可以連接兩個不同的Network Namespace

Network Namespace相關指令

● ip link add <veth名稱 > type veth peer name <veth另一端名稱 > – 建立一個 veth裝置

● ip link set <veth名稱 > netns <NetNS名稱 > – 將 veth遷到 NetNS.

lo

一台電腦

應用程式

eth0

eth0

veth0a

veth0b

“nsA”“”

應用程式

搭配 Bridge即可讓其他 NetNS上網

lo

一台電腦

應用程式

eth0

eth0

veth0a

veth0b

“nsA”“”

應用程式

br0

但這樣沒多 IP

一個 PPPoE連線產生一個 IP

lo

一台電腦

應用程式

eth0

eth0

veth0a

veth0b

“nsA”“”

應用程式

br0

ppp0pppd

pppd

再設定好 pppd跟 resolve.conf即可上網

看起來很複雜 ? 來 Live Demo.

謝謝各位

top related