內(nèi)網(wǎng)穿透 - 搭建L4D2服務(wù)器(Linux FRP)
1 前言
內(nèi)網(wǎng)穿透可用于解決搭建游戲服務(wù)器時沒有公網(wǎng)ip的問題,l4d2是以UDP協(xié)議傳輸游戲數(shù)據(jù)的,因此使用內(nèi)網(wǎng)穿透工具進行UDP穿透即可
本文主要內(nèi)容分為兩大部分,第一部分(即第2章節(jié))是使用github上的開源項目frp配合云服務(wù)器實現(xiàn)內(nèi)網(wǎng)穿透,第二部分(即第3章節(jié))是使用櫻花FRP(SakuraFrp)提供的免費隧道實現(xiàn)內(nèi)網(wǎng)穿透
第一部分(云服務(wù)器+frp)不具有實用性,因為市面上的大多數(shù)的云服務(wù)器性能都足夠運行l(wèi)4d2游戲服務(wù)器且自帶公網(wǎng)ip;第二部分(使用SakuraFrp)的穿透效果也很難令人滿意,畢竟免費的內(nèi)網(wǎng)穿透工具不能保證網(wǎng)絡(luò)的穩(wěn)定性,而這一點對游戲體驗影響很大,使用付費的內(nèi)網(wǎng)穿透工具又不如直接加錢買云服務(wù)器。但是,如果有一臺性能很弱但網(wǎng)絡(luò)很好的云服務(wù)器就可以用到第一部分的方法;如果能找到性價比很高的內(nèi)網(wǎng)穿透工具的話也可以使用第二部分的方法
傳送門:
在CentOS?7系統(tǒng)下搭建L4D2服務(wù)器的方法:點擊跳轉(zhuǎn)
在Debian-11.5系統(tǒng)下搭建L4D2服務(wù)器的方法:點擊跳轉(zhuǎn)
注:
本文初版是含有csgo的,但經(jīng)測試csgo不支持frp技術(shù)進行內(nèi)網(wǎng)穿透,所以本文于2023.2.28刪去了csgo相關(guān)內(nèi)容。csgo作為競技性很強的射擊游戲,通過內(nèi)網(wǎng)穿透總會大大增加游戲延遲從而影響游戲體驗,因此還是建議使用直連csgo服務(wù)器的方式游玩

2 云服務(wù)器+frp 實現(xiàn)內(nèi)網(wǎng)穿透
2.1 準備工作
2.1.1 一臺云服務(wù)器(自帶公網(wǎng)ip),安裝CentOS_7.x x64版本的系統(tǒng)
注:
① 假設(shè)云服務(wù)器的公網(wǎng)ip為:106.123.123.123
②?不是必須要裝CentOS系統(tǒng),在常見的linux系統(tǒng)下frp的使用方法都一樣
2.1.2?一臺電腦,作為l4d2的游戲服務(wù)器,安裝Debian_11.5?x64版本的系統(tǒng)
注:
① 假設(shè)游戲服務(wù)器的內(nèi)網(wǎng)ip為:192.168.0.111
②?不是必須要裝debian系統(tǒng),在常見的linux系統(tǒng)下frp的使用方法都一樣,在CentOS系統(tǒng)下也可以搭建l4d2游戲服務(wù)器
2.1.3 一臺能玩l4d2的電腦,作為玩游戲的設(shè)備
2.1.4 從github下載最新版的frp安裝包,選擇64位的linux版
frp下載網(wǎng)址:https://github.com/fatedier/frp/releases
當(dāng)前最新版本號為0.46.0,下載frp_0.46.0_linux_arm64.tar.gz
為求方便,將解壓后的文件夾重命名為frp,復(fù)制為兩份,一份傳到CentOS系統(tǒng)的合適位置,另一份傳到debian系統(tǒng)的合適位置
假設(shè)CentOS里的路徑為/home/steam/frp,debian里的路徑是/home/aaa/frp
注:
① 路徑里的steam和aaa都是linux系統(tǒng)的用戶名,不是指V社的steam游戲平臺
② frp文件夾中,文件名帶c的是frp客戶端所需文件,文件名帶s的是frp服務(wù)端所需文件
因此CentOS這邊刪除frpc、frpc.ini、frpc_full.ini,保留frps、frps.ini、frps_full.ini、LICENSE
而debian這邊刪除frps、frps.ini、frps_full.ini,保留frpc、frpc.ini、frpc_full.ini、LICENSE
2.2 配置frp服務(wù)端
frps_full.ini中展示了frp所有可用的配置項,相當(dāng)于frp的使用說明書,我們從中挑選出需要的配置項寫到frps.ini中即可
將frps.ini修改為以下內(nèi)容(#代表注釋內(nèi)容,可以不寫)?
注:
① 配置中使用的7000、7500端口號,以及令牌、用戶名和密碼,都可以根據(jù)個人喜好進行修改,為安全起見不建議用默認的參數(shù)
② 配置中使用到的兩個端口號,在CentOS的防火墻設(shè)置中要開放對應(yīng)的端口的tcp協(xié)議,這點非常重要
2.3 配置frp客戶端
frp的客戶端和l4d2的服務(wù)器端都安裝在debian系統(tǒng)中,與frp服務(wù)端的配置方法相同,需要將frpc.ini修改為以下內(nèi)容(#代表注釋內(nèi)容,可以不寫)?
注:
① 配置中的端口號7000和令牌要與frp服務(wù)端保持一致
② 內(nèi)網(wǎng)ip可以寫路由器分配的ip,例如:192.168.0.111,也可以寫通用的127.0.0.1
③ local_port是否是27015,這個取決于搭建l4d2服務(wù)器時是否有指定端口號,沒有指定的話就填默認的27015。在debian的防火墻設(shè)置中一定要開放這個端口的tcp和udp協(xié)議,這點非常重要
④ remote_port就是玩家連接游戲服務(wù)器時要用的端口號,它會指向內(nèi)網(wǎng)中的local_port端口,因此這個6000可以按個人喜好修改,但在CentOS的防火墻設(shè)置中一定要開放這個端口的tcp和udp協(xié)議,這點非常重要
2.4 啟動frp服務(wù)端
在CentOS中,打開frp所在路徑,命令:cd /home/steam/frp
啟動frp服務(wù)端,命令:./frps -c frps.ini
關(guān)閉方法:鍵盤【Ctrl+C】
2.5 啟動frp客戶端
在debian中,打開frp所在路徑,命令:cd /home/aaa/frp
啟動frp服務(wù)端,命令:./frpc -c frpc.ini
關(guān)閉方法:鍵盤【Ctrl+C】
2.6 檢查udp穿透是否成功
在任意能聯(lián)網(wǎng)的瀏覽器中打開frp的網(wǎng)頁版管理端口,網(wǎng)址:http://106.123.123.123:7500
輸入用戶名和密碼(見本文2.2章節(jié)的配置信息)
網(wǎng)頁左側(cè)點擊Proxies,再點擊UDP,右側(cè)status顯示online即代表穿透成功
2.7 日常使用
2.7.1 按照本文2.4和2.5章節(jié)分別啟動frp服務(wù)端和客戶端,再按本文2.6章節(jié)所述檢查udp穿透是否成功
注:可以在網(wǎng)上搜索CentOS系統(tǒng)下將frp設(shè)置為開機自啟動以及后臺保持運行的方法
2.7.2?在debian系統(tǒng)中啟動l4d2服務(wù)器
2.7.3 任意玩家都可在l4d2的游戲控制臺輸入connect 106.123.123.123:6000加入游戲
注:內(nèi)網(wǎng)穿透的本質(zhì)就是將玩家電腦向106.123.123.123:6000發(fā)送的游戲數(shù)據(jù)轉(zhuǎn)發(fā)到內(nèi)網(wǎng)游戲服務(wù)器192.168.0.111:27015,(簡化流程:【玩家電腦】-->【云服務(wù)器CentOS】-->【游戲服務(wù)器Debian】),因為中間多了云服務(wù)器的轉(zhuǎn)發(fā)環(huán)節(jié),玩游戲時的ping通常會比較高

3?SakuraFrp 實現(xiàn)內(nèi)網(wǎng)穿透
3.1 準備工作
3.1.1?一臺電腦,作為l4d2的游戲服務(wù)器,安裝Debian_11.5?x64版本的系統(tǒng)
注:
① 假設(shè)游戲服務(wù)器的內(nèi)網(wǎng)ip為:192.168.0.111
②?不是必須要裝debian系統(tǒng),在常見的linux系統(tǒng)下SakuraFrp的使用方法都一樣,在CentOS系統(tǒng)下也可以搭建l4d2游戲服務(wù)器
3.1.2?一臺能玩l4d2的電腦,作為玩游戲的設(shè)備
3.1.3 注冊SakuraFrp賬號
官網(wǎng)網(wǎng)址:https://www.natfrp.com/

注冊后打開管理面板,點擊網(wǎng)頁上方菜單【用戶】-【實名認證】,需要支付1元購買一次實名認證資格,具體流程參考SakuraFrp官方文檔:https://doc.natfrp.com/#/faq/realname
3.2 創(chuàng)建隧道
打開SakuraFrp的管理面板上方菜單【服務(wù)】-【隧道列表】,按下圖所示創(chuàng)建一條免費隧道

注:圖中本地IP指的是l4d2游戲服務(wù)器的內(nèi)網(wǎng)ip,例如:192.168.0.111
創(chuàng)建完成后,查看配置文件,如下圖所示

然后在彈出的配置文件窗口,點擊【下載配置】,得到一個frpc_xxxxxxx.ini文件
3.3 下載SakuraFrp客戶端
打開SakuraFrp的管理面板上方菜單【服務(wù)】-【軟件下載】,按下圖所示流程選擇合適的客戶端軟件,下載得到一個frpc_linux_amd64文件

在debian系統(tǒng)的路徑/home/aaa/下新建一個文件夾存放SakuraFrp,命令:mkdir /home/aaa/sakura-frp
注:此處的aaa是linux系統(tǒng)的用戶名,要將路徑里的steam改為你自己的服務(wù)器的用戶名
使用Sftp、WinSCP等工具將frpc_linux_amd64傳輸?shù)絛ebian的sakura-frp文件夾中,同時把配置文件frpc_xxxxxxx.ini也傳輸?shù)?/span>debian的sakura-frp文件夾中
3.4 開啟內(nèi)網(wǎng)穿透
通過Xshell、putty等終端工具連接到debian,打開sakura-frp文件夾,命令:cd /home/aaa/sakura-frp
然后啟動SakuraFrp客戶端,命令:./frpc_linux_amd64 -c?frpc_xxxxxxx.ini
啟動成功后的效果如下圖所示

關(guān)閉隧道的方法:鍵盤【Ctrl+C】
3.5 啟動游戲服務(wù)器
再打開一個新終端窗口,啟動l4d2游戲服務(wù)器
3.6 玩家連接游戲服務(wù)器
玩家在l4d2的游戲控制臺輸入:connect 43.249.193.55:xxxxx
注:此處43.249.193.55:xxxxx是本文3.4章節(jié)圖中紅框圈出來的ip和端口號

4 總結(jié)
????? ?對于現(xiàn)實中在一起的玩家來說,找一個電腦或手機打開熱點功能,玩家連上熱點后組成局域網(wǎng)進行游戲是最方便的;如果資金充足,目前騰訊、阿里、華為這些都有新用戶特惠,性能弱一點的輕量云服務(wù)器也能勉強滿足需求,內(nèi)網(wǎng)穿透終究不是最佳解決方案
???????以我個人為例,我的云服務(wù)器是在廣州而我人在北方,直連云服務(wù)器就有80ms延遲,使用云服務(wù)器+frp進行內(nèi)網(wǎng)穿透后就是雙倍延遲,頂著160ping玩射擊游戲 emmm……使用SakuraFrp提供的免費隧道進行udp穿透,游戲延遲在150-900ping之間波動,用了兩次都是沒超過10分鐘就因為網(wǎng)絡(luò)波動斷開與服務(wù)器的連接,至于付費版的隧道還沒有體驗過
