通过 ICMP 协议实现 Ping Tunnel 建立可穿透网络隧道
Twitter via Ping Tunnel
?
周四 Cola 沒去幼兒園,中午帶著他去 KFC 吃東西。回來的時候小林指著西總布胡同說走這條路回去還是原路返回,他說還是走原路吧!于是我們就騎著電動滑板車經由協和醫(yī)院對面的外交部街西口回家。
Cola 知道這附近就是王府井,有這么幾句對話「爸爸,我發(fā)現王府井這里有很多條路可以回家」,爸爸:「是啊,條條大路通羅馬」,Cola:「條條大路通外交部街」,做為父親的小林肯定了他的答案,覺得這小家伙還真會活學活用。
Facebook for iPhone @HOME
晚上在「NAS 路由挖礦」群,又有一波關于「軟路由器」問題的討論,小林和好友 Hoowa 差點被「軟路由」給整蒙了,我們手頭各種路由器不都是軟件路由器嗎?LEDE 及 OpenWrt 這些項目難道不都是軟路由嗎?
其實完全由硬件實現的 NAT 路由器其實非常少見,一般都會采用可以升級固件的方式來改進功能或協議。因即便純硬件的方案也沒有多少方案在使用,Hoowa 確定少量使用聯發(fā)科NAT、高通DMA硬件方案,由于不靈活幾乎沒有純硬件的實現。
Google via Ping Tunnel
其實以前我們用 FreeBSD 或者 Linux 做路由器,其實也是軟路由,甚至用 Windows 當路由器也很正常,只是性能或功能也許不算很強大。小林理解可以在開放的架構上部署的系統就是軟路由,如一般的電腦或者樹莓派等都可以等,而事實上路由器刷 OpenWrt 本質上也沒區(qū)別。
其實大可以考慮用 Mac mini 來跑跑看效率如何,Hoowa 說主要看網卡芯片在小包轉發(fā)時候的效果怎么樣了確定性能。到底怎樣軟路由好在哪?其實吧,也沒有特別明確的定義,簡單的說,刷微信朋友圈時不卡,搶紅包總能得手,對還有流暢看 YouTube 4K 視頻。劉韌補充道:「科學上網,切來切去太麻煩!有好的解決方案嗎?」。
YouTube for Apple TV @HOME
其實小林前段時間寫的文章就分享過一些方案,只要維護一份 IP 地址列表或者使用網絡流行的功夫網列表即可,國內流量和國際流量自動路由很方便,小林現在隨時 Facebook、Google、Twitter 和 YouTube 豪無障礙。
小林用了三級路由器,注意不是三層路由器。因為中國聯通配了一個很爛的光貓 RG200O_V1A4 還不給管理權限,直接撥號后可以給 IP 機頂盒播放高清電視,還有可以接固話使用,同時還有 Wi-Fi 功能,就是經常搜索無線可以看到 CU_* 開頭的熱點。
Misstar Tools for MiRoute 2
除了聯通的這一級路由器,小林在中間還有一個小米路由器2是刷了開發(fā)版,開啟 SSH 后安裝了 Misstar Tools 俗稱 MT 工具箱,上面有個相對穩(wěn)定可用的科學上網插件可以連接海外服務器,在這一級路由器做了 IP 分流,做到井水不犯河水,你走你的陽光道,我走我的獨木橋。
最后一級無線路由器,是一組6個支持 Mesh 技術的騰達分布式路由 nova MW6,這一級才是解決了最后一公里的問題。喔,不,更準確的說是解決最后幾米的問題,因為 2.4G 網絡幾乎是沒法看高清電影的。而 5G 網絡的距離又有限,如果存儲電影的機器在幾米之外,那么看藍光級別的電影必卡。因此 Mesh 技術自動組網自動優(yōu)化在這個時候才發(fā)揮了真正的作用,小林甚至還為直播用的電視機頂盒額外加了電貓避免走無線不夠流暢。
因此小林的電腦訪問外網,是要經過三個內部的網關才真正到達下一跳,好在內部的時延不是特別慢,以下是 traceroute www.google.com 的效果:
Hoowa 甩了一句 ICMP 協議傳輸,小x 也說過考慮用 ICMP 傳輸,但要測試一下 NAT 的穿透效果。然后小林上網搜索看到好幾款 ICMP Tunnel 的實現,曾經用過 SSH Tunnel、HTTP Tunnel,用過各種 UDP 打洞然后虛擬網卡實現或純 VPN 方案等,方才發(fā)現條條大路通羅馬。
Ping Tunnel 0.72版本更新于2011年,可從http://www.cs.uit.no/~daniels/PingTunnel/ 自行下載源碼編譯,也可以使用 apt-get 在服務器上快速安裝,在 macOS 上系統上可使用 brew 快速安裝。
使用方法非常簡單,在服務器端使用 root 身份,直接執(zhí)行 ptunnel 就可以,當然真正使用可以用 nohup 等掛起在后臺運行,可以加入 -m 參數設置并發(fā)的隧道數。服務器建議搭配 tinyproxy 輔助做為代理服務器則更為理想。
Starting the proxy (needs to run as root):
客戶端使用也要求有 root 權限,-p 為 Ping Tunnel 也就是做為代理的隧道主機,-lp 設置 TCP 監(jiān)聽端口,-da 期望轉到哪臺主機,-dp 相應的端口,-c 可以指定網卡,-m 和服務器相似的并發(fā)隧道,不出意外就開始轉發(fā)了。
Starting a client (also needs root):
And then using the tunnel to ssh to login.domain.com:
官方例子是用 ssh 指定 8000 端口用于轉發(fā)到要登錄的 login.domain.com 主機 22 端口連接 ssh 服務使用,直接用 ICMP 來做隧道的情況下連接另一臺主機。
小林告訴大家一個透明 HTTP 轉發(fā)方法,服務器端不需要做額外的修改,還是同樣的方法,在客戶端這里,8.8.8.8 指隧道主機請自行修改,本地監(jiān)聽 TCP 端口 8080,實際上轉發(fā)到隧道主機本機的 8888 端口上,而 8888 是 Tinyproxy 一款輕量級 HTTP/HTTPS 代理服務器軟件的默認端口,-m 參數指定并發(fā)數,-v 可顯示相應日志的級別。在瀏覽器上指定客戶端的 IP 地址或本機 127.0.0.1 端口設置為 8080 即可透過 ICMP Tunnel 實現科學上網。
# for Server
# for Client
是的,小林親測 ICMP Tunnel 確實可用,條條大路通羅馬,不過這是一條羊腸小道,實在沒有別的路可走的時候才適合派上用場,使用 Google 或Twitter 也許問題不大,使用 Facebook 或 YouTube 就有點吃力了。
粱肇新則表示:通過 ICMP 實現,穿透效果會比 UDP 好,估計它的 TCP?在 ICMP 上實現得比較粗糙。把 Google 的那個 TCP 在 UDP 之上的代碼(QUIC 快速UDP網絡連接)移到 ICMP 上面就會穩(wěn)定很多,速度也會獲得優(yōu)化,估計會快不少。
????哥林多后書? ?13:14? “愿主耶穌基督的恩惠、上帝的慈愛、圣靈的感動常與你們眾人同在!”
【延伸閱讀】
教你輕松在家看YouTube,廢棄小米路由器再利用
Rabbit(Rabb.it),這只兔子讓你自由訪問YouTube和Netflix
Butterfly VPN起死回生成功刷入PandoraBox系統可支持SSR等(Butterfly Traveler 2.0)
智能車就是計算機,無人車就是機器人
使用Resilio Sync輕松構建跨平臺P2P資源共享網絡
繪本推薦《BLOCKCHAIN for babies》
那些年小林用過的下載軟件
中國互聯網歷史上第一個博客
為什么說區(qū)塊鏈是互聯網的補丁?
簡晶的程序人生
域名投資:切忌把家鄉(xiāng)「情懷」當「商業(yè)」嗅覺
一封20多年前來自瀛海威時空的電子郵件
紀念 Web 30 年:說說小林和 Web 的那些事
馬化騰為什么要打破電信網和互聯網的壁壘隔閡
小林和騰訊不得不說的故事(完整篇)
謝謝您點「在看」并「分享」至朋友圈~
總結
以上是生活随笔為你收集整理的通过 ICMP 协议实现 Ping Tunnel 建立可穿透网络隧道的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: web ui 套件_复古UI套件
- 下一篇: lga2066服务器准系统,4094个针