2010年1月21日 星期四

LACP (Link Aggregation Control Protocol)

在一般伺服器或者交換機的網路在大量傳輸過程會遭遇到瓶頸,通常要解決這種問題直觀方式就是儘可能的加大每條channel的頻寬囉~ 但每個Port的上線頻寬都是固定的阿!所以就有人提出所謂的「Trunking」的概念。

Trunking意即為將幾條port channel「邏輯的」想像成合併成一條大的channel。好比從甲地開車到乙地原本是只有一條單行道可以通行(一個port),Trunk就是將這條馬路拓寬為三線道四線道,白話點的解釋可以這樣想像。

而當大家遇到這些問題的時候各家廠商就會去各自提出解決的方式。在過去,INTEL叫LINK AGGREGATION,CISCO叫FAST ETHERCHANNEL,3COM叫PORT TRUNKING。百家爭鳴的結果所以衍生一個國際標準:IEEE802.3ad LACP

但Trunking為static的,沒有設定就不會有這功能。LACP則差別是有Learning的概念,透過一段時間後可以找出最適合現在網路狀況的LACP Group,動態的改善網路頻寬的使用

LACP(Link Aggregation Control Protocol)為IEEE 標準規格 802.3ad. 可以將上許多不同的實體連接埠(port)邏輯的共同結合在一起, 視為一條線路[1]。LACP有幾個限制條件:
1)full-duplex links
2)相同的media type, speed, duplex mode, flow control settings
Link Aggregation ID:system priority + MAC + KEY + port priority + port Number

同一個LACP的成員埠可以均衡負載,相互備援。LACP通常用於需要提高主幹網路頻寬的應用,這是一個提高網路傳輸資料量的最經濟的方式。

References:
[1]http://www.samtseng.liho.tw/~samtz/blog/?p=2612
[2]http://wordpress.morezman.com/?p=104#more-104

2010年1月20日 星期三

C語言- GCC, 程式compile流程, STL

GCC Gnu Compiler Collection(GCC),應該是GNU最有名的傑作了。很多研 究單位不想多花錢買商用的compiler就用gcc來compile。本來gcc的意思是 專指gnu c compiler,不過後來延伸出pascal,fortran等等只要是GNU負責的 都是,不過我們還是指有c/c++/object c 的gnu compiler package 。他的功能跟強大不是一般compiler比得上的。

它可以是個cross-compiler,也就是它可以在Intel的機器上編譯程式,但是這 個程式是Sun Sparc Solaris的執行檔,反之也可以,只要他有支援的機器,作 業系統,就可這樣亂七八糟的愛怎麼編就怎麼編。現在最流行的就是arm這顆 CPU,或者palm的程式寫作,用gcc實在是太好用了。

而且這個編譯器是免費的,不要說怎麼這麼陽春,沒有IDE,基本上寫作大程式, 是沒有這些東西的,寫程式寫到好幾萬行時,那些已經沒有一個清醒的頭 腦重要了。因此要會真正的C功力,要寫真正有用的程式,非gcc莫屬了。 這是一個免費的練習的好軟體。

通常一個編譯過程通常需要4道程序

1.preprocess 先處理那些#ifdef #define這些東西並做一些巨集代換
2.compile 做語意分析,翻譯成組合語言
3.assemble 翻成機器碼與OS有關的格式,做成relocatable obj檔。
4.link 找到symbol(函式,變數名)與程式庫(shared obj)中的副程式 ,做成可執行obj檔(executable obj)。[1]

其中,.h 檔存的就是相關 .c (或 .cpp) 裡面函式的原型 (也叫函式宣告). 而 .c (或 .cpp) 裡面存的是函式的定義.

而在C++中,有個所謂的標準函式庫(STL:Standard Template Library),其跟C主要差別在此就是個Template的概念。標準函式庫裡面各函式的定義早已預先編譯好了, 放在一或多個 .lib 檔裡 (Library 檔是 .obj 檔的總收集). 很多 IDE 或 linker 會自動的使用這些跟編譯器一起配套的, 常用的 .lib 檔. IDE 的專案設定裡有個設定可以關掉這個自動的使用, 如果你關掉的話, 你就會得到許許多多的 linker 錯誤.[2]

標準的C函式庫以及C++的STL可以到C++ Reference來做查詢
http://www.cppreference.com/wiki/


延伸閱讀:gcc參數指令 、 GNU Compiler Collection (GCC) 、 gcc(3.4.6) Optimize-Options

References:
[1]http://www.study-area.org/cyril/opentools/opentools/gcc.html#AEN848
[2]http://blog.yam.com/htshboy/article/13869891

2010年1月19日 星期二

TFTP

TFTP(Trivial File Transfer Protocol,簡單文件傳輸傳輸協定)是TCP/IP傳輸協定族中的一個用來在客戶端機與伺服器之間進行簡單文件傳輸的傳輸協定,提供不複雜、預先配置不大的文件傳輸服務。FTP使用TCP, 但TFTP承載在UDP上,故其提供不可靠的資料流傳輸服務,不提供存取授權與認證機制,使用超時重傳方式來保證資料的到達。與FTP相比,TFTP的大小要小的多。現在最普遍使用的是第二版TFTP(TFTP Version 2,RFC 1350)[1]



TFTP, (Trivial File Transfer Protocol), is a file transfer protocol used file transferring between customer and server. With the functionality of a very basic form of FTP(File Transfer Protocol). TFTP is a simple protocol to transfer files. It has been implemented on top of the User Datagram Protocol (UDP) using port number 69. TFTP is designed to be small and easy to implement, therefore, lacks most of the features of a regular FTP. TFTP only reads and writes files (or mail) from/to a remote server. It cannot list directories, and currently has no provisions for user authentication.

TFTP could be implemented using a very small amount of memory, so was therefore useful for the device that did not have any data storage services, such as our product. It is still used to transfer small amounts of data between hosts on a network



Reference:
[1]http://forum.slime.com.tw/thread87988.html

調整Windows視窗背景顏色

工作需要長時間盯著螢幕看東西,白色背景看久實在是很傷眼...
從網路上找到一個可以調整視窗背景顏色的方法
在桌面上空白處按右鍵->內容->外觀->進階->項目的地方選擇"視窗"->按下"色彩1"按鈕->其他
->在以下的選項輸入數值.色調:85.濃度:123.亮度:205->新增自訂色彩->確定

從此之後視窗背景看起來就會是蘋果綠的顏色,看起來就舒服多了!

2010年1月6日 星期三

ARP Spoofing (ARP欺騙)

ARP Spoofing 攻擊的根本原理是因為Windows電腦中維護著一個 ARP 快取記憶體(讓你可以使用 arp 命令來查看你自己的ARP快取記憶體),並且這個ARP 快取記憶體是隨著電腦不斷的發出ARP請求和收到ARP回應而不斷的更新的, ARP 快取記憶體的目的是把機器的IP位址和MAC位址相互映射,使得IP資料包在乙太網內得順利而正確找到目的MAC位址,然後正確無誤的傳送。 如果你可以藉由發出標準的ARP請求或ARP回應來擾亂或竄改某電腦或路由器內正常的ARP表,而導致該電腦(或路由器)發出的資料包誤傳目的地,或使OSI的第二層乙太網和第三層無法連接,進而癱瘓網路,我們就稱你使用了ARP欺騙攻擊。
舉例說明: 現在有三部機器分別是機器A:IP1/MAC1、機器B:IP2/MAC2、機器C:IP3/MAC3 。現在機器B上的用戶是位駭客企圖干擾機器A或是監視SNIFFER機器A與C之間的通訊,首先他向機器A發出一個 ARP Reply,其中的目的IP位址為IP1,目的(Destination) MAC 位址為MAC1,而源(Source)IP地址為IP3,源MAC地址為 MAC2 。好了, 現在機器A更新了他的 ARP快取記憶體,並相信了IP3地址的機器的MAC地址是 MAC2 。當機器A上的管理員發出一條FTP命令時---ftp IP3,資料包被送到了Switch,Switch查看資料包中的目的地址,發現MAC為 MAC2 ,於是,他把資料包發到了機器B上,因此成功攻擊機器A。現在如果不想影響A和C之間的通信該怎麼辦?僅是sniffer監視兩者之間的通訊,你可以同時欺騙他們雙方,使用 man-in-middle攻擊,便可以達到效果 。

總之本機在傳送資料包之前,會送出一個關於查詢目的IP位址的MAC乙太網廣播包。正常情況下,只有對應目的IP的主機會以一個自己的48位元MAC主機位址unicast包來做回應,並且將該IP與MAC位址對應更新本機內ARP快取記憶體,以節約不必要的ARP通信。如果有一個中毒的電腦或是網內合法授權進行非法活動的駭客,他們是對本地網路具有寫訪問許可權,極可能這樣一台機器就會發佈虛假的ARP請求或回應通訊,欺騙其他電腦或路由器將所有通信都轉向它自己,然後它就可以扮演某些機器,或對資料流程進行修改。這樣就造成arp欺騙攻擊,影響正常的主機通信。

ARP欺騙攻擊分類基本上可以分為刻意的特定目標攻擊,及因為中毒無意的攻擎。這二種的攻擊本意有所不同,
(一)通常是利用網路下載的工具、例如網路翦刀手netcut程式 然後惡意攻擊他人並將攻擊封包偽裝以駕禍於他人,其危害常是少數特定目標,但是由於攻擊者以Unicast 包方式傳送且善於偽裝,因此網路管理員極難找出問題所在,也由於此類型程式下載容易操作簡單,近期於網路中快速擴散,造成網路管理人員極大負擔,也由於目前尚無完整機制快速偵測出此類型規則來源,因此常會使管理人員處理此類問題時疲於奔命,處理耗費時間同時效果不彰,過程中也讓網路管理人員專業能力受到極大的質疑。
(二)通常是使用者中毒後中毒軟體發送ARP欺騙封包以誤導其他人將封包送往錯誤的路徑,導致變像的攻擊使閘道受害或某用戶的遭炴,其主要的目的是造成部份或整體網路的危害

位置解析協定(Address Resolution Protocol)在區域網路中極其重要,他是屬於區域網路同ㄧ子網段內部主機對主機的傳輸或主機與路由器之間傳輸重要的協定。如果局域網內是屬於中大型網路具有多個子網路,那麼防火牆/IPS入侵偵測設備通常被設置在核心路由交換器之後根本沒有機會接觸ARP封包,因此對ARP攻擊束手無策。即使局域網內只有一個網段,防火牆/IPS入侵偵測設備兼具路由器功能也僅能偵測部分ARP廣播包,且大部分的產品如使用作業系統(如Linux)的TCP/IP Socket就難以偵測ARP數據包,因此目前的防火牆/IPS入侵偵測設備幾乎不具有即時防止「欺騙位置解析協定攻擊(ARP Spoofing Attack)」的功能,就算有也僅止於出口控制無法由網路底層第一時間阻隔此類攻擊。 [1]


解決方式之ㄧ:ARP Inspection(ARP 檢查)[2]
CISCO Dynamic ARP Inspection (DAI)在交換機上提供IP地址和MAC地址的綁定, 並動態建立綁定關系。DAI 以 DHCP Snooping綁定表為基礎,對于沒有使用DHCP的服務器個別機器可以采用靜態添加ARP access-list實現。DAI配置針對VLAN,對于同一VLAN內的接口可以開啟DAI也可以關閉。通過DAI可以控制某個端口的ARP請求報文數量。所以,我認為,通過這樣的配置,可以解決ARP攻擊問題,更好的提高網絡安全性和穩定性。


References:
[1]http://forum.icst.org.tw/phpbb/viewtopic.php?t=12725
[2]http://big5.xueeu.com/html/information-3/5586tw.html