開發與維運

使用N2N搭建虛擬局域網進行遊戲聯機(服務端及客戶端)

目前主流的格鬥遊戲一般都是採用的P2P方式進行對戰,國內的網絡環境參差不齊,遊戲對戰體驗極差,主流的加速器也僅僅是加速了大廳,對於對局並沒有加速效果.最終在大佬的推薦下找到了N2N!

版本選擇

N2N存在眾多的版本,如v1v2v3v2s,如何選擇適合自己的版本呢?

V1

此版本為官方N2N項目v1版本的修改版,最後一次Commit2017年,目前已被棄用,不建議使用。

V1項目地址:https://github.com/meyerd/n2n/tree/master/n2n_v1

V2

官方N2N項目重啟後,在各路大神的貢獻下,一直在維護並不斷完善的版本,也是目前最常用的版本

V2項目地址https://github.com/ntop/n2nV

V3

官方的另一個新版本,使用人數較少,這裡不多贅述了。

V2S

此版本為官方N2N項目v2版本(v2項目重啟前)的修改版,最後一次commit2018年,極小部分用戶仍在使用,但是此版本確是效果最好的,也是本文選擇的版本。

V2S的優點:

1、更容易直連。

2、建立非中轉的連接以後,關閉中心節點,只要有通訊,連接關係就不會斷。

V2S項目地址https://github.com/meyerd/n2n/tree/master/n2n_v2

已編譯版本下載

lucktu大神收集並整理了網友上傳編譯的可執行版本,包含WindowsLinux(包含ARM)、MacAndroid等。

已編譯版本下載地址: 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文件所在目錄,使用CMDpowershell管理員模式執行以下命令

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 ConePort Restricted Cone,這種情況可以打洞,通過N2N服務器握手以後,雙方的數據不再經過服務端
3.一方為Restricted Cone,另一方為Symmetric NAT,可以打洞,通過N2N服務器握手以後,雙方的數據不再經過服務端
4.一方為端口Port Restricted Cone,另一方為Symmetric NAT,這種情況無法打洞,數據要走N2N服務器中轉
5.雙方都為Symmetric NAT,這種情況也是無法打洞的,數據要走N2N服務器中轉

本文參考:bug俠

本文參考:恩山論壇

Leave a Reply

Your email address will not be published. Required fields are marked *