n2n实现内网穿透
n2n實現內網穿透
文章目錄
- n2n實現內網穿透
- 簡單介紹
- 搭建過程
- 搭建環境
- Supernode搭建
- Edge搭建
- centos搭建
- windows搭建
- 總結
之前有弄過樹莓派的NAS服務,但是局限于傳輸速度和網絡延遲的問題,所以并沒有用于實踐,項目就暫且擱淺。至此發現了p2p能夠實現端對端的數據傳輸,解決了傳統的服務器中轉傳輸所存在的問題,NAS計劃有了新的突破。
簡單介紹
前面介紹的frp進行反向代理,實現內網穿透,客戶端之間的數據傳輸都需要經過frp服務器中轉,這樣會導致數據傳輸的速度收到服務器的影響。要知道P2P在實現NAT打洞的方面有很大的優勢,如果能夠成功打洞之后,客戶端之間傳輸數據是不經過第三方服務器,而是直接連接,而如果沒有成功打洞,則可以通過第三方服務器進行中轉,進退皆可,可以說是在沒有公網ip的情況下,最好的解決方案。
簡單的介紹一下n2n,這個n2n不是內衣的那個n2n,大家別找錯了(?ω?)。github上介紹說是N2n is a light VPN software which make it easy to create virtual networks bypassing intermediate firewalls.。也就是輕量級的vpn軟件,n2n會試著建立p2p直連協議,如果失敗,會直接使用服務器中轉數據。
frp服務也能實現p2p模式,這里就不多說,自行百度
搭建過程
搭建很簡單,只要搞清楚服務端和客戶端的關系就很容易操作。關系圖如下:
在搭建之前先弄清楚n2n的幾個版本:V1、V2和V2s,sudpernode的使用的版本一定要和Edge的版本一致,否則之間的無法服務之間不能進行連接。這里搭建的使用的V2s。
搭建環境
- 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服務端口 supernode -l 1000supernode 參數
-v:輸出日志
-l:<port> 監聽端口
-f:不進行后臺運行
如果進行debug可以使用 supernode -l 1000 -f -v 實時查看輸出,這里還需要提醒的是,如果開了防火墻的,注意關閉防火墻,開了安全組的,注意開放端口。
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服務 edge -d device0 -c n2n -k Flowerfire -a 10.0.0.1 -l <外網ip>:1000edge 參數說明
-d:device name。虛擬網卡的名稱
-c:community name。社區名
-k:key。密碼
-a:虛擬網卡的ip地址
-l:supernode 的關聯地址。
windows搭建
windows就直接安裝edge客戶端就行。下載地址,如下:
客戶端
n2n_win.zip
由于supernode使用的版本是v2s,軟件n2nguien使用的是v2,所以軟件啟動后無法連接到supernode,這里需要替換一下edge2.exe,替換文件在n2n_win.zip,重命名一下edge_v2.exe,然后進行替換
總結
雖然項目已經搭建起來了,但是并沒有達到我想要的結果,最后測試兩個edge之間數據的傳輸,但是并沒有走p2p協議,網上查了一下,發現是因為nat的問題,p2p對其nat的條件有限制,所以搭建之前先自行檢查一下自身網絡是否符合搭建條件,至于如何檢查我這里就不多說了,因為我也是搭建完成后才發現我的網絡環境不支持p2p (T_T) 。
nat的四種類型自行百度腦補
總結
- 上一篇: Java+spring基于ssm的基于S
- 下一篇: chart.js使用学习——折线图(2: