最近都在跟網路通靈,不免最後又來跟 rp_filter 打交道,因此今天這篇文章來幫大家複習一下 rp_filter 這個系統參數
設定位置: /proc/sys/net/ipv4/conf/$iface/rp_filter
介紹:
rp_filter 全名為 Reverse Path Filtering,是一個 Linux Kernel 用來過濾封包的機制。當封包到達一個網卡時, kernel 會根據該封包的 source IP 去進行反向(Reverse Path)檢查,當系統檢查當前的 routing table 確認該 source IP 是可以轉發的,且轉發出去的網卡與收到的網卡是一致時,封包就可以正確地接收,反之則會丟棄。
目前常見系統上 rp_filter 有三種數值可以設定
0: 請關閉 rp_filter 的功能,請不要對封包的來源進行檢查,一切都收起來。
1: 如前段所述,嚴格的針對 source IP 進行反向查找
2: (1)的不嚴格版本,一樣會對 source IP 進行反向查找,但是反向的網卡不需要與收到的網卡一致,只要確認該封包可以出去即可
大部分的情況下不建議關閉 rp_filter, rp_filter 可以用來驗證 source IP 是否合法,對於抵擋 Spoffing IP 這類型的攻擊可以起到一定的效用。
此外如果有安裝 Calico CNI 的也要注意一下這個設定,因為這種基於 routing 的 CNI 解決方式很容易會因為 rp_fitler 導致功能不正常。
https://www.theurbanpenguin.com/rp_filter-and-lpic-3-linux-security/
同時也有1部Youtube影片,追蹤數超過3萬的網紅#ミニマリストライフ,也在其Youtube影片中提到,こんにちは、[解放軍]じへいの動画解放軍です。今日は『ビジネスワイヤ』からの新着情報をお届けします。 AccessAgility®の『BridgeChecker』はノートパソコンのLAN端子にケーブルを接続すると不要な無線LANの電波を自動的に止めるユーティリティソフトウェアです。 このことにより...
ip routing 在 矽谷牛的耕田筆記 Facebook 的精選貼文
#SDN閒談
今天來簡單跟大家科普聊聊所謂的 SDN(Software-Defined Networks) 軟體定義網路的簡單概念,到底其代表什麼,以及在什麼情況下我們需要去理或使用它
SDN 一詞的發展最早可以追朔到 2008 年由 Nick 教授所發表的論文,該論文中設計了一種嶄新的網路協定,稱為 Openflow, 期望透過 Openflow 這種協定來定義該如何傳輸封包,簡單的說就是「看到什麼樣的內容/標頭,就做什麼事情」。
SDN 的重大核心概念就是透過「軟體」去「定義」你的「網路行為」,系統中會有一個控制器,該控制器透過一種集中化的方式以上帝視角去窺視整個網路拓墣,並基於此架構下去進行網路封包傳輸的設計,譬如「我想要讓符合特定規則的封包可以通過,請幫我設定網路裝置A,B,C,D 來符合我需求」
發展了多個年頭後, Openflow 實際使用上遇到瓶頸,對於純軟體概念來說, OpenFlow 可以使用,但是要將這個精神給套用到硬體交換機上來達到又快速,又彈性的功能時就會遇到挑戰,因此後續又有新的技術誕生,P4(Programming Protocol-Independent Packet Processors),透過這套技術漂亮的解決過往 Openflow 太過制式化的問題。
SDN 的領域中,也有很多的相關開源專案,從常見的 OpenVswitch, ONOS, OpenDaylight 到 Stratum, SONIC 等都從不同面向來搭建出這樣的網路架構
但是,我自己認為 SDN 就是一個精神,你可以談廣義的 SDN,也可以談狹義的 SDN,有些人會認為 2008 以後所談的概念與技術才有資格稱為 SDN,也有人認為只要我能夠用軟體去控制這些封包傳輸,我就是 SDN,譬如我自己寫一套軟體去大量控管多節點的 iptables 來實現多節點的防火牆設計。
這種情況下,說是「軟體定義網路」也通,只是要如何解讀就是每個人信仰的不同罷了,其實沒有必要爭論誰才是正統,
SDN 就如同 DevOps, CI/CD 等概念一樣,都有一個參考的文化與概念,但是並沒有一定的實作方式,結果論來說就是,整個網路架構如何打造,對於開發者,對於維運者如何使用而已。
從我自己的角度出發,去看待這個產業反而最大的一個議題是,要同時找到會寫程式也有網路概念的人真的很難。
過往仰賴廠商解決方案的人,可能非常熟稔各自的操作模式,譬如各式各樣的 CLI 操作介面。
然而當這一切生態系被打破時,任何人都能夠透過撰寫程式來控管,用你習慣的程式語言來控制整個網路功能,譬如決定什麼樣的封包從哪個網孔出去,修改什麼樣標頭內容,又或是要如何解讀這些封包。要同時擁有寫程式以及網路概念就變得非常困難。
這邊的網路並不是單純大家熟悉的 TCP/IP 而已,實際上有非常多的概念與面向,譬如 Segment Routing, BGP/OSPF, VXLAN/GRE/GTP, VLAN/QINQ, MLAG/Bonding,甚至更複雜的 Broadband (OLT, ONU..), Mobile Core (LTE/5G)... 等
如果你對於 SDN 這個概念有興趣,非常推薦由 Open Networking Foundation (開放網路基金會) CTO 與他人一同撰寫的電子書,從系統化的角度帶你認識 SDN 的發展,從過去到未來
https://sdn.systemsapproach.org/index.html
ip routing 在 Taipei Ethereum Meetup Facebook 的精選貼文
📜 [專欄新文章] libp2p — 模組化的點對點網路協議
✍️ Ken Lin
📥 歡迎投稿: https://medium.com/taipei-ethereum-meetup #徵技術分享文 #使用心得 #教學文 #medium
libp2p — 模組化的點對點網路協議
可重用的輪子
『不要重複造輪子』,是在軟體開發時,經常被引用的一句話。
這句話隱含的意義是,盡可能的去重用(reuse)其他人分享的開發成果,因為很多的經驗及知識,就是在這樣的重用過程中,逐漸的被累積及驗證。而許多被廣泛重用的輪子,往往就這樣成為某個特殊領域中共用的基石,進而加速了其他專案開發時的迭代過程。
本次CrossLink Taipei 2019的研討會中,也出現了一個這樣的輪子,那就是libp2p專案。
分佈式應用的共業
傳統的中心化網路架構當中,每一個參與的節點,其Server與Client的角色是確立的,因此封包在路由傳遞時也相對單純,對於開發者而言,大家也都非常熟稔這樣的架構。
而在分佈式的網路架構當中,每一個節點都同時肩負了Server與Client的角色(或者換一個說法,不再有Server-Client的區別),再加上各種異質的網路環境與網路通訊協議,開發者往往要耗費許多資源來解決這些網路底層的通訊問題,例如NAT穿透、加密傳輸等等。
如果這些難題,一再的困擾著不同的開發者,那麼有沒有一種可能,可以把這些難題所需要的解決方案集合在一起,方便大家去重複使用並改進?libp2p的出現,便是這個問題的答案。藉由高度模組化的設計,開發者可以方便的取用自己所需要的部分模組,並在現有的模組上疊加自己額外的應用邏輯,以適應各種不同的應用場景。
由於其高度模組化的特性,使得libp2p受到許多知名專案的青睞,紛紛使用了libp2p作為其底層網路框架,例如Ethereum 2.0、Palkadot、Filecoin、0X等等。
libp2p原先是IPFS專案中的網路框架,後來抽出變成一個獨立的專案。
libp2p的特色
以下所提到的各種libp2p特色,很多都以模組的形式被實作,開發者可選擇適合的模組,進而開發出符合其應用場景的服務。
具有兼容性的定址方式
libp2p使用了類似檔案路徑的概念(PLAN9 Ubiquitous Filesystem),為每一個行程(process)定義了專屬的位址。這種定址方式,可以增加行程定址的兼容性,假設某個行程改用了新的網路傳輸協議(例如從ipv4改為bluetooth),可以很方便的以相同的定址結構去表達新的位址。
以目前常見的ipv4位址為例,假設某個節點是以ip 1.2.3.4以及port 80提供了服務,在libp2p中其位址可表示為/ip4/1.2.3.4/tcp/80。
支援多種傳輸協議
針對目前常見的傳輸協議,libp2p也實作了相對應的模組,例如:TCP、QUIC、WebSockets、WebRTC。在未來,libp2p預計還會支援Bluetooth、uTP、UDP,或者目前尚未發明的新協議(歸功其兼容性的定址方式)。
可升級的傳輸協議
在libp2p的設計當中,一個行程與另一個行程建立連線時,首先會以某個底層協議作為原始連線(raw connection,例如TCP協議)。一旦原始連線建立完畢,兩個行程可以進一步依據他們的需求進行協調,決定是否將原始協議升級(upgrade)為另一個協議連線(capable connection),例如將單純的TCP協議升級為具有加密性質的連線。
多路複用
有時候在兩個節點之間建立一個連線,需要不少的成本(像是需要穿透NAT、經過多次的交握確認後才能建立連線),如果能夠重複使用已經成功建立的連線,兩個節點之間就能以更有效率的方式實現異質的資料傳輸。舉例來說,兩個節點可以在同一個TCP連線上,進一步的產生不同的串流(stream)。
協議協調
由於libp2p支援多種傳輸協議,並且能夠多路複用,兩個節點在互相傳輸資料之前,便需要有一套機制去互相溝通,確定兩者要以哪種協議進行資料的傳輸,這便是協議協調。
目前的協議協調機制是multiselect 1.0,libp2p接下來會將協議協調機制升級為更有效率的multiselect 2.0。
節點發現與訊息傳播
在建立分佈式應用的時候,如何有效率的尋找節點(節點發現)是建立一切服務的起點,能夠找到節點,才能進一步和節點建立連線,接著才能建構其上的應用。libp2p提供了數種節點發現的實作(DHT、Randezvous、mDNS等等)。
除了節點發現,如何進行訊息傳播也是建立一個分佈式應用必須考慮的事情。在這邊要特別提起PubSub這個訊息傳播模式。這是一種類似MQTT的發布-訂閱(Publish-Subscribe)模式,允許訊息以M-to-N的方式在網路中傳遞,這種傳播模式是非同步(asynchronous)。和MQTT不同的是,libp2p是分散式的,並不需要一個中心化的broker來負責訊息的路由(routing)。
目前PubSub提供數種訊息路由演算法,包括floodsub、gossipsub等等。在Ethereum 2.0也將會採用PubSub作為其訊息傳播模式。
NAT穿透及中繼
現今的網路架構中,NAT無所不在,而這也是點對點連線時最大的困擾。libp2p實作了NAT穿透,而對於那些無法進行NAT穿透的節點,libp2p另外提供了中繼技術(relay)來作為補強方案。
結語及後記
以上所描述的libp2p特色,是在參與CrossLink Taipei 2019研討會時,印象較為深刻的幾點,尚有其他特色沒有節錄於本文之中。除此之外,各項特色的描述多半以重點式的形式紀錄,很多細節仍有待深入挖掘。
在撰寫本文時,筆者參考了許多前人的貢獻,其中有不少是來自於CrossLink Taipei 2019 的線上共筆,謝謝這些參與共筆的志工。除此之外,也要特別感謝Taipei Ethereum Meetup的朋友Kevin,提供了不少寶貴的建議以及實作經驗。
參考資料
https://segmentfault.com/a/1190000015410582
https://zhuanlan.zhihu.com/p/33535984
https://ethfans.org/posts/why-libp2p
https://medium.com/r/?url=https%3A%2F%2Fgithub.com%2Fmultiformats%2Fmultiaddr
libp2p — 模組化的點對點網路協議 was originally published in Taipei Ethereum Meetup on Medium, where people are continuing the conversation by highlighting and responding to this story.
👏 歡迎轉載分享鼓掌
ip routing 在 #ミニマリストライフ Youtube 的最佳解答
こんにちは、[解放軍]じへいの動画解放軍です。今日は『ビジネスワイヤ』からの新着情報をお届けします。
AccessAgility®の『BridgeChecker』はノートパソコンのLAN端子にケーブルを接続すると不要な無線LANの電波を自動的に止めるユーティリティソフトウェアです。 このことにより
・消費電力の削減
・セキュリティリスクの軽減
・無線と有線の二重接続によるトラブル
を防止できます。 WindowsとMacOS版の二種類が提供されています。
商品紹介 http://accessagility.com/products/bridgechecker.html
Win http://store.accessagility.com/bridgechecker
Mac http://itunes.apple.com/us/app/bridgechecker/id477620697?ls=1&mt=12
試用 http://accessagility.us1.list-manage.com/subscribe?u=7058b2be4d915e34f2cfeb132&id=f6afc13e6f
原文
Disable Wireless When Connected to LAN Using BridgeChecker by AccessAgility®
BridgeChecker is a Windows and Mac OS utility that can automatically disable/enable wireless and wired interfaces
VIENNA, Va.--(BUSINESS WIRE)--AccessAgility LLC, creators of BridgeChecker, announced the immediate availability of version 1.5 of BridgeChecker for Microsoft Windows and version 1.1 of BridgeChecker for Mac OS.
Disable Wireless When Connected to LAN - BridgeChecker is a Windows and Mac OS utility that can automatically disable/enable wireless interfaces. Whenever your computer is connected to an Ethernet port and the link state is good, the utility can automatically turn off the IEEE 802.11 wireless network interface. This conserves IP address allocation, reduces security risks, resolves dual interface routing issues, and prolongs battery life. BridgeChecker is available for Windows 7, Windows Vista, Windows XP and Mac OS 10.6 and above.
Pricing and Availability - BridgeChecker is priced based on the number of hosts. The Windows version is licensed in 10, 100, 1000, and enterprise license bundles. The Mac OS version is available on the Mac App Store and directly from AccessAgility.
Full Featured Trial Version - Just looking to kick the tires a bit? Subscribe to the product email list to receive download information or contact AccessAgility sales at sales@accessagility.com.
Supporting Resources
Product Website: BridgeChecker -- Disable Wireless When Connected to LAN
Buy Windows Version: BridgeChecker for Windows
Buy Mac OS Version: BridgeChecker for Mac OS
BridgeChecker Trial: Subscribe To Download
Twitter: @accessagility
About AccessAgility - AccessAgility is an information technology (IT) solutions company with offices in the Washington, DC metro area. AccessAgility was founded in 2008 and is privately funded.
AccessAgility and the AccessAgility logo are registered trademarks of AccessAgility LLC. BridgeChecker and the BridgeChecker logo are trademarks of AccessAgility LLC. All other trademarks are the property of their respective owners.
![post-title](https://i.ytimg.com/vi/9GfMQuU5YEM/hqdefault.jpg?sqp=-oaymwEbCKgBEF5IVfKriqkDDggBFQAAiEIYAXABwAEG&rs=AOn4CLCAp5cEOkPuKlo0dp_KVDUcTBt3-g)
ip routing 在 IP Routing - CCH 的推薦與評價
路由器會得知目的地IP,藉由路由表決定下一跳的路徑,接著轉發封包。 ... R1#show ip route Codes: L - local, C - connected, S - static, R - RIP, ... ... <看更多>