簡介 linux 的 network namespace 功能

28
簡介 Linux Network Namespace 功能 Zuan@Chroot

Upload: john-l-chen

Post on 22-Jan-2018

1.781 views

Category:

Software


1 download

TRANSCRIPT

Page 1: 簡介 Linux 的 Network Namespace 功能

簡介 Linux的Network Namespace功能

Zuan@Chroot

Page 2: 簡介 Linux 的 Network Namespace 功能

whoami

● Zuan

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

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

Page 3: 簡介 Linux 的 Network Namespace 功能

先講一些 Linux Networking基礎

Page 4: 簡介 Linux 的 Network Namespace 功能

lo 一台電腦

應用程式

eth0

DNS 設定

Routing Table

防火牆設定

Page 5: 簡介 Linux 的 Network Namespace 功能

如果是 ADSL/光世代的 PPPoE

Page 6: 簡介 Linux 的 Network Namespace 功能

lo 一台電腦

應用程式

eth0

pppd

ppp0

Page 7: 簡介 Linux 的 Network Namespace 功能

或者 VPN

Page 8: 簡介 Linux 的 Network Namespace 功能

lo 一台電腦

應用程式

eth0

VPN Client

tap0

Page 9: 簡介 Linux 的 Network Namespace 功能

網卡拿來當 Hub用的 Bridge

Page 10: 簡介 Linux 的 Network Namespace 功能

lo 一台電腦

應用程式

eth0 eth1

br0

Page 11: 簡介 Linux 的 Network Namespace 功能

Bridge相關指令

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

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

Page 12: 簡介 Linux 的 Network Namespace 功能

lo 一台電腦

應用程式

eth0 eth1

br0

brctl addbr br0

brctl addif br0 eth1

Page 13: 簡介 Linux 的 Network Namespace 功能

什麼是 Network Namespace?

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

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

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

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

● 很少被單獨使用

Page 14: 簡介 Linux 的 Network Namespace 功能

lo

一台電腦

應用程式

eth0

NetNSeth0

Page 15: 簡介 Linux 的 Network Namespace 功能

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執行指令

Page 16: 簡介 Linux 的 Network Namespace 功能

lo

一台電腦

應用程式

eth0

“”eth0 “nsA”

應用程式

Page 17: 簡介 Linux 的 Network Namespace 功能

veth – 對接的虛擬網卡

Page 18: 簡介 Linux 的 Network Namespace 功能

可以連接兩個不同的Network Namespace

Page 19: 簡介 Linux 的 Network Namespace 功能

Network Namespace相關指令

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

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

Page 20: 簡介 Linux 的 Network Namespace 功能

lo

一台電腦

應用程式

eth0

eth0

veth0a

veth0b

“nsA”“”

應用程式

Page 21: 簡介 Linux 的 Network Namespace 功能

搭配 Bridge即可讓其他 NetNS上網

Page 22: 簡介 Linux 的 Network Namespace 功能

lo

一台電腦

應用程式

eth0

eth0

veth0a

veth0b

“nsA”“”

應用程式

br0

Page 23: 簡介 Linux 的 Network Namespace 功能

但這樣沒多 IP

Page 24: 簡介 Linux 的 Network Namespace 功能

一個 PPPoE連線產生一個 IP

Page 25: 簡介 Linux 的 Network Namespace 功能

lo

一台電腦

應用程式

eth0

eth0

veth0a

veth0b

“nsA”“”

應用程式

br0

ppp0pppd

pppd

Page 26: 簡介 Linux 的 Network Namespace 功能

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

Page 27: 簡介 Linux 的 Network Namespace 功能

看起來很複雜 ? 來 Live Demo.

Page 28: 簡介 Linux 的 Network Namespace 功能

謝謝各位