【實體host與虛擬host通訊 — 不同網段】

今天的研究目標是讓實體主機(執行虛擬機的host)和虛擬主機(執行在Mininet上的主機)進行通訊,在環境上面的設定其實不難,其中最關鍵的地方在於「路由表」的設定,我們要告知實體主機目標網址(Mininet上的主機)的走向,否則封包會找不到,而導致無法通訊的情形發生

環境建置如下
routing_002.png

  • 實體主機(IP: 192.168.1.7)
  • 虛擬主機(IP: 192.168.1.5) –> 使用橋接網路,網段會落在192.168.1.0/24
  • 虛擬主機(IP: 10.211.55.5) –> 使用NAT網路,網段會落在10.211.55.0/24
  • Mininet主機共10台(IP: 192.168.80.1 ~ 192.168.80.10)

介面設定如下

螢幕快照 2017-12-07 上午12.57.56.png
橋接介面(實體端)
Screenshot from 2017-12-06 08-52-53.png
橋接介面(虛擬端)
螢幕快照 2017-12-07 上午1.08.21.png
NAT網路(實體端)
Screenshot from 2017-12-06 08-51-46.png
NAT網路(虛擬端)
Screenshot from 2017-12-06 08-57-16.png
Mininet host的IP從192.168.80.1 ~ 192.168.80.10

執行過程

# 執行Controller 和 Mininet
利用ipbase指令來分派host的IP

Screenshot from 2017-12-06 08-56-20.png

進行路由表設定[橋接網路]

未設定前,無法ping通虛擬主機

螢幕快照 2017-12-07 上午12.59.15.png
無法ping通192.168.80.1

螢幕快照 2017-12-07 上午12.59.35
routing_003.png

螢幕快照 2017-12-07 上午1.13.18.png
路由表中沒有192.168.80.0/24網段,故往192.168.1.1預設閘道出去

開始設定實體主機路由表
netstat -r  #查看路由表
route -n add 192.168.80.0/24 192.168.1.5
[PS] 新增通往192.168.80.0網段經由192.168.1.5介面出去

螢幕快照 2017-12-07 上午12.59.35-2.png

螢幕快照 2017-12-07 上午1.01.37
新增路由表
螢幕快照 2017-12-07 上午1.01.51.png
已新增至路由表中

# 測試與虛擬主機的連線

螢幕快照 2017-12-07 上午1.03.40.png
可與192.168.80.0/24的虛擬主機聯通了
Routing_004
封包路徑

成功進行橋接網路的設定後,再來換試試NAT網路

進行路由表設定[NAT網路]

開始設定實體主機路由表
route -n delete 192.168.80.0/24     # 先刪除剛剛設定的路由表規則
netstat -r  #查看路由表
route -n add 192.168.80.0/24 10.211.55.5
[PS] 新增通往192.168.80.0網段經由10.211.55.5介面出去,和橋接網路不同的地方在於出去的介面IP

螢幕快照 2017-12-07 上午1.04.33.png

螢幕快照 2017-12-07 上午1.09.39.png

螢幕快照 2017-12-07 上午1.10.54.png
測試可ping通虛擬主機
螢幕快照 2017-12-07 上午1.13.59
經由10.211.55.5介面送往192.168.80.1主機
Routing_005
封包路徑

【Openvswitch vs Controller 】

本篇研究是探討使用openvswitch與Controller之間的關聯,前者主要是針對Openswitch所提供的OpenFlow協定介面去做設定,後者由Ryu所提供的API介面去做設定,以下分別針對這兩種模式來達到控制Data Flow的效果

[方式一]
SDN_002

由圖可知我們主要是針對Southbound的介面去做設定

# 簡單執行mininet拓墣
mn –topo=single,3 –mac –controller=remote

Screenshot from 2017-12-07 08-14-53.png

會發現無法Ping通,為什麼?

Screenshot from 2017-12-07 08-15-52
無法ping通host

# 操作Flow Table
sh ovs-ofctl dump-flows s1 查看s1的flow table

Screenshot from 2017-12-07 08-16-52.png
s1的flow table是空的

# 操作Flow Table
sh ovs-ofctl add-flow s1 “priority=0,action=normal" 新增s1的flow table

Screenshot from 2017-12-07 08-17-46.png
插入flow table後檢查有無正確被新增進去

此時就可以互相ping到其他host

Screenshot from 2017-12-07 08-17-58.png
h1 h2 h3 的主機可互相ping通了

# 新增flow 讓目的地IP是10.0.0.1的封包丟棄
sh ovs-ofctl del-flows s1   清除s1的flow table
sh ovs-ofctl add-flow s1 “priority=0,action=normal"
sh ovs-ofctl add-flow s1 “priority=100,eth_type=0x800,ip_dst=10.0.0.1,action=drop"

[PS]:
priority: 該flow的優先權,越高優先執行
eth_type: 採用何種通訊協定 0x800 表示TCP協定
ip_dst: 目的IP位址
action: 符合此規則的動作,drop表丟棄此封包

Screenshot from 2017-12-07 08-21-32.png

Screenshot from 2017-12-07 08-22-35.png
和h1有關的flow被block起來,因此不會通

# 新增flow 讓目的地MAC是00:00:00:00:00:02的封包丟棄
sh ovs-ofctl del-flows s1   清除s1的flow table
sh ovs-ofctl add-flow s1 “priority=0,action=normal"
sh ovs-ofctl add-flow s1 “priority=100,eth_type=0x800,dl_dst=00:00:00:00:00:02,action=drop"

Screenshot from 2017-12-07 08-34-05.png
和h2有關的flow被block起來,因此不會通

[方法二]

SDN_003

由圖可以本方法是針對northbound 的介面去做設定

# 執行POX Controller 和 Mininet
[POX]
./pox.py forwarding.l2_learning    # 執行L2的flow table學習機制

[Mininet]
mn –topo=single,3 –mac –controller=remote

Screenshot from 2017-12-07 08-41-31.png

# 由於有連接POX Controller且有flow table學習機制,故host可相互ping通

Screenshot from 2017-12-07 08-41-43.png

# 分析各flow,所有flow路徑都被記錄在flow table中

Screenshot from 2017-12-07 08-42-26
Screenshot from 2017-12-07 08-42-26-2
Screenshot from 2017-12-07 08-42-26-3
Screenshot from 2017-12-07 08-42-26-4
Screenshot from 2017-12-07 08-42-26-5
Screenshot from 2017-12-07 08-42-26-6

# ICMP/ IP / MAC  block實驗
複製l2_learning.py檔案,由該檔案進行更改程式碼
l2_learning.py 放置於pox/forwarding 目錄底下

Screenshot from 2017-12-07 08-45-56.png

# ICMP block 實驗
新增以下程式碼,並執行pox controller 和 mininet ,進行互ping實驗

Screenshot from 2017-12-07 08-49-39.png
Screenshot from 2017-12-07 08-52-20.png
Screenshot from 2017-12-07 08-52-53.png

# IP block 實驗
新增以下程式碼,並執行pox controller 和 mininet ,進行互ping實驗

Screenshot from 2017-12-07 09-00-39.png

Screenshot from 2017-12-07 09-05-26.png
python是很嚴格要求排版,注意同一個區塊的頭要對其,否則會被判定錯誤喔 !!

Screenshot from 2017-12-07 09-07-41

# MAC block 實驗
新增以下程式碼,並執行pox controller 和 mininet ,進行互ping實驗

Screenshot from 2017-12-07 09-09-49.png
Screenshot from 2017-12-07 09-12-48.png
Screenshot from 2017-12-07 09-16-15.png

 

【玩轉路由器 — IP分享器串接模式】

曾經想過路由器能否進行串接,剛好最近在做SDN的實驗,也需要用到同一個網域下host間的互相通訊,因此就來試試看路由器的串接實驗吧

在進行實驗前,首先要先了解不同的串接方式,會有截然不同的效果,主要有以下兩種模式:

  • IP分享器模式:兩台IP分享器各自管理所屬網段,例如:A分享器管理192.168.0.1~192.168.0.254,則B分享器管理192.168.1.1~192.168.1.254,注意到了嗎?A和B彼此間位於不同的網段,所以說等下在進行DHCP設定時,要避掉IP重疊的情況。
    通常會使用這樣的情況下,就是在租屋處,房東為每一戶設置了一個IP,但是你手邊卻有兩台以上的裝置必須連網,此時我們就會去購買IP分享器,將你要上網的設備透過IP分享器來獲得可以上網的IP位址
  • AP(存取點)模式:兩台IP分享器共同服務同一個網段,也就是說A和B共同管理192.168.0.1~192.168.0.254或是192.168.1.1~192.168.1.254,當你隨意連上A或B其中一台時,你都會在同一個網域中。
    通常會使用這樣的情況下,就是假設你在一棟透天裡面,1樓和2樓的上網設備需要互相進行通訊,由於要能互相通訊所以就必須在同一個網段,這樣設備彼此間才能看得到對方

我們先來看看我們實驗的設備吧

20171204_204113

20171204_210037

20171204_204137

20171204_211524

 


大致了解差異和用途後,就開始進行串連的設定囉,首先先來研究第一種 — IP分享器模式
我們要接的方式如圖下所示

ip_001

操作如下

首先把線接好,如下圖

20171204_211147

設定A分享器WAN端,即外部網路,請依照ISP業者所提供的IP位址設定,這邊每個人的IP會是獨一無二不一樣的

螢幕快照 2017-12-04 下午9.03.08

螢幕快照 2017-12-04 下午9.03.29

設定A分享器LAN端,即內部網路的DHCP

螢幕快照 2017-12-04 下午9.10.01

 

螢幕快照 2017-12-04 下午9.19.52

螢幕快照 2017-12-04 下午9.21.09

設定B分享器DHCP,注意A和B分享器的DHCP範圍不可以重疊

螢幕快照 2017-12-04 下午9.16.21

螢幕快照 2017-12-04 下午9.17.55

進行MacBookPro(192.168.0.194)和MacBookAir(192.168.1.100)互Ping測試
192.168.1.100可ping通192.168.0.194,反之無法
代表下一層級的IP可以看到上一層級的IP,但反之則看不到

螢幕快照 2017-12-04 下午9.25.26

螢幕快照 2017-12-04 下午9.27.22

可以思考看看為何會只有單向可Ping通 ?

接著來設定第二種模式 — AP存取點模式(又可稱為橋接模式),如下圖:

ip_002

操作如下

20171204_214301

接著A分享器的設定和第一種模式一樣
WAN外部IP,LAN內部的DHCP從192.168.0.100~192.168.0.199

螢幕快照 2017-12-04 下午9.33.51

螢幕快照 2017-12-04 下午9.10.01

B分享器設定如下:
採用固定IP => 手動設定在192.168.0.0網域(即A分享器所在網域),本例子為192.168.0.2
停用DHCP

螢幕快照 2017-12-05 上午5.44.47
螢幕快照 2017-12-05 上午5.47.48

MacBookPro連接A分享器
MacBookAir連接B分享器
但都取得192.168.0.0這個網域

螢幕快照 2017-12-04 下午9.49.53

進行MacBookPro(192.168.0.107)和MacBookAir(192.168.0.102)互Ping測試
發先均可以互相Ping通,因為都位於同一層網域,可互相看到彼此

螢幕快照 2017-12-04 下午9.51.44

螢幕快照 2017-12-04 下午9.52.42

 

 

【Ryu Controller Web GUI(使用SDNHUB) — on Ubuntu 16.04】

在持續研究SDN中,突然在Google中發現SDN HUB中有額外可以裝在Ryu Controller上的Web GUI,好奇就來玩玩看

GUI下載點:https://bitbucket.org/sdnhub/ryu-starter-kit

———————————–  安裝流程 ——————————–

我們所需要的環境有以下

  • Ubuntu Desktop 16.04
  • Mininet
  • Ryu Controller

在前面幾篇中已經介紹過Ryu和Mininet的安裝,這裡就不再贅述,如果您還不知道要怎麼安裝,請先參考【Mininet介紹與安裝 — on Ubuntu 16.04】【Ryu介紹與安裝(利用git安裝) — on Ubuntu 16.04】,繼續來看看安裝過程吧

# 利用git下載官方ryu套件和sdnhub 的 gui 套件
git clone https://github.com/osrg/ryu (建議放在/home/[用戶名稱] 目錄底下)
cd ryu/ryu/app
git clone https://bitbucket.org/sdnhub/ryu-starter-kit sdnhub_apps

Screenshot from 2017-12-03 21-34-59.png
官方的Ryu 套件
Screenshot from 2017-12-03 21-36-37
SDN HUB 的 Web GUI 套件

# 安裝python相關套件
apt-get install -y libxslt1-dev msgpack-python python-setuptools python-nose python-pip python-dev

Screenshot from 2017-12-03 21-44-03

# 安裝pip相關套件
pip install ipaddr networkx bitarray netaddr oslo.config routes webob paramiko mock eventlet xml_compare pyflakes pylint tinyrpc

Screenshot from 2017-12-03 21-46-48
Screenshot from 2017-12-03 21-47-14.png

# 安裝Ryu Controller
cd ryu
python ./setup.py install

Screenshot from 2017-12-03 22-01-00.png
Screenshot from 2017-12-03 22-01-16.png

# 執行SDN HUB 的shell
./ryu/app/sdnhub_apps/run_sdnhub_apps.sh

Screenshot from 2017-12-03 22-01-59.png

# 開啟瀏覽器
[本機端瀏覽器]請執行 http://127.0.0.1:8080
[外部瀏覽器]請執行http://[Ryu所在IP]:8080

Screenshot from 2017-12-03 22-02-26
成功看到Web介面了
Screenshot from 2017-12-03 22-02-33
因為還沒有建立switch,所以table是空的

 

 

# 利用Mininet建立拓墣
mn –topo=tree,depth=2,fanout=3 –controller=remote

Screenshot from 2017-12-03 22-06-01.png
左邊為Ryu Controller,右邊為Mininet,注意執行Mininet前必須先執行Ryu Controller喔

 

 

# 打開瀏覽器檢查
這次示範從外部瀏覽器觀察,由於我Ryu Controller安裝在192.168.1.4這台主機裡,所以網址為http://192.168.1.4:8080

螢幕快照 2017-12-03 下午10.21.48.png
出現拓墣介面了
螢幕快照 2017-12-03 下午10.21.57
出現switch的port清單了
螢幕快照 2017-12-03 下午10.22.01
剛開始還沒有進行封包傳送,所以Flow Table會是空的,稍後會示範Switch會學習並記錄規則流表
螢幕快照 2017-12-03 下午10.22.10
這裡可以提供人為手動建立Flow Table規則

 

 

# Switch的學習機制,在Mininet裡面執行pingall指令,讓封包流經所有host

Screenshot from 2017-12-03 22-07-39.png

螢幕快照 2017-12-03 下午10.22.42
由於封包流經host,故介面出現了host和switch
螢幕快照 2017-12-03 下午10.22.58
剛剛的ping封包被記錄在Flow Table裡面了

 

 

 

【Mininet 路由實驗 — 2 router with 2 host】

我們上次在Mininet所模擬出來的拓墣是一個Router連接兩個不同網段,且每個網段各有一台host,現在則是使用兩台Router分別連接一台host,和上次不一樣的地方是,這次實驗有三個不同網段,而且不僅是host要設定路由外,Router的部分也要進行設定

006

實驗環境

  • ubuntu desktop 16.04
  • mininet 2.3.0

#執行mininet的拓墣檔案(router_2.py)

python ./router_2.py

Screenshot from 2017-12-02 03-23-03.png
拓墣檔案內容

# xterm開啟r1 r2 h1 h2

Screenshot from 2017-12-02 03-25-41.png
進入xterm後,左上是router1,右上是router2,左下是host1,右下是host2,建議視窗安排位置可以參考圖上拓墣,比較不會搞混,如果沒有特定指定IP,mininet預設使用10.0.0.1/8網段

#進行設備上IP的設定(有以下設定語法)

ifconfig [設備介面] [IP位址]/[遮罩數]
ifconfig [設備介面] [IP位址] netmask [子網路遮罩IP]
ip addr add [IP位址]/[遮罩數] brd + dev [設備介面]

Screenshot from 2017-12-02 03-32-04.png
將h1的h1-eth0介面設為192.168.10.1/遮罩255.255.255.0,h2的h2-eth0介面設為192.168.30.1/遮罩255.255.255.0,r1的r1-eth0介面設為192.168.10.254/遮罩255.255.255.0,r1的r1-eth1介面設為192.168.20.1/遮罩255.255.255.0,r2的r2-eth0介面設為192.168.30.254/遮罩255.255.255.0,r2的r2-eth1介面設為192.168.20.2/遮罩255.255.255.0

# 進行主機Ping測試
我們發現r1/r2/h1/h2只能ping到直連網路的網域

006_1
不同顏色的部分代表每台設備可以連到的範圍

Screenshot from 2017-12-02 03-37-52.png

Screenshot from 2017-12-02 03-38-37
#在還沒設定路由前,r1只認得192.168.10.0/24和192.168.20.0/24網域,r2只認得192.168.20.0/24和192.168.30.0/24網域

# 開啟路由轉發功能
echo 1 > /proc/sys/net/ipv4/ip_forward

# 設定h1和h2的路由
[h1]> ip route add default -via 192.168.10.254 dev h1-eth0
[h2]> ip route add default -via 192.168.30.254 dev h2-eth0

Screenshot from 2017-12-02 03-43-01.png

# 觀察Ping結果
006_2.png
中間r1和r2間無法通訊,需要在r1和r2設定路由

Screenshot from 2017-12-02 03-48-30.png

# 進行路由設定
[r1]> ip route add 192.168.30.0/24 via 192.168.20.2 dev r1-eth1
[r2]> ip route add 192.168.10.0/24 via 192.168.20.1 dev r2-eth1

Screenshot from 2017-12-02 03-56-53.png

# 小觀察:我們停用r1的轉發功能,看看結果
006_3.png

Screenshot from 2017-12-02 03-59-02
停用r1封包轉發

Screenshot from 2017-12-02 03-59-02-2.png

如果不想經過這麼繁雜的設定,可以將上面的設定寫成python檔案,再做執行

Screenshot from 2017-12-02 04-08-42.png

 

 

 

 

 

 

【Mininet 路由實驗 — 1 router with 2 host】

我們在Mininet所模擬出來的網路拓墣來實驗一些網路原理,以下拓墣是一個Router連接兩個不同網段,且每個網段各有一台host,目的是讓兩台host彼此間可以進行通訊

005.png

實驗環境

  • ubuntu desktop 16.04
  • mininet 2.3.0

#執行mininet的拓墣檔案(router_1.py)

python ./router_1.py

Screenshot from 2017-12-01 22-15-44
拓墣檔案的內容
Screenshot from 2017-12-01 22-16-56
執行後會進入到mininet的提示字元

# xterm開啟r1 h1 h2

Screenshot from 2017-12-01 22-19-18.png
進入xterm後,上面是router1,左下是host1,右下是host2,建議視窗安排位置可以參考圖上拓墣,比較不會搞混,如果沒有特定指定IP,mininet預設使用10.0.0.1/8網段

#進行設備上IP的設定(有以下設定語法)

ifconfig [設備介面] [IP位址]/[遮罩數]
ifconfig [設備介面] [IP位址] netmask [子網路遮罩IP]

Screenshot from 2017-12-01 22-26-24.png
將h1的h1-eth0介面設為192.168.10.1/遮罩255.255.255.0,h2的h2-eth0介面設為192.168.20.1/遮罩255.255.255.0,r1的r1-eth0介面設為192.168.10.254/遮罩255.255.255.0,r1的r1-eth1介面設為192.168.20.254/遮罩255.255.255.0

# 進行主機Ping測試
我們發現r1可以ping通h1和h2,但h1和h2彼此間無法Ping通,我們接著來檢查路由表

Screenshot from 2017-12-01 22-30-57

#設定路由表,由於h1不認識192.168.20.0/24這個網段,因次要增加路由表告知h1將封包往指定地方轉送

ip route add [目的地IP網段]/[遮罩數] via [本地端IP閘道] dev [離開設備的介面]
[以host1為例]
ip route add 192.168.20.0/24 via 192.168.10.254 dev h1-eth0

Screenshot from 2017-12-01 22-38-26
可利用route -n指令檢查路由有沒有被新增進去,新增後h1可以ping到192.168.20.0/24的網段了

#增加h2到192.168.10.0/24網段的路由
ip route add 192.168.10.0/24 via 192.168.20.254 dev h2-eth0

Screenshot from 2017-12-01 22-45-38.png
h2可以ping到192.168.10.254網段了

h1可以ping到192.168.20.254,但無法ping到192.168.20.1
h2可以ping到192.168.10.254,但無法ping到192.168.10.1
原因是什麼呢?

Screenshot from 2017-12-01 22-48-22.png

推測結果是封包沒有被轉發出去,一直停留在r1裡面,所以我們要開啟路由轉發功能,請在r1執行以下指令來開啟路由轉發(0代表關閉,1代表開啟)
echo 1 > /proc/sys/net/ipv4/ip_forward

Screenshot from 2017-12-01 22-49-03.png

進行Ping測試

Screenshot from 2017-12-01 22-49-35.png
開啟轉發功能後,h1和h2彼此間可以進行通訊了
Screenshot from 2017-12-02 03-13-35
利用tracepath -n [IP位址] 來觀察封包流向

#其實實驗到此已經完成了,我們來進一步探討關於路由的問題
[以host1為例]
ip route add 192.168.20.0/24 via 192.168.10.254 dev h1-eth0——–(1)
ip route add default via 192.168.10.254 dev h1-eth0 ————–(2)

請比較不同和差異?
(1)和(2)的設定均可以讓h1和h2彼此通訊,但是未來如果新增一個192.168.30.0/24網域,使用(1)還要手動增加路由,而(2)卻不用
default代表目的地端的網段如果在路由表中找不到,最後就會依循default的設定往192.168.10.254送,此位址我們稱之為預設閘道

Screenshot from 2017-12-02 03-11-57.png

Screenshot from 2017-12-02 03-12-22
一樣h1和h2間可以互相通訊

如果不想經過這麼繁雜的設定,可以將上面的設定寫成python檔案,再做執行

Screenshot from 2017-12-02 02-48-00

 

【虛擬機主機的網路設定 — 以Parallel Desktop為例】

由於最近要做SDN相關的研究,因此要建立許多的虛擬機,現行虛擬機的軟體有很多種,諸如:Virtual Player/ Virtualbox/ Virtual Workstation / Parallel Desktop 等,有些可免費使用,有些則要付費,本篇以Parallel為例子,一方面是我的host(宿主機)是Mac,使用由Apple自家所開發的Parallel Desktop明顯效能與整合性比其他虛擬機好許多,其中在虛擬機中網卡設定的部分還值得花心思去做研究的。

虛擬機裡面的網卡設定通常會分為四種

  • 斷開
    具有網路卡,但是不進行任何設定
  • Host Only
    具有網路卡,使用隨機IP,不進行對外連線(即無法進行上網)
  • NAT(共用網路)
    藉由NAT(網路地址轉換)功能,通過宿主機所在的網路來存取外部網路。簡單來說就是宿主機器再建立一個區網,宿主機裡面的虛擬主機,就是宿主機裡區域網路裡的主機。
  • Bridge(橋接網路)
    在橋接模式中,虛擬出的網卡會和宿主機的網卡共用資源,也就是虛擬機的網卡會和宿主機的實體網卡綁定在一起,兩者皆位於同一個網域,故可以實現虛擬機和實體主機間的通訊,以及存取外部網路
螢幕快照 2017-12-01 上午12.07.38
Parallel Desktop 裡的網卡設定種類

以下就根據以下網路拓墣來做實驗
0012.png

 

  • 斷開
    螢幕快照 2017-12-02 下午5.30.36

    Screenshot from 2017-12-02 17-38-52
    進入系統後設定都要自己來
  • Host Only
    螢幕快照 2017-12-02 下午5.30.30.png

    Screenshot from 2017-12-02 17-34-32.png
    產生一個內網IP,和區域網路無建立連線
  • NAT
    螢幕快照 2017-12-02 下午5.42.45.png

    整個網路架構等同於以下

    0022.png

    Screenshot from 2017-12-02 17-45-12
    NAT 取得到的 address 為一個虛擬私有IP

    Screenshot from 2017-12-02 20-03-58.png

    螢幕快照 2017-12-02 下午8.00.20
    區網192.168.1.0/24的主機無法 ping 通虛擬機

    我們發現以下特性:
    虛擬主機(IP:10.211.55.5)可以ping到該區網(10.211.55.0/24)所有主機,和上層區網(192.168.1.0/24)的任何主機,但是區網(192.168.1.0/24)的任何主機卻不能ping到虛擬主機(IP:10.211.55.5)

    整理如下
    +———————+————————————–+—————————-+——————-+
    |        主機          |        主動發起ping方向      |        主機(網域)        |.    原因         |
    +———————-+————————————-+—————————+——————-+
        10.211.55.5         <——–>    雙向.                  10.211.55.0/24.        同一網段
        10.211.55.5           ——–>     單向                  192.168.1.0/24    找不到反向路由
        10.211.55.5           ———>    單向                  外部網路                   有NAT服務

    [PS] 若要由外網主動發起連線至10.211.55.5必須設置路由器的DMZ和轉發功能

002_1.png

002_2.png

  • Bridge
    螢幕快照 2017-12-02 下午5.46.21.png
    整個架構等同於以下
    004

    Screenshot from 2017-12-02 17-47-36
    橋接後虛擬機所取得的IP位於192.168.1.0/24這個網域,相當於上一個圖的架構
    螢幕快照 2017-12-02 下午8.31.22
    192.168.1.0/24網域的任一台主機均可以ping到虛擬機
    螢幕快照 2017-12-02 下午8.32.16
    可以在路由器中的ARP列表中發現虛擬機的IP位址被紀錄在裡面

    我們發現以下特性:
    虛擬主機(IP:192.168.1.3)可以ping到該區網(192.168.1.0/24)所有主機,以及存取外部網路,由於該虛擬機已經被紀錄在路由中,區網內的主機均可以ping通

    整理如下
    +———————+————————————–+—————————-+——————-+
    |        主機          |        主動發起ping方向      |        主機(網域)        |.    原因         |
    +———————-+————————————-+—————————+——————-+
        192.168.1.3           <——–>     雙向                  192.168.1.0/24       同一網域
        192.168.1.3            ———>    單向                  外部網路                   有NAT服務

    [PS] 若要由外網主動發起連線至192.168.1.3必須要在路由器設置DMZ功能