欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

內(nèi)網(wǎng)穿透工具的原理與開發(fā)實戰(zhàn)

2021-03-05    分類: 網(wǎng)站建設(shè)

在我國,由于網(wǎng)民眾多,運營商無法保證為每一個寬帶用戶提供全球唯一的公網(wǎng)IPv4地址。因此很多用戶會發(fā)現(xiàn)通過路由器端查看到的WAN端IP與百度“IP”關(guān)鍵詞所得到的IP不一致,并且前者的IP為一個私有IP。

而還有一些情況下,公網(wǎng)IP比較昂貴,企業(yè)雖然本身也持有少量的獨立的公網(wǎng)IP,但是由于成本限制無法為企業(yè)內(nèi)每一臺

首先通過判斷傳入?yún)?shù)決定當(dāng)前使用何種轉(zhuǎn)發(fā)策略。

然后再判斷傳入?yún)?shù)是否正確,通過正則表達(dá)式等方式驗證IP的合法性以及端口范圍。

通過port2port函數(shù)實現(xiàn)了兩個端口同時監(jiān)聽雙向并且轉(zhuǎn)發(fā)數(shù)據(jù)。

在port2host操作中實現(xiàn)了跳板中轉(zhuǎn)。

在host2host中實現(xiàn)了主動連接打通隧道的功能。

看代碼便可以知道,在Golang中進(jìn)行socket操作的net包要比C語言中的socket.h操作簡單很多。

轉(zhuǎn)發(fā)功能的核心就在于forward函數(shù)部分。

先輸出一個日志說明是對哪兩個連接進(jìn)行雙向轉(zhuǎn)發(fā),然后通過sync包下的WaitGroup實現(xiàn)一個條件阻塞功能,防止在Goroutine還未執(zhí)行完,主線程就已經(jīng)退出了。

然后發(fā)射兩個Goroutine,分別處理連接1到連接2的IO數(shù)據(jù)包拷貝以及連接2到連接1的IO數(shù)據(jù)包拷貝。因為要保證兩個端口間的通信是全雙工的,也就是兩邊同時都要能夠互相交換數(shù)據(jù),所以要用Goroutine來實現(xiàn)這兩個操作的并發(fā)。

而IO數(shù)據(jù)包的拷貝核心代碼在connCopy函數(shù)中,根據(jù)是否要記錄流量日志判斷是否要使用io.MultiWriter這個多路寫數(shù)據(jù)流的函數(shù)。

如果打開日志文件的文件流成功,則通過io.MultiWriter函數(shù)生成一個多路寫入流,這里這個多路寫入流的變量名為w,任何寫入到w這個寫入流的數(shù)據(jù)都會同時寫入先前參與執(zhí)行多路寫入流創(chuàng)建函數(shù)io.MultiWriter的參數(shù)中,在這里參數(shù)為conn1和logFile,即為端口1和日志文件流。

接著調(diào)用io.Copy將第二參數(shù)的讀取流中讀取到的數(shù)據(jù)源源不斷地拷貝到第一個參數(shù)的寫入流中。

這里要注意io.Copy函數(shù)是同步阻塞的,意味著只要連接沒有斷開,那么程序執(zhí)行流將一直卡在這個函數(shù)。如果拷貝出錯,那么io.Copy函數(shù)就會返回,也就是執(zhí)行他下面的代碼。拷貝出錯意味著可能連接已斷開,那么先把寫入流的連接斷掉。

這里要重點注意,為什么是斷開寫入流而不是讀寫流全部斷開呢。因為我們前面發(fā)射了兩個Goroutine,如果盲目全部斷開,將會導(dǎo)致另一個Goroutine中可能還有未寫完的數(shù)據(jù)丟失。具體可以根據(jù)TCP四次揮手來分析。

實際執(zhí)行

如果沒有Golang環(huán)境的朋友可以直接下載編譯好的可執(zhí)行文件,下載地址:https://github.com/cw1997/NATBypass/releases

我們先來看看代碼編譯之后實際運行,上圖左邊為虛擬機(jī)跑的內(nèi)網(wǎng)服務(wù)器,他已經(jīng)設(shè)置了入站規(guī)則,通過直接連接192.168.2.112:3389是無法連上遠(yuǎn)程桌面的。

此時此刻右圖開始通過listen命令監(jiān)聽7777和9999端口。

接著內(nèi)網(wǎng)服務(wù)器再通過slave命令開始雙向連接黑客的

大家可以根據(jù)netstat -an的結(jié)果以及控制臺日志輸出來綜合理解這個過程。

寫在最后

這個工具現(xiàn)在實現(xiàn)的仍然只是簡單的透明傳輸,并且存在諸多問題。比如說本地主動連接內(nèi)網(wǎng)服務(wù)是一開始就預(yù)連接好的,這樣會導(dǎo)致一些服務(wù)如果在連上之后長期沒有數(shù)據(jù)傳輸,會主動斷掉連接,導(dǎo)致公網(wǎng)端偶爾出現(xiàn)無法連接上,要重新斷開重連后才能連上的小BUG,具體在HTTP服務(wù)器要多刷新幾次頁面,遠(yuǎn)程桌面則可能要連接上然后又取消,然后再連才能連上。而且在并發(fā)連接上處理還有一些細(xì)節(jié)沒有做好。并且目前還僅僅支持TCP連接的轉(zhuǎn)發(fā)等等,當(dāng)然要實現(xiàn)UDP的轉(zhuǎn)發(fā)也不是很困難稍加改進(jìn)即可。大家也可以點個star,提個pull request一起來改進(jìn)這些問題。目前相關(guān)的開源項目也有做的比較成熟的,比如說Golang寫的ngork,大家也可以參考參考。

當(dāng)前文章:內(nèi)網(wǎng)穿透工具的原理與開發(fā)實戰(zhàn)
當(dāng)前網(wǎng)址:http://aaarwkj.com/news27/104327.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供自適應(yīng)網(wǎng)站網(wǎng)站制作、企業(yè)建站商城網(wǎng)站、Google、電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

營銷型網(wǎng)站建設(shè)
偷拍丝袜美腿在线观看| 国产精品国产三级国产不卡| 亚洲精品欧美综合第四区| 婷婷六月开心激情五月| 国产三级黄色片免费看| 日本亚洲中文字幕无吗| 在线免费观看国产不卡| 亚洲一二三无人区是什么| 日韩中文字幕一区二区不卡 | 精品少妇人妻av蜜桃| 国产产品在线免费看91| 大神厕所偷拍美女尿尿| 精品人妻一区二区四区| 蜜桃av噜噜一区二区三| 麻豆国产传媒69国产| 日韩欧美啪啪一区二区| 亚洲成人av日韩在线| 国内精品av在线观看| 色综合天天综合天天更新| 青青草原在线免费视频| 亚洲成人有码在线观看 | 亚洲专区综合红桃av| 午夜理论片在线观看有码| 日韩有码在线中文字幕| 中国女人内射91熟女| 日韩精品视频高清在线观看| 婷婷六月亚洲中文字幕| 精品一区2区3区4区| 亚洲熟女内射特写一区| 精品亚洲一区二区三区四| 欧美日韩精品久久影院| 日本精品三级一区二区视频| 久久精品国产亚洲七七| 粉嫩在线一区二区懂色| 亚洲国产日韩精品一区二| 中文字幕一区中出爽亚洲| 超碰免费在线公开97| av免费在线观看网页| 亚洲老熟女老妇老女人| 人妻一本久道久久综合鬼色| 亚洲综合国产一区二区|