MPLS-VPN

這是一個最終架構,需要使用多種路由協定組合,才可以達成這種架構。

Mutil-Protocol Label Switching(MPLS),簡單來說,就是把IP位置轉化成標籤,然後用IP位置與標籤,參照標籤資料庫去傳遞資料。也因為標籤介於Layer 2 header 跟 Layer 3 header之間,因此有人說這是 Layer 2.5 。

關於路由為何要標籤化?這就要講述路由是如何學來的:自己設定、自己連接或是路由協定。一旦路由量一大,中間的路由器就得涵蓋所有邊際路由器(Provider Edge)的路由,才能正常傳遞資料,中間的路由器路由怎麼來?自己設定、自己連接或是路由協定,這使得負擔太大。

而標籤化產生同一規格,自動化將路由轉換成標籤,標籤資訊在同一區域內傳遞,藉此使被以標籤取代路由的資料可以傳到對的邊際路由器,最後,設定簡單。中間的路由器只需要學習區域內的路由器。

不過會面臨到一個問題,那就是客戶透過VPN去串連不同的Site點,跟ISP業者買這個服務。設定的責任便落於ISP身上,因此MPLS-VPN是個解決客戶想跟ISP設備做VPN串聯的方式,客戶端就不需要甚麼設定或買相關設備跟Lisence。

MPLS-VPN可以先拆成兩部分:MPLS、VPN。

MPLS設定很簡單,但是不能解決相同網段的問題,必須得因為不同客戶再加上不同標籤才能區隔。

VPN設定較為困難,因為相同網段出現在路由表上,會選擇AD值較小的,如果沒有區分都共用同一份,會變得很混亂。仔細思考,客戶A應該要有個客戶A的路由表,客戶B也得有個客戶B路由表,最後,自己ISP要有個內部路由表。

為了使路由表要有所區分,就會使用Virtual Routing and Forwarding(vrf),切出個虛擬路由器,這個虛擬路由器只需要兩個,分別是連接客戶Site1跟Site2的那兩顆。客戶sites的路由要怎麼彼此交換?需要有一個傳遞路由的橋樑。

BGP是個適合當中間橋樑的路由協定,因為它的鄰居可以相隔許多台,甚至是穿過Internet。BGP透過Redistribute變成路由的載體,也因為盛載著別的路由協定的關係,所以又稱為Multi-Protocol BGP(MPBGP)。

以下是Topology
第一行,是最基本的架構,中間Router有兩個介面跟SiteA跟B接起。
第二行,中間Router可以藉由MP-BGP跟VRF拆成兩個部分。

CUST_A_SiteA <-> ISP Router(CUST_A) <-> CUST_A_SiteB
SiteA <-> { ISP Router(CUST_A) <-MPBGP-> ISP Router(CUST_A) } <-> SiteB

換一種簡化的示意圖。

SiteA <-> db <-> SiteB
SiteA <-> d ———- b <-> SiteB

因此,要完成MPLS-VPN將會有三大部分要做到:

  1. MPLS
  2. VRF
  3. MPBGP

學習設定範例及說明請參考:Multi-Protocol Label Switching (MPLS) 多協定標籤交換

VRF需要設定:Route Distinguishers(RD)、Route-Target去區分不同的虛擬路由,相同的虛擬路由需要有一樣的設定。

MPBGP要做的,就是把客戶路由協定redistribute到BGP,BGP再redistribute到客戶路由協定,以及把客戶路由傳到兩端點對應的VRF中。

設定順序建議:VRF -> MPLS -> MPBGP , MPLS-VPN是一個大工程,要做好就要穩穩地一步步來。

HASHCAT之字典破解HASH入門

HASHCAT是一個逐一遞迴(暴力)運算去還原HASH的工具,沒有特別高深的技巧,最重要的就是運算能力。即便是擁有運算能力,對於常見的八位數密碼,依舊需要花上許多時間,如果是八位數純數字密碼,筆者電腦需要跑15分鐘,再加一位變成九位數,就要花上兩小時半。

密碼不一定是純數字,也可能加上英文字母,英文字母又有大小寫之分,更不要說有特殊符號,或者超過八位數,這些可能性都是讓計算時間大幅延長,輕則一年,多則上百年,因此暴力破解並不適合一般設備,就算換張頂規顯示卡,算力四倍,計算時間剩四分之一,一年變成三個月,還是要不久的時間。

因此,得把計算時間簡化成一週,這才是合理的時程。為此,需要去減少嘗試的組合,所幸,密碼並非是毫無章法,基本上都內藏一些規律,這些規律使得密碼容易被記住,如果掌握些規律,就能夠優先嘗試較為可能的組合,進而減少還原密碼的時間。

密碼設計是一門心理學,這個人會使用的密碼,會參照一些訊息,簡單來說是出生年月日、英文姓名或電話號碼等。這些訊息就藏在這個人的環境之中,如果你仔細觀察,也許就能從相處之中發現。

不過,想要用hashcat破解密碼成為駭客,這是不實際的,因為太沒有效率了。我也不建議拿它當作破解別人帳密的工具,這是違法的事情,但是如果是用在自己身上,也許就能順利找回自己遺忘的密碼。

入門:如何使用hashcat

先從官方網站下載HASHCAT,然後解壓縮後的資料夾內執行cmd,裡面會有幾個example.cmd作為範例,以下是簡單的模板跟範例,複製下面範例執行之後,HASHCAT就會進行運算。。

hashcat.exe <破解方法> <Hash類型> <Hash值>
hashcat.exe -a 3 -m 0 5E8667A439C68F5145DD2FCBECF02209

-a 3 是指用 暴力破解法。
-m 0 是指hash類型為 MD5
5E8667A439C68F5145DD2FCBECF02209 是本次要嘗試的密碼,本身為87654321。

計算出來後,按向上鍵並在最後面打上 –show,就可以看出還原出來的密碼。

hashcat.exe -a 3 -m 0 5E8667A439C68F5145DD2FCBECF02209 --show 
=> 5E8667A439C68F5145DD2FCBECF02209:87654321

就算拿到hash值,但也要知道是甚麼樣的hash類型才能復原,這才是實戰的重點,拿範例學習實在很容易。如果找出hash類型並不在本文範疇內,有興趣可以自行搜尋或是等待日後補充。

hashcat.exe -a 3 -m 100 A7D579BA76398070EAE654C30FF153A4C273272A

-m 100 是指hash類型為 SHA1
A7D579BA76398070EAE654C30FF153A4C273272A 是本次要嘗試的密碼,本身為87654321。

同一組字串換一種HAHS類型之後,計算速度不到MD5的一半,意味者計算時間的加倍與更多。如今MD5跟SHA1並不是主流(重要級)的加密方法,因為被算出的速度很快。真的要實戰,碰上使用其他種HASH加料,會比範例還要更花上不少的時間去計算。

暴力破解可行,只是太久。接下來要使用字典,讓計算可以更快完成。

正文:字典破解HASH

假設你會錄取wifi的shakehand包,然後得到一組HASH,這組還原了,你就有了wifi密碼。要知道wifi的Preshare Key至少會有八位,以及它的性質是供它人使用,所以不會設一堆令人難以理解的規律。

今天有一間旅館,名稱為「好和平」,電話為「49-5969798」,然後發現wifi有分成房間,你住在「501」房,要連上名為「room501」的wifi。※皆屬虛構

78AAE7BACFD940C154CB8F4BDE7E0BEBCBBAC566
92ED10EFAF1DC063FAB36CCB0C9BBA375912541A
54B87CC9227E6347950C268B883EA7C6C4B7C2BD

這有三個HASH,代表不同種可能,為了方便進行,這邊都是以「SHA1」類型。以下列出一些目前發現的線索,並且列出可能的組合。

NICEPEACE
NicePeace
nicepeace
Nice
nice
Peace
peace
NP
N
P
495969798
495
969798
room501
Room501
Room
501

把上面內容存成「sample.txt」放到hashcat資料夾,然後可以運行下方指令。

hashcat.exe -a 1 -m 100 78AAE7BACFD940C154CB8F4BDE7E0BEBCBBAC566 sample.txt sample.txt
hashcat.exe -a 1 -m 100 92ED10EFAF1DC063FAB36CCB0C9BBA375912541A sample.txt sample.txt
hashcat.exe -a 1 -m 100 54B87CC9227E6347950C268B883EA7C6C4B7C2BD sample.txt sample.txt

這會用從字典中,將兩個詞組合新字串,第一個詞從sample.txt出,第二個詞從sample.txt出。藉此,順利地破解出所有的密碼。

一個好字典,需要把各種訊息納入,並且做適當切割與轉化,這種思路便足以使用多數的情境。網路上有許多密碼字典,動則數十GB,甚至更大,如果使用者的密碼用得太過於簡單,用這樣的字典就能夠找出來,無須費心蒐集資訊。

最後,本文是HASHCAT的教學,並不鼓勵拿去破解他人的密碼。也希望可以今後在選擇密碼的時候,反思密碼會不會太容易被破解,避免使用很容易被他人知道的個人資料。

讓 putty 成為 telnet 的預設程式

步驟一
按下「Win + R」,執行視窗中輸入「regedit」,打開登錄編輯程式。

步驟二
進入「電腦\HKEY_LOCAL_MACHINE\SOFTWARE\Classes\telnet\shell\open\command」,對 (預設值) 按右鍵,選擇修改。

步驟三
填入「”<Putty.exe 路徑>” “%l”」,如筆者為:”C:\Program Files\PuTTY\putty.exe” “%l”。按下確定。

telnet本身是通訊協定,但在控制台內的預設應用程式卻找不到,所以只好到登錄編輯程式進行修改。

在作lab的時候,因為win10的內建telnet的enter會按一次輸入二次,造成不便,只好更動。

如果對putty的cmd指令有了解,也可以把default application加入一些個人化配置,如「-load <session name>」,讓log都到session指定的資料夾。
(相關指令參考︰Putty Command line documentation)

在Kali linux上安裝無線網卡(TP-Link T9UH)驅動

環境:
Kali linux(VM): 2020-04版本
TP-Link Archer T9UH V2

當你無線網卡插上去,然後轉給Kali(VM)用,發現kali吃不到無線網卡,也就是沒有wifi可以選,這時候,就是要朝著安裝驅動程式前進。

安裝方法參考此文章:Need rtl8814au driver for kernel 5.3 on Ubuntu 19.10

進到Kali使用Terminal輸入下列指令:

sudo apt install git dkms
git clone https://github.com/aircrack-ng/rtl8814au.git
cd rtl8814au
sudo make dkms_install

之後就可以看到Kali Linux的網路選項中,有wifi出現,就可以用Kali跟無線網卡做更多的學習。

歷程

第一時間會想到安裝官方網站的驅動程式,而且也有Linux版本跟手冊,照著手冊操作會發現弄不起來,這是因為版本差異,官方的驅動是kernal 4.x的版本,但Kali已經升到5去了。

產品明明不是太舊款,驅動這一塊就沒有做上去。只好降版本,官方手冊上用的舊版本不好找,安裝也有點問題,照著說明更新就會出問題,版本太舊了。

照著Error msg去找,看到其中一行,理解出問題點就只是原廠沒有再對kernel版本5去更新,於是缺少了甚麼就不能用。搜尋缺少項目,看到了另外一種解法,針對晶片去安裝驅動。

裝置能不能用,重要的是裡面的「晶片」能不能驅動,無線網卡的晶片不是TPLink的,晶片是甚麼型號可以從維基或是官方驅動裡面去看。TP-Link T9UH V2是「RTL8814a」,接下來就可以從「Kernal 5」跟「RTL8814A」做搜尋,然後我就找到那篇文章,一用就順利運作。

Aruba 如何從Controller看到RAP當地IP跟線路速率

在 Controller 的 CLI 下指令,依序是RAP的當地IP、線路速度。
# 注意!不是Mobility Master(MM),要連進Controller。

show ap monitor arp-cache ap-name (ap-name) | include br0:
show ap debug port status ap-name (ap-name)

解說

Remote Access Point(RAP),通常是AP跟Controller不同網段的設定模式,也可以跨越Internet。其跟Controller建立Tunnel進行溝通,因此在WebUI看到的AP IP是Tunnel的IP位置。

RAP的當地IP是可以與其他RAP重疊,對Controller來說只要Tunnel IP不重疊就好,因此對Controller的角度來看,是看不到AP的當地IP,也就不會RAP當地IP衝突的問題要擔心。

Controller擁有控制AP的權力,當然也可以撈回AP的資訊,因此從Web上,是可以從 Diagnostics項目中Access Point去撈。從下圖去撈,可以撈出該AP的資訊,並且可以從資訊往上找出是下甚麼指令:Show ……. ,然後取得AP的部分資訊。

RAP的當地IP是TroubleShooting一個很重要的參數,尤其是RAP以DHCP方式取得IP,一旦出現了預期之外的DHCP Server,就可能導致AP取得預期外且無法連網的IP,導致無法跟Controller保持連線。有些時候有其他DHCP Server,但是發的IP是可以上網的,就可以透過當地IP發現這個狀況。

RAP的線路速率是更常用的,客戶會反映為什麼AP的WIFI速度會那慢?接著先質疑設備爛,但大部分都不是設備害的。網路線品質不良是很常見的,界接的Switch不支援到1G也是有可能,當AP安裝不是可控的時候,這個資訊可以很快定位出「Wifi速度不佳」的因素所在。

即便是當初速率是沒問題的,但時間會讓網路線出狀況,像是被老鼠咬、後面拉折到線路等。你在遠端,不是很清楚近端狀況,也許透過這個排除,在遠端就能解決掉,少跑一趟。

這兩項是我一直很想知道的資訊,這兩天弄到十二點多去研究出來。最近能夠感受到這一塊不是那麼容易就能精熟,一個厲害的精熟的人,價值很高,因為這不是很容易就能學起來,但卻影響深遠且關鍵。

Aruba Access Point 300 Series(305) 如何灌入image

主要參考:apboot模式给AP升级

今天為了要還原IAP設定,所以下了兩行指令「clear os 0」、「clear os 1」,這使得AP內的image檔都被清乾淨,然後讓IAP無法正常使用,像是一顆thin AP。

AP開機的時候,會先從 flash 開始找 OS Image。在預設狀態,其中 Partition 1 是原廠image存放的位置,Partition 0 是目前運行的image。

如果沒有在flash找到可用的image,就會從tftp去取得。tftp的位置可以透過「setenv serverip <TFTP-Server IP>」去指定,然後下「setenv bootfile <FileName>」,開機時就會去取得設定的檔案。此外,也可以從dhcp取得的資訊去做DNS解析,AP會去找到名稱為「aruba-master.localdomain」(TFTP)的ip,然後自動取得OS。

如果在Flash沒有檔案,開機後再透過TFTP取得OS,我發現只有被納管(thin ap)的OS版本才會正常運作。因此得把Image放入flash中,才能回到一個正常的IAP。

以下是指令流程:

  1. 插Console,拔插電,按Entrer進入<apboot>模式
  2. 「dhcp」自動取得IP位置跟「setenv serverip <TFTP-Server IP>」Server IP
  3. 「Upgrade os 1 <FileName>」透過TFTP取得image
  4. 「purgeenv」清除環境變數
  5. 「boot」開機

為了示範,把OS image都清除掉。

由於IAP的預設密碼是SN,建議先打「mfginfo」去複製SN,以方便後續登入跟設定。

這裡用「dhcp」去取得ip。如果需要手動指定IP:「setenv ipaddr <IP Address>」跟「setenv netmask <Netmask>」。(這裡是我的筆電當DHCP-Server)
serverip是TFTP-server的IP。(這裡是我的筆電當TFTP-Server)
ArubaInstant_Ursa_8.6.0.6_77124是OS image名稱。

等待TFTP跑完之後,「osinfo」可以看到本來空的Partition 1,現在有了OS image。

「purgeenv」清除掉之前用setenv所指定的變數。
「boot」開機。

經過這些步驟,IAP能夠正常使用Web管理。對了,把剛剛複製的SN貼到密碼欄,就能夠繼續設定IAP。

4K串流不卡頓的無線網路環境要求

  1. 有硬體規格可以順暢錄4K並不發燙而降低效能的設備。
  2. 以4K30幀串流,在場地範圍中的最糟點,無線傳輸最低速率要達到120Mpbs。建議值要達250Mpbs。
  3. 要有一個能做到漫遊(Roaming)的無線切換。

最近聽到了一個需求,如題。目前做直播的,大多有一個定點或是小範圍,針對這樣的區域做加強,就可以提升串流品質,同時也不會花太多錢。這樣的直播通常不會跨越一個Basic Service Set(BSS),也就是一個AP能涵蓋的範圍。

今天如果要移動,跨越了數個BSS,不卡頓就一定要達到漫遊,而達到漫遊,就需要有無線控制器去協調。

接下來要煩惱的是,4K的無線訊號強度跟傳輸要求。能夠傳輸4K影音,一定只看5GHz的頻段,還要有一定的dBm去保證。

無線電波很容易受到干擾,走動直播的行動模式更是最為干擾的那種。要知道裝置拿到面前跟原地一百八十度轉身,就會讓傳輸速率瞬間往下掉。一舉一動,都能夠靜止時偵測的dBm再少5~10左右,這點就可以讓傳輸速率暫時往下掉一階。

因此如果傳收速度有300Mbps,這樣的干擾可以視為直接減半150Mbps。走動到150Mbps時,可能只剩75Mbps。等到了75Mbps,這樣干擾可能就斷斷續續了。

比起傳輸速率,低延遲更是一個很重要的點,畫面慢個30ms就會有感覺,即便速率夠,也不能保證不會慢個30ms。所幸可以用延遲畫面來彌補短時間的延遲或速率不足,只要讓播出畫面晚個五秒,後面速率一上來就可以傳遞出之前的缺漏。

重要的來了,4K串流到底每秒需要多少的傳輸速率?就1080P影片來說,我會抓8Mbps來流暢播放。4K影片的解析度是1080P的四倍,所以也就要抓32Mbps才會穩定。這部分的速度是有線的,有線的穩定度更高,不會有移動跟距離造成的傳輸速率的變化。因此,設想訊號最糟的情況,最低值要有四倍的,建議值要有八倍,才能確保影音能即時傳出。

在公司用兩台IAP架了一個Roaming的環境,並且使用iVCam,用手機4K錄影透過wifi傳到筆電上面,筆電可以看到手機的即時畫面(延遲一秒左右),就能夠實現4K串流的測試條件。

在4K30幀的規格,使用H264編碼,在不卡頓的環境,每秒大約跑35Mbps左右,峰值不超過50Mpbs。如果換成60幀,流量直接加倍,可惜我手機的效能不足,沒有辦法稱太久,預覽畫面也沒辦法流暢地呈現。

用iperf3做壓力測試,測試出來的傳輸速率可視為可達的最大速率,人保持一直遠離一號AP移動,手機速率從400Mbps開始一直衰退,大約在90Mbps左右做roaming,換到另外一顆二號AP有220Mbps。這樣的速率跑4K30幀串流還撐得住。到了35Mbps就會明顯卡頓,然後很快就會斷線。

其實自架環境中的AP沒有擺得很開,因為受限於網路線長度跟電源線。如果要抓AP放置的距離,大概間隔十米左右,交錯擺放。這點跟那天去現場測試的結論是差不多的,用的是AX等級的AP,只能說,如果要做到這點,真的要很有錢。

我有了另外一個很省錢的想法……不過就不會用到AP了,基本上也沒有生意可做。

對於隨時就能起一個網路環境的我來說,iVCam真的很有趣,這使我可以輕易地在任何一個地方架設起手機充當監視器。

Windows10 電腦上速起DHCP Server與NAT (需VMware)

今天有一個裝置,位於一個不易到達位置,或者有其他的DHCP Server干擾,使其無法順利連上網際網路,脫離掌握。需要一個應急的方法,使其能連上網際網路,然後修改設定,這時候該怎麼辦?

Access Point(AP)通常裝置在高處,有時得需要爬上很高的梯子才可以觸及,萬一是Thin AP那就不是從IP連入那麼簡單。Thin AP的修改設定有兩種途徑,比起拆下AP用Console,不如讓AP能暫時連上Controller,再從Controller做設定修改。

在環境之中,用一台筆電臨時弄起DHCP Server,就只需要在機櫃端作業,如果只需要IP就可以連入,DHCP Server的派發就能讓筆電得到一個路徑。如果裝置需要再連回網際網路,那麼就要有NAT的機制,讓裝置透過筆電的網路去回到網際網路。

筆電能連上網路是很容易的事情,路徑可以走實體線路連接,或者是從無線連入,再者,人手一支的4G甚至是5G的手機,都可以透過打開熱點分享讓筆電連入,使筆電從熱點去上網。筆電也能脫離電源線的拘束,手機也是,因此相當於何種地點,這些裝置都能使用網際網路,不必找網路插座跟電源插座。

VMware是一種很常見的虛擬機(VM)軟體,練習網路或建立服務,多半都會使用VM去架設。而VM本身跟筆電是網路有區隔的,在預設設定,會建立一個有NAT功能的虛擬網卡,而且帶有DHCP Server的功能,使VM可以透過DHCP取得IP,並且透過該網卡做NAT,從電腦的WAN網卡(可能是Wifi、可能是實體網卡)出去。

虛擬機的NAT功能網卡,剛好就達到標題需求的功能。VM可以透過設定去連接到虛擬網卡,而實體裝置只能接在實體網卡上,實體網卡跟虛擬NAT網卡本身並不相通,還需要做另外的設定「橋接」,使得兩者可以互通。

VMware在安裝完成之後,預設會在電腦上增加兩張虛擬網卡,其中NAT功能的網卡預設名稱為「VMware Network Adapter VMnet8」。而實體網卡接入之後,會增加一個「乙太網路X」的網卡。將兩者選取,右鍵,新增到橋接器,就能夠使兩張網卡橋接器起來。

按下之後,就會新增一個網卡介面「網路橋接器」,這時兩者的設定都會失效,可以視為融合一個網路橋接器。基本上要橋接起來的網卡,在電腦端建議不要做任何設定,就只是單純的Layer2相接。

實體裝置透過橋接器,從VMware的虛擬NAT網卡以DHCP取得IP並且透過NAT走電腦網路上網。除了直接接上裝置,也可以接上Switch,讓筆電作為DHCP Server在LAN中發放。

這樣可以不打開VM,不必等待VM中的DHCP Server啟動,更不用先啟一個VM的DHCP Server。只要透過橋線器讓現有網卡相接,可以非常快速地就讓電腦做到這種功能。

Aruba AP 300系列 燈號說明

翻譯自 Hewlett Packard Enterprise 支援中心 Aruba 300 Series Campus Access Points – LED Indicators 。翻譯內容僅供參考,如有疑慮,請以官方文件為主。

LED顏色/狀態說明
左燈 – 系統狀態熄燈設備沒有電源
 綠燈- 慢閃設備開機中
 綠燈- 恆亮正常運行
 綠燈- 快閃正常運行;但Uplink協商傳輸速率不到 1G 速率 (< 1 Gb/s)
 橘燈 – 恆亮正常運行;但PoE供電採取節能模式(802.3af PoE)
 橘燈 – 快閃正常運行;但PoE供電採取節能模式(802.3af PoE);但Uplink協商傳輸速率不到 1G 速率 (< 1 Gb/s)
 紅燈 – 恆亮系統錯誤
右燈 – 無線電波狀態熄燈設備沒有電源或雙(2.4GHz, 5GHz)無線沒有啟用
 綠燈 – 恆亮雙無線啟用存取模式(可連線)
 綠燈 – 慢閃單無線啟用存取模式
 橘燈 – 恆亮雙無線啟用監視模式
 橘燈 – 快閃單無線啟用監視模式
 綠橘交替一個無線啟用存取模式,另外一個無線啟用監視模式

慢閃(Blinking):基本為熄燈,綠熄頻率相同,通常只有左燈會亮。
快閃(Flashing):基本為綠燈,常綠短熄,通常兩燈都會亮綠,但左燈會閃爍。
PoE供電:正常模式 802.3at PoE,節能模式 802.3af PoE

最近接觸到大量的Aruba AP305,也被問到要如何看燈號,當時只做了陽春版的文件說明。隨後遇到更多的燈號狀況,有些並不在陽春版文件上,我想,適時候得拿出官方文件當靠背了。官方文件沒有中文版,但客戶都希望能看中文版,於是就簡單的翻譯一下。

DHCP-SNOOPING

DHCP-SNOOPING 是用來限制DHCP被非預期的裝置發放或取得動態IP。

在一個複雜的環境,沒有辦法充分掌握是否有非預期的裝置被接上到廣域網路之中。
DHCP的IP取得是先搶先贏,同時存在兩個DHCP-SERVER的話,並「不能保證」裝置能拿到正確的SERVER所發的IP。萬一另外一台的SERVER所發的是不能上網,就會讓本來預期可以取得動態IP上網的裝置無法上網。

DHCP_SNOOPING 的啟用 (只在vlan 1啟用。Aruba 2930)

dhcp-snooping
dhcp-snooping vlan 1

啟用 DHCP-SNOOPING,最基本的機制為「Trust」跟「Untrust」的觀念。
架構中的DHCP-SERVER接在 1 Port,那就在 1 Port 設定 Trust,代表從這一Port來的DHCP-SERVER的回應是核可的。啟用DHCP-SNOOPING後,所有的Port預設是Untrust,因此從其他的傳來的DHCP-SERVER回應將會被Drop。

如果有兩層機制,DHCP-SERVER在上層的第一台,對第二台來說DHCP-SERVER在其Uplink,所以第二台要Trust Uplink Port。

在LAB的環境,所有的設備可以被操作,但是現實之中,卻是各家廠牌設備各家廠商維護,使用者也可能使環境有變動而造成狀況。所以,為了要減少使用者的不便與困擾,用最少的設備(僅能掌握的)做最嚴謹的設定去限制,就能減少狀況發生。

這邊要提DHCP進行的流程:

  1. DHCP-Clinet 會發出 DHCPDISCOVER 其為UDP,Port 67,然後廣播出去,請求IP。
  2. DHCP- Server收到後會發出 DHCPOFFER 其為UDP,Port 68,然後廣播出去回應Clinet。
  3. DHCP-Clinet 收到後會發出DHCPREQUEST,裡面包含其拿的IP,讓其發放的Server知道IP被取用。
  4. DHCP-Server收到後會發出DHCPACK,讓Clinet知道Server已經收到回應,這時DHCP已完成。

除了現成的DHCP-SNOOPING,我們也可以下Access Control List(ACL)去針對UDP 68做條件許可,一樣可以達到DHCP-SNOOPING的功能。

如果是IP ACL,可以用:(Aruba 2930為例)

ip access-list extended DHCP_SNOOPING_IPACL
10 permit udp Host DHCP-SERVER-IP eq 68 any
20 deny udp any eq 68 any
30 permit ip any any
exit

然後綁在設備連接的Interface上,方向為Out(資料從Switch出去)。

如果是MAC ACL,可以用

mac-access-list extended DHCP_SNOOPING_MACACL
10 deny host Untrust-DHCP-Server-MAC any any
200 permit any any any
exit

然後綁在設Interface上。可以依照非法DHCP-SERVER數量去新增更多Deny,這個方法不建議用。

ACL是最硬派的方法,因此可以用於很多的Switch上。

DHCP-SNOOPING也可以針對DHCP-SERVER IP去下指令去列為合法的DHCP-SERVER清單,做起來相對ACL更簡單,實際運作也是採取IP ACL的方式。
dhcp-snooping authorized-server DHCP-SERVER-IP

依照DHCP-SERVER的運作方式,如果Server具有二個網段,要去指定其在DHCP網段的IP位置,如IP分享器有Public IP跟Private IP,要是採取用IP去指定合法DHCP-SERVER,那IP就得用其Private IP。

在使用Aruba 2930的時候,如果有多層Switch架構,發現最下層的Client會拿不到DHCP IP,因為Switch會去把Client的DHCPDISCOVERY添加DHCP OPTION 82,同時Switch預設是會丟棄從Untrust Port(Client)傳來帶有OPTION82,因此上層Switch會去Drop Client的DHCPDISCOVERY,使得Client拿不到DHCP IP。

要記得,如果有啟用DHCP-SNOOPING,也要順便設定OPTION 82,不然會有問題。基本上就是不要用DHCP OPTION 82,把OPTION 82的關掉

no dhcp-snooping option 82

Switch設備無法被連線管理

這是一個最近一直碰到的狀況,覺得思路很有趣,使用ping跟tracert,來做初步推論。

今天有一個環境,切分為內外部:內部是同一個網段,外部是跨網段。

內外部都是public network,而且中間設備的ip route設定也無誤,這是不需要也沒有機會去檢查的。
內部的Gateway的IP位置是未知的,但是可以連通內外部,也可以正常上網。
只能存取新增的設備,其餘設備的config跟帳號都不知道。

在內部新增了一個Switch設備,但是卻沒有得到回覆,請問是?

  1. 設備離線(暫時關閉電源)
  2. 路徑中有介面意外關閉(err-disable)
  3. 設定錯誤(IP錯誤,或是Gateway錯誤)
  4. IP衝突

列出四種,這四種都會導致無法連線到設備,要求要能找到問題點,始之可以被正常存取連線。

以下說出如何找出問題跟解法。

  1. 設備離線(暫時關閉電源)
    表徵:IP有時候會有回應,有時候會沒有回應,需要持續一段(一天)觀察。
    解法:跟客戶說明關閉電源會導致的結果。
  2. 路徑中有介面意外關閉(err-disable)
    表徵:用 show int brief 去看是 down 的,有設定 bpdu 的相關指令。
    解法:檢查config並修改,再重新啟動介面。

3a. 設定錯誤(IP錯誤)
表徵:內外部Ping不到IP,上行或下行介面是通的,也可以看到該設備。
解法:如果有用IPv6,可以試著用cdp或lldp撈出IPv6然後再連過去。

3b. 設定錯誤(Gateway錯誤)
表徵:只有外部Ping不到IP,上行或下行介面是通的,也可以看到該設備。在外部tracert會卡在最後一步。
解法:連到內部其他設備再轉連過去,如果內部無法連線,就要找出該設備解決。

  1. IP衝突
    表徵:IP會有回應,但是資訊不是自己的設備。在安裝設備之前,就能發現設備IP有所回應。
    解法:如果有用IPv6,可以試著用cdp或lldp撈出IPv6然後再連到自己的設備去修改。
    或是把衝突的設備改IP,不過因為mac table要等待一段時間(預設四小時)才能清除暫存,正常運行。

結論:
基於 遠端協助 >>> 到場處理,設備在設定上,一定要確保遠端是可以正常連線到的,或是透過轉接的方式連線。
config需要被調整那是很自然的,力求確保可以正常遠端連線就能省下很多工。
工作環境跟教科書不一樣的是,有許多的未知數,還有許多不可動的限制。
例如IP位置衝突,IPv6開啟,就算IPv4有衝突到,也是可以被解決的。
在驗收得過的基本要求之下,能用最輕鬆的方式最少的時間完成最好,任何會影響驗收的,花多少時間心力都要去解決。

想起以前面試被提說IP位置重疊有甚麼解決辦法?我還是覺得中間接Switch去偵測是很爛的辦法。就現實工作面來看,這作法費工費器材,不太可能這樣做。
最好是接設備之前先掃描,如果沒有就可以不用擔心。要是裝上去了才懷疑IP衝突,就利用ip scan去看資訊是否跟預期的相同。
要是是別台的資訊,問題排除後,得馬上清除MAC table或等一段時間自然被清除才能正常運行。
利用LLDP或是CDP看是更聰明的方法,有可以找到鄰近設備IPv4或有機會找到IPv6,可以確定被重複到的新Switch是有被設定好。

Python引入特定位置的package

最近使用github來做一些小套件的版本控制,為了使引入的套件都是同一個版本,所以不會複製出另外一個,得從特定資料來去import套件。

關於import的機制,網路上有不少文章,可以去google了解。

import sys
sys.path.append( PACKAGE PATH )
import PACKAGE

假設我在 C://test 有一個 test 的 package,想要使它被引入在某些專案。

import sys
sys.path.append( r"C://test")
import test

透過這個,可以確保引入的都是從github得到的最新的主要版,也不會有因為特別版或多重版本或新舊版本的問題。