目前主流的格鬥遊戲一般都是採用的P2P方式進行對戰,國內的網絡環境參差不齊,遊戲對戰體驗極差,主流的加速器也僅僅是加速了大廳,對於對局並沒有加速效果.最終在大佬的推薦下找到了N2N!
版本選擇
N2N
存在眾多的版本,如v1
、v2
、v3
、v2s
,如何選擇適合自己的版本呢?
V1
此版本為官方N2N
項目v1
版本的修改版,最後一次Commit
為2017
年,目前已被棄用,不建議使用。
V1
項目地址:https://github.com/meyerd/n2n/tree/master/n2n_v1
V2
官方N2N
項目重啟後,在各路大神的貢獻下,一直在維護並不斷完善的版本,也是目前最常用的版本。
V2
項目地址:https://github.com/ntop/n2nV
V3
官方的另一個新版本,使用人數較少,這裡不多贅述了。
V2S
此版本為官方N2N
項目v2
版本(v2
項目重啟前)的修改版,最後一次commit
為2018
年,極小部分用戶仍在使用,但是此版本確是效果
最好的,也是本文選擇的版本。
V2S的優點:
1、更容易直連。
2、建立非中轉的連接以後,關閉中心節點,只要有通訊,連接關係就不會斷。
V2S
項目地址:https://github.com/meyerd/n2n/tree/master/n2n_v2
已編譯版本下載
lucktu
大神收集並整理了網友上傳編譯的可執行版本,包含Windows
、Linux
(包含ARM
)、Mac
、Android
等。
已編譯版本下載地址: https://github.com/lucktu/n2n
V2S服務端安裝及運行
前往https://github.com/lucktu/n2n 下載已編譯的V2S
服務端版本(supernood
)並上傳至服務器解壓。
修改文件權限為777
sudo chmod 777 supernood
運行服務端程序
supernode -l 端口號 -f
參數說明
-l 指定監聽的端口
-f 前臺運行(若不加該參數,則為前臺運行)
-u 指定運行所用的UID(可選)
-g 指定運行所用的GID(可選)
-v 輸出比較詳細的log(可選)
服務端如開啟iptables\firewalld\ufw
等防火牆,需要放行supernode
所設置的端口,否則客戶端無法連接,若端口為8888
則按著以下設置。
#firewalld
firewall-cmd --zone=public --add-port=8888/udp --permanent
firewall-cmd --reload
#iptables
iptables -I INPUT -p udp --dport 8888 -j ACCEPT
service iptables save
service iptables restart
#ufw
ufw allow 8888/udp
V2S客戶端使用
前往https://github.com/lucktu/n2n 下載已編譯的V2S
對應客戶端版本(edge.exe
)。
進入edge.exe
文件所在目錄,使用CMD
或powershell
以管理員模式執行以下命令
edge -a 10.10.10.10(使用的內網網關IP(隨意填寫)) -c username(使用的用戶名,連接雙方需保持一致) -k password(使用的密碼,連接雙方需保持一致) -r -l 1.1.1.1:8888(服務器IP及端口)
如之前未安裝過虛擬網卡驅動,則還需要安裝虛擬網卡驅動。
虛擬網卡驅動下載地址:http://build.openvpn.net/downloads/releases/tap-windows-9.21.2.zip
關於N2N的傳輸方案
直連
當你和朋友的網絡環境比較純淨,NAT狀態良好(比如同城市同電信寬帶)的情況下,N2N會在參與方之間建立P2P連接
所有的通信都不會經過服務器,延遲能夠極大程度降到最低
中轉
相反,當參與方網絡環境相對複雜(比如校園網,有多層交換),就無法建立P2P連接,所有的通信都會經過服務器來中轉
中轉模式下,A到B的延遲 ≈ A到服務器的延遲 + B到服務器的延遲
通過NAT
類型解釋傳輸方案
1.雙方中只要有一方是Full Cone,可以直連
2.雙方都是Restricted Cone或Port Restricted Cone,這種情況可以打洞,通過N2N服務器握手以後,雙方的數據不再經過服務端
3.一方為Restricted Cone,另一方為Symmetric NAT,可以打洞,通過N2N服務器握手以後,雙方的數據不再經過服務端
4.一方為端口Port Restricted Cone,另一方為Symmetric NAT,這種情況無法打洞,數據要走N2N服務器中轉
5.雙方都為Symmetric NAT,這種情況也是無法打洞的,數據要走N2N服務器中轉