官方服務器聯(lián)機卡頓掉線?來用n2n組建遠程局域網(wǎng)來愉快玩耍吧!

此文章僅為對一次問題解決經(jīng)歷的記錄,旨在以后遇到相同問題時能快速找到解決方案,并非權威教程。
感謝?@醉舞傾歌?的測試協(xié)力!
一、起因
今天和朋友一起聯(lián)機游玩《神界:原罪2》,被steam的狗屎網(wǎng)絡狠狠折磨了一晚上。不是掉線就是連接失敗,到最后也沒能成功進行游戲。偶然發(fā)現(xiàn)這個游戲是支持局域網(wǎng)聯(lián)機的,這樣就不需要通過不穩(wěn)定的官方服務器來聯(lián)機了。

經(jīng)過查找資料,我選擇了n2n這個開源的遠程局域網(wǎng)方案。

多個邊緣節(jié)點客戶端通過架設在公網(wǎng)上的超級節(jié)點實現(xiàn)數(shù)據(jù)互通,組成局域網(wǎng)。既然原理上可行,那就直接行動。
二、準備工作
所需硬件如下:
擁有公網(wǎng)IP的服務器一臺
三、下載n2n
項目地址
在release中下載適合自己服務器系統(tǒng)的安裝包
筆者使用的是64位Ubuntu,所以下載這個

如果服務器是Windows系統(tǒng),則從下面鏈接選擇并下載別人預編譯好的win版二進制文件

四、安裝并配置supernode
安裝完成后更改配置文件

將-p后面的數(shù)字修改成你想要使用的端口并保存
五、supernode的啟動與關閉
啟動后,通過查看狀態(tài)能看到這樣的log沒有Error,就說明啟動成功了

啟動后不要忘記到服務器控制臺的安全組或防火墻開啟你指定的TCP和UDP端口

六、下載n2n客戶端
從這個地址選擇并下載Windows edgenode客戶端到你要聯(lián)機的電腦上
沒錯,和上面Windows版supernode地址一樣,因為supernode服務端和edgenode客戶端是同在一個壓縮包里的

然后解壓到你常用放軟件的目錄(筆者是D:\n2n)
解壓后應該有這樣四個文件

需要用到的就是edge.exe
七、編寫啟動腳本
在解壓目錄新建一個名為 start.cmd 的文本文件
編輯內(nèi)容
將其中的方括號按需求填寫
舉個例子,假如我想建立一個名為aquadeer的局域網(wǎng),密碼為aquadeer123,supernode公網(wǎng)IP為101.101.101.101,開放端口為7777
聯(lián)機電腦1(edgenode1)你想讓他的局域網(wǎng)IP為192.168.100.1,則內(nèi)容應為
聯(lián)機電腦2(edgenode2)你想讓他的局域網(wǎng)IP為192.168.100.2,則內(nèi)容應為
有多臺電腦就以此類推
保存好腳本后,右鍵,以管理員身份運行(非常重要?。?/p>
運行后如果能看到這樣的信息
則說明連接成功。
使用ping命令來測試局域網(wǎng)是否互通
沒有丟失則組網(wǎng)成功。
接下來就能在游戲里愉快聯(lián)機了。
游玩結束后關閉edgenode,只需要在cmd窗口按ctrl+c等待一會就能退出了。
記得一定不要直接叉掉,直接叉掉可能會導致下次啟動報錯
Q&A
Q:啟動edgenode的時候報錯
怎么辦?
A:這說明你上次關閉的時候是直接叉掉的,沒有用ctrl+c的方式正常退出。猜測可能是因為supernode沒有收到退出消息所以并未釋放掉本機的MAC地址和IP,導致第二次啟動edgenode時MAC地址和IP被占用,鑒權失敗。解決方案有三:
1、重啟服務端
2、稍等幾分鐘后再連接
3、在服務端的 supernode.conf 配置文件末尾加上 -M 參數(shù)來禁用MAC地址校驗

Q:我使用n2n gui和happynet這兩個n2n客戶端為什么無法連接
A:可能是因為n2n gui和happynet并未支持到3.0的版本所以連接失敗。教程中使用的supernode服務端為3.0,相較于2.0改了很多東西。所以還是乖乖用3.0的edgenode連接吧