n2n实现内网穿透
n2n實(shí)現(xiàn)內(nèi)網(wǎng)穿透
文章目錄
- n2n實(shí)現(xiàn)內(nèi)網(wǎng)穿透
- 簡單介紹
- 搭建過程
- 搭建環(huán)境
- Supernode搭建
- Edge搭建
- centos搭建
- windows搭建
- 總結(jié)
之前有弄過樹莓派的NAS服務(wù),但是局限于傳輸速度和網(wǎng)絡(luò)延遲的問題,所以并沒有用于實(shí)踐,項(xiàng)目就暫且擱淺。至此發(fā)現(xiàn)了p2p能夠?qū)崿F(xiàn)端對(duì)端的數(shù)據(jù)傳輸,解決了傳統(tǒng)的服務(wù)器中轉(zhuǎn)傳輸所存在的問題,NAS計(jì)劃有了新的突破。
簡單介紹
前面介紹的frp進(jìn)行反向代理,實(shí)現(xiàn)內(nèi)網(wǎng)穿透,客戶端之間的數(shù)據(jù)傳輸都需要經(jīng)過frp服務(wù)器中轉(zhuǎn),這樣會(huì)導(dǎo)致數(shù)據(jù)傳輸?shù)乃俣仁盏椒?wù)器的影響。要知道P2P在實(shí)現(xiàn)NAT打洞的方面有很大的優(yōu)勢,如果能夠成功打洞之后,客戶端之間傳輸數(shù)據(jù)是不經(jīng)過第三方服務(wù)器,而是直接連接,而如果沒有成功打洞,則可以通過第三方服務(wù)器進(jìn)行中轉(zhuǎn),進(jìn)退皆可,可以說是在沒有公網(wǎng)ip的情況下,最好的解決方案。
簡單的介紹一下n2n,這個(gè)n2n不是內(nèi)衣的那個(gè)n2n,大家別找錯(cuò)了(?ω?)。github上介紹說是N2n is a light VPN software which make it easy to create virtual networks bypassing intermediate firewalls.。也就是輕量級(jí)的vpn軟件,n2n會(huì)試著建立p2p直連協(xié)議,如果失敗,會(huì)直接使用服務(wù)器中轉(zhuǎn)數(shù)據(jù)。
frp服務(wù)也能實(shí)現(xiàn)p2p模式,這里就不多說,自行百度
搭建過程
搭建很簡單,只要搞清楚服務(wù)端和客戶端的關(guān)系就很容易操作。關(guān)系圖如下:
在搭建之前先弄清楚n2n的幾個(gè)版本:V1、V2和V2s,sudpernode的使用的版本一定要和Edge的版本一致,否則之間的無法服務(wù)之間不能進(jìn)行連接。這里搭建的使用的V2s。
搭建環(huán)境
- centos 7
- windows 10
Supernode搭建
#安裝依賴包 yum install subversion gcc-c++ openssl-devel git cmake #下載n2n源碼包 git clone https://github.com/meyerd/n2n.git #編譯 cd n2n/n2n_v2 mkdir build cd build cmake .. make make install #開啟supernode服務(wù)端口 supernode -l 1000supernode 參數(shù)
-v:輸出日志
-l:<port> 監(jiān)聽端口
-f:不進(jìn)行后臺(tái)運(yùn)行
如果進(jìn)行debug可以使用 supernode -l 1000 -f -v 實(shí)時(shí)查看輸出,這里還需要提醒的是,如果開了防火墻的,注意關(guān)閉防火墻,開了安全組的,注意開放端口。
Edge搭建
centos搭建
#安裝依賴包 yum install subversion gcc-c++ openssl-devel git cmake #下載n2n源碼包 git clone https://github.com/meyerd/n2n.git #編譯 cd n2n/n2n_v2 mkdir build cd build cmake .. make make install #開啟edgenode服務(wù) edge -d device0 -c n2n -k Flowerfire -a 10.0.0.1 -l <外網(wǎng)ip>:1000edge 參數(shù)說明
-d:device name。虛擬網(wǎng)卡的名稱
-c:community name。社區(qū)名
-k:key。密碼
-a:虛擬網(wǎng)卡的ip地址
-l:supernode 的關(guān)聯(lián)地址。
windows搭建
windows就直接安裝edge客戶端就行。下載地址,如下:
客戶端
n2n_win.zip
由于supernode使用的版本是v2s,軟件n2nguien使用的是v2,所以軟件啟動(dòng)后無法連接到supernode,這里需要替換一下edge2.exe,替換文件在n2n_win.zip,重命名一下edge_v2.exe,然后進(jìn)行替換
總結(jié)
雖然項(xiàng)目已經(jīng)搭建起來了,但是并沒有達(dá)到我想要的結(jié)果,最后測試兩個(gè)edge之間數(shù)據(jù)的傳輸,但是并沒有走p2p協(xié)議,網(wǎng)上查了一下,發(fā)現(xiàn)是因?yàn)閚at的問題,p2p對(duì)其nat的條件有限制,所以搭建之前先自行檢查一下自身網(wǎng)絡(luò)是否符合搭建條件,至于如何檢查我這里就不多說了,因?yàn)槲乙彩谴罱ㄍ瓿珊蟛虐l(fā)現(xiàn)我的網(wǎng)絡(luò)環(huán)境不支持p2p (T_T) 。
nat的四種類型自行百度腦補(bǔ)
總結(jié)
- 上一篇: Java+spring基于ssm的基于S
- 下一篇: chart.js使用学习——折线图(2: