+ All Categories
Home > Documents > LAB 3: Open vSwitch (OVS) on Raspberry PI

LAB 3: Open vSwitch (OVS) on Raspberry PI

Date post: 18-Oct-2021
Category:
Upload: others
View: 5 times
Download: 0 times
Share this document with a friend
50
Mobile Intelligent Network Lab Depart. Electronic Engineering Lab210 LAB 3: Open vSwitch (OVS) on Raspberry PI 11. 11, 2019 1
Transcript
Page 1: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

LAB 3:Open vSwitch (OVS) on

Raspberry PI

11. 11, 2019

1

Page 2: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

Outline• 實驗二 Mininet 透過模擬,透過 REST API 由 Ryu contoller 將規則 install 到 OVS。

• 實驗三目標: 本實驗將繼續把 SDN 環境移植到實際系統- 將 hostapd 及 OVS 安裝在樹莓派中,除了提供無線通訊服務外,可透過 OVS (或

Ryu) 阻擋特定型態的封包,例如阻擋 ICMP 封包以防禦 DoS 攻擊

• 實驗背景知識介紹: OpenvSwitch (OVS)、Hostapd (無線基地台軟體)

• 實驗步驟- OVS on Raspberry Pi

1. 燒錄 Ubuntu Mate 至 SD卡2. 安裝 Hostapd [查核點一:手機是否能透過 Raspberry Pi 上網]3. 安裝 OVS4. 將 Hostapd 放入OVS [查核點二:從 Ryu上看見手機設備]

- 阻擋封包[Ryu阻擋特定手機的封包]

- Without Controller: 在 OVS 直接下規則 [OVS 阻擋特定手機的 HTTP/ICMP flow]

- With Controller: 透過 Ryu 下規則至 OVS [Ryu 阻擋特定手機的 HTTP/ICMP flow,需上傳gitlab]

2

Page 3: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

自備電腦:

Ryu controller

OpenVSwitch

Internet

物聯網

實驗目標

IoT設備發出ICMP封包

3

e.g., wlan0

或使用TP-LINK無線網卡開啟Hostapd

e.g., eth0

乙太網路連接外網並達到上網功能

(加分題) 使用Ryu下達Flow給OVS

阻擋封包

利用Flow

阻擋特定封包類似防火牆

OpenVSwitch

(Demo)

兩台裝置(手機)連上Hostapd,利用flow阻擋其中一台裝置上網。

Page 4: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

4

實驗背景知識介紹 : OVS

Page 5: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

OpenvSwitch (OVS)

• OpenvSwitch是虛擬多層網絡交換機的軟件實現,旨在通過編程擴展實現有效的網絡自動化,同時支持標準管理接口和協議,如NetFlow,sFlow,SPAN,RSPAN,CLI,LACP和802.1ag。

5

Page 6: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

6

實驗背景知識介紹 : Hostapd

Page 7: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

Hostapd

• Hostapd (Host access point daemon) 是一款開源軟體,可使得WiFi 網卡作為無線接取點,供其他用戶使用網路。- 透過 Hostapd,可以將 Raspberry Pi 打造成無線基地台

7

Page 8: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

8

實驗步驟 A1. 燒錄 Ubuntu Mate 至 SD卡

Page 9: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

樹梅派的映象檔

• Ubuntu For Raspberry Pi b 3+的IMG- 於gitlab上將專案”ubuntu mate image” clone 下來。- git clone https://140.124.71.4:2222/ntut_sdn_2020/ubuntu-mate-image.git

9

Page 10: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

SD卡格式化

• 使用以下軟體格式化SD卡- 安裝網址:https://www.sdcard.org/cht/downloads/formatter/

- 請務必要將SD卡格式化完畢才安裝映像檔進去

10

Page 11: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

燒錄SD卡

• 使用Win32 Disk Imager進行燒錄- https://sourceforge.net/projects/win32diskimager/ (下載網址)

11

選擇IMG檔

燒錄至SD卡

Page 12: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

12

實驗步驟 A2. 架設網路環境

Page 13: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

重置路由器

• 路由器上電之後,長按重置鈕,直到電源燈閃爍。- 按鈕位置於下圖紅框

13

Page 14: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

重置路由器

• 路由器上電之後,長按“WiFi on/off”鈕,直到wifi燈熄滅。- 按鈕位置於下圖紅框

14

Page 15: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

記錄電腦網卡資訊

• 將電腦網卡IP位置記錄下來,並且設定為自動取得IP位置。- 需要記憶內容如下

15

2.設定自動取得IP位置

1.截圖此資訊

Page 16: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

路由器連接方式

• 1.將電腦那端的網路線接到路由器的wan port。

• 2.並且另外拿一條線將電腦接上路由器的lan port。

• 3.將樹梅派接上路由器的lan port。- 連接圖如下

16

路由器學校網路

wan port

電腦

樹梅派

lan port

lan port

Page 17: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

設定路由器

• 在電腦端打開網頁,輸入:- http://192.168.50.1/Main_Password.asp?nextPage=Advanced_Setting

Backup_Content.asp

• 進入路由器設定介面,做以下設定。- 使用者名稱:asus

- 密碼:eelab501

17

Page 18: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

設定路由器

• 若跳出此頁面:無線網路隨意設定。

• 若沒有:前往下一頁投影片。

18

Page 19: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

路由器外部網路設定

• 點選進階選項->外部網路(WAN) 。- 下圖紅框標示。

19

Page 20: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

路由器外部網路設定

• 於紅框輸入先前紀錄的IP位置。

20

Page 21: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

更改路由器mac address

• 點選“網路服務供應商(ISP)特別需求->取得電腦MAC位置”。

• 點選“套用本頁面設定”。

21

Page 22: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

確認連線狀況

• 點選網路地圖- 連線成功會顯示已連線

22

Page 23: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

23

實驗步驟 A3. 安裝 Hostapd

Page 24: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

連接樹梅派

24

• 樹莓派連接設備:- 電源

- Hdmi輸出

- 網路線

- 無線網卡

- 鍵盤滑鼠

- SD卡

Page 25: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

安裝 Hostapd

• 指令更新- sudo apt-get update

- sudo apt-get upgrade

25

• 將無線介面做靜態設定- sudo vim /etc/network/interfaces

• 將網路功能重啟抓取設定- sudo /etc/init.d/networking restart

• 樹莓派登入資訊:- 使用者:pi

- 密碼:eelab501

Page 26: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

安裝 Hostapd

26

• 安裝hostapd服務- sudo apt-get install hostapd

• 設定hostapd組態:- sudo vim /etc/hostapd/hostapd.conf

設定簡易組態內容:- interface=wlan0

- driver=nl80211

- ssid=RPi-AP

- hw_mode=g

- channel=1

- macaddr_acl=0

- auth_algs=3

- ignore_broadcast_ssid=0

*完整組態可從解壓縮來修改/usr/share/doc/hostapd/examples/hostapd.conf.gz

基地台名稱可自訂

Page 27: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

安裝 Hostapd

27

• 設定hostapd將啟動組態指定至我們設計的組態- sudo vim /etc/default/hostapd

• 啟動hostapd- sudo hostapd /etc/hostapd/hostapd.conf

• 接下來就可以利用設備檢查 Hostapd 提供的熱點- 註:此時熱點無法提供裝置上網,因為此時無法提供IP位置給裝置。

Page 28: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

28

查核點一:開啟Hostapd提供Wi-Fi網路

1 先設定網路確定可以上網

2 進行指令更新(update,upgrade)

3 安裝hostapd,設定hostapd組態

4 使用手機檢查,是否有熱點出現

Page 29: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

29

實驗步驟 A4. 安裝 OVS

Page 30: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

OpenvSwitch(on raspberry pi)

• 安裝OpenvSwitch- sudo apt-get install openvswitch-switch

• OpenvSwitch指令教學

更多指令可以參考: https://roan.logdown.com/posts/191801-set-openvswitch30

目的 指令

建立一個名稱為br1的bridge sudo ovs-vsctl add-br br1 (br1可自訂,刪除為del-br)

將網路介面(eth0)加入至bridge sudo ovs-vsctl add-port br1 eth0(刪除為del-port)

查看bridg及port sudo ovs-vsctl show

加入flow entry 例如:將port 1進來的封包往port 2

轉送sudo ovs-ofctl add-flow br1

priority=1,in_port=1,actions=output:2(刪除為del-flows)

查詢介面在bridge中的port號 sudo ovs-ofctl show br1

查看bridge上的flow sudo ovs-ofctl dump-flows br1

Page 31: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

31

實驗步驟 A5. 將 Hostapd 放入 OVS

Page 32: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

Controller IP (於虛擬機)

• 虛擬機調整網路設定為Bridged

32

Page 33: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

Controller IP (於虛擬機)

• 重新啟動網路

• 輸入指令查詢ip- ifconfig

33

Page 34: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

開啟Ryu controller(於虛擬機)

• 執行simple_switch_13以及圖形化介面- ryu-manager --verbose --observe-links

ryu/ryu/app/simple_switch_13.py ryu/ryu/app/gui_topology/gui_topology.py

34

Page 35: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

OVS操作(on raspberry pi)

• 新增Bridge- sudo ovs-vsctl add-br ovs-br (ovs-br可自己命名)

• 將Bridge設置Controller- sudo ovs-vsctl set-controller ovs-br tcp:(ControllerIP:port)ex:192.168.50.74:6633

• 基地台無線介面及eth0加入(eth0每個人都不一定)- sudo ovs-vsctl add-port ovs-br eth0 (wlan0/eth0每個人介面不一定)

- sudo ovs-vsctl add-port ovs-br wlan0

• Bridge跟DHCP Server要IP- sudo dhclient ovs-br

• 將有線那端網址歸零- sudo ifconfig eth0 0 (eth0每個人都不一定)

• 啟動Hostapd- sudo hostapd /etc/hostapd/hostapd.conf 35

查詢自己controller的ip

重開機之後也要再執行一次

Page 36: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

OVS操作(on raspberry pi)

• 可以輸入指令查詢是否有連到controller- sudo ovs-vsctl show

• 也能看到手機連上hostapd

36

有出現“is_connected:true”才是有連線到控制器

手機的MAC

Page 37: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

Ryu Controller

• 控制器能看到連線資訊

37

手機的MAC address

Page 38: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

38

查核點二:從 Ryu 上看見手機設備

1 安裝 OpenvSwitch

2 開啟Ryu

3 新增Bridge設置Controller

4 Bridge跟DHCP Server要IP

5 開啟hostapd並確定可否連線

6 開啟Ryu,在圖形化介面確認手機是否連上

Page 39: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

39

實驗步驟 A6. 封包傳送及阻擋

Page 40: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

封包傳送:作業一

• 開啟控制器- ryu-manager --verbose --observe-links

ryu/ryu/app/simple_switch_13.py

• Hostapd連上控制器,用手機連上hostapd,確認可以上網。

• 刪除Openvswitch內br1的規則- sudo ovs-ofctl del-flows br1 (現在不能上網)

40

Page 41: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

封包傳送:作業一

• 在hostapd的終端機,查看現在有哪些裝置連上hostapd

41

Page 42: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

封包傳送:作業一

• 下規則傳送封包- sudo ovs-ofctl add-flow br1

“priority=100,eth_type=0x800,dl_dst=xx:xx:xx:xx:xx:xx,action=normal”(其中一台不能上網)priority:優先權,數字越大,越高優先權

eth_type:採用何種通訊協定,0x800是TCP

dl_dst:目的地MAC

action=normal:封包正常傳送(action=drop是阻擋封包)

- 封包要傳送需要雙向->來源端也要下規則(dl_src)

• 讓手機連上hostapd,也能正常上網

• 作業一結果用”sudo ovs-ofctl dump-flows br1”顯示,截圖之後放到實驗報告內

42

Page 43: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

阻擋封包:作業二

• Ryu controller先執行simple_switch,讓封包能正常傳送,手機能上網- ryu-manager --verbose --observe-links

ryu/ryu/app/simple_switch_13.py ryu/ryu/app/gui_topology/gui_topology.py

• Hostapd連上控制器,用兩台手機連上hostapd

• 作業二:在Openvswitch上下規則,讓其中一台手機無法上網

43

Page 44: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

阻擋封包:作業二

• 兩台手機連上hostapd後,下規則讓其中一台手機無法上網

• 作業二結果用”sudo ovs-ofctl dump-flows br1”顯示,截圖之後放到實驗報告內

44

Page 45: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

阻擋封包:作業三

• Ryu controller先執行simple_switch,讓封包能正常傳送,手機能上網- ryu-manager --verbose --observe-links

ryu/ryu/app/simple_switch_13.py ryu/ryu/app/gui_topology/gui_topology.py

• Hostapd連上控制器,用兩台手機連上hostapd

• 作業三:用REST API下規則,讓其中一台手機無法上網

45

Page 46: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

阻擋封包:作業三

• 利用REST API下規則,讓其中一台手機無法上網

• Postman指令方法參考LAB2

• 下完規則後,把flow存成jason檔上傳到gitlab- 命名為hw3_3

46

dpid 自行查詢switch

priority 優先權可以自己設定actions:[] 不執行動作,視為丟掉封包

Page 47: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

阻擋封包:作業四

• Hostapd連上控制器,用兩台手機連上hostapd

• 作業四:寫一個python檔,讓其中一台手機無法上網

• Ryu controller先執行自己設計的python檔,讓一隻手機不能上網- ryu-manager --verbose --observe-links test.py

ryu/ryu/app/gui_topology/gui_topology.py

• 把python檔傳到gitlab- 命名為hw3_4

47

Page 48: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

進階題(加分題):流量限制

• 抓取裝置的流量

• 當一個裝置流量超過一定的值時,例如100MB,就阻擋它的封包

• 提示:建立meter table

48

OpenVSwitch

Internet

物聯網

IoT設備發出封包

FLOW自備電腦:

Ryu controller

當流量異常時,下達Flow給OVS

阻擋封包

Page 49: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210

繳交內容

• 於git lab上的lab3有說明.

49

Page 50: LAB 3: Open vSwitch (OVS) on Raspberry PI

Mobile Intelligent Network LabDepart. Electronic Engineering

Lab210Lab210

50


Recommended