如果你想把家里的電腦當(dāng)做服務(wù)器用趴久,做一個(gè)網(wǎng)站或者游戲服務(wù)器什么的运提,肯定會遇到一個(gè)問題:由于沒有公網(wǎng)IP苍在,而且有家里的路由器把關(guān),導(dǎo)致其他地方的人完全無法連接到服務(wù)器徐绑。這時(shí)候就需要內(nèi)網(wǎng)穿透和端口映射工具了邪驮,這樣的工具有很多,我列舉常用的幾個(gè):
- 花生殼
- nat123
- ngrok
不過這幾個(gè)工具雖然都算是挺好用的傲茄,但是都是收費(fèi)的毅访,雖然都有免費(fèi)版,但是免費(fèi)版功能實(shí)在太少盘榨,基本上只能綁定一個(gè)應(yīng)用喻粹,端口號還是隨機(jī)的。臨時(shí)玩玩倒是可以草巡,真正要用的話還是不行守呜。經(jīng)過一番尋找,最后我鎖定了frp這個(gè)工具山憨,它的優(yōu)點(diǎn)就是完全開源免費(fèi)查乒,自定義配置;缺點(diǎn)是不提供服務(wù)郁竟,也就是說我們需要自己買個(gè)服務(wù)器在上面搭建玛迄。
下載
frp也是托管在Github上的開源項(xiàng)目,直接到Release頁面下載即可棚亩,鏈接如下:
https://github.com/fatedier/frp/releases
下載解壓之后是一個(gè)文件夾蓖议,里面包含了frpc、frps可執(zhí)行程序讥蟆,以及它們對應(yīng)的示例配置文件勒虾,前者是客戶端程序,后者是服務(wù)端程序瘸彤。運(yùn)行frp需要同時(shí)運(yùn)行客戶端和服務(wù)端程序才行修然。full和min分別是最大和最小配置文件,如果需要參考的話可以打開看看质况,最大配置文件中列出了frp支持的所有選項(xiàng)低零。
服務(wù)端配置
首先我們看看如何配置frp的服務(wù)端。服務(wù)端配置比較簡單拯杠,如果不使用高級功能的話掏婶,只需要兩三行就可以了。
# frps.ini
[common]
bind_port = 7000
token = 123456
bind_port是服務(wù)端與客戶端之間通信使用的端口號潭陪,默認(rèn)就可以雄妥。token用于驗(yàn)證連接最蕾,只有服務(wù)端和客戶端token相同的時(shí)候才能正常訪問。如果不使用token老厌,那么所有人都可以直接連接上瘟则,所以我建議大家在使用的時(shí)候還是把token加上。
配置完畢后就可以啟動(dòng)服務(wù)端了枝秤,啟動(dòng)命令也很簡單:
frps -c frps.ini
一般情況下服務(wù)端這么配置就可以了醋拧,大部分配置都是在客戶端的配置文件中處理。作者這樣設(shè)計(jì)還是挺合理的淀弹,將來如果有改動(dòng)的話丹壕,只需要修改客戶端配置文件,服務(wù)端一般情況下不需要改動(dòng)薇溃。
端口轉(zhuǎn)發(fā)
下面來看看客戶端配置菌赖,frp可以實(shí)現(xiàn)很多常用功能,都是在客戶端配置文件中完成配置沐序。首先來看看最基本的端口轉(zhuǎn)發(fā)配置琉用。
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
token = 123456
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
首先是common下的配置項(xiàng),需要和服務(wù)端配置文件相同策幼。然后是ssh下的配置邑时,type是連接類型,大部分應(yīng)用都是tcp協(xié)議的特姐,所以這里就寫tcp就好刁愿;local_ip是本地ip,默認(rèn)127.0.0.1即可到逊;local_port是要轉(zhuǎn)發(fā)的端口號,官方實(shí)例中這里是遠(yuǎn)程轉(zhuǎn)發(fā)SSH滤钱,所以端口號是22觉壶,如果你想做游戲服務(wù)器的話,改成對應(yīng)的端口號即可件缸;remote_port是端口轉(zhuǎn)發(fā)之后暴露在外網(wǎng)的端口號铜靶。
客戶端配置完畢之后,就可以啟動(dòng)了他炊,啟動(dòng)命令類似:
frpc -c frpc.ini
如果你想簡單把本地部署的網(wǎng)站開放出去争剿,也可以以這種方式直接將本地80端口轉(zhuǎn)發(fā)出去。如果你購買了域名痊末,希望別人通過域名訪問本地網(wǎng)站蚕苇,還可以使用接下來要介紹的,專門的web轉(zhuǎn)發(fā)功能凿叠。
轉(zhuǎn)發(fā)web服務(wù)
首先是服務(wù)端涩笤,需要添加vhost_http_port參數(shù):
# frps.ini
[common]
bind_port = 7000
vhost_http_port = 80
然后是客戶端嚼吞,注意web下的參數(shù),type是協(xié)議類型蹬碧,http或者h(yuǎn)ttps舱禽,local_port是本地網(wǎng)站的端口號,custom_domains是購買的網(wǎng)站域名恩沽,需要注意這個(gè)網(wǎng)站域名需要事先在域名服務(wù)商那里設(shè)置好域名解析才能正常使用誊稚。
# frpc.ini
[common]
server_addr = x.x.x.x
server_port = 7000
[web]
type = http
local_port = 8080
custom_domains = www.yourdomain.com
配置完成后,訪問服務(wù)器網(wǎng)址http://x.x.x.x即可看到部署在本地http://localhost:8080上的網(wǎng)站罗心。如果需要https的話里伯,只要把vhost_http_port改成vhost_https_port,再把客戶端web下type設(shè)置為https即可协屡。
儀表盤
frp還支持儀表盤功能俏脊,可以從網(wǎng)頁查看運(yùn)行的流量等信息。開啟儀表盤需要在服務(wù)端進(jìn)行設(shè)置肤晓。
# frps.ini
[common]
dashboard_port = 7500
# dashboard 用戶名密碼爷贫,默認(rèn)都為 admin
dashboard_user = admin
dashboard_pwd = admin
設(shè)置完畢后,在瀏覽器中訪問服務(wù)端地址:端口號并輸入用戶名與密碼即可查看儀表盤补憾。
以上就是frp的一些介紹漫萄,如果有需要的請查看官方中文文檔,詳細(xì)列出了frp支持的各項(xiàng)功能盈匾,還可以參考frpc_full.ini與frps_full.ini腾务,查看完整配置文件支持的選項(xiàng)。文檔地址:
https://github.com/fatedier/frp/blob/master/README_zh.md
太陽神三國殺游戲服務(wù)器搭建
以前我也了解過frp削饵,不過基本沒用過岩瘦。這幾天和同學(xué)玩三國殺,我突然想到以前經(jīng)常玩的太陽神三國殺窿撬,后來因?yàn)闆]有公網(wǎng)IP启昧,再也沒有和同學(xué)聯(lián)機(jī)過。有了frp劈伴,我就可以讓同學(xué)連接到我的游戲主機(jī)上密末。
服務(wù)端配置仍然是非常簡單的那幾行,就不說了跛璧。重點(diǎn)是客戶端配置严里,其實(shí)也很簡單,太陽神三國殺游戲使用的端口號是9527追城,所以直接把端口號改為9527即可刹碾。然后連接的時(shí)候輸入服務(wù)器IP即可。
[common]
server_addr = xxxx
server_port = 7000
token = xxxxx
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 9527
remote_port = 9527