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