indows連接到VPS主機一般使用PuTTY,也是Windows上最受歡迎的復(fù)制此客戶端的程序之一,在進行配置后即可在VPS服務(wù)器上操作。
如何使用Windows連接到VPS主機?
frp(fast reverse proxy)是一款高性能的反向代理應(yīng)用,專注于內(nèi)網(wǎng)穿透。它支持多種協(xié)議,包括 TCP、UDP、KCP、HTTP、HTTPS 等,并且具備 P2P 通信功能。使用 frp,您可以安全、便捷地將內(nèi)網(wǎng)服務(wù)暴露到公網(wǎng),通過擁有公網(wǎng) IP 的節(jié)點進行中轉(zhuǎn)。
1. 遠程桌面或者是訪問內(nèi)網(wǎng)服務(wù)
個人覺得這個需求應(yīng)該是最強烈的,有時需要遠程桌面連接公司自己的電腦處理問題或者自己家里連著寬帶的電腦,沒有 frp 以前只能找類似花生殼提供的解決方案。
2. webhook 接收
接收類似 Github 或者第三方提供 Webhook 的場景。
3. 反向代理
有些國外 vps 被 gfw 墻了不能 ssh 連接,也可以通過frp 進行訪問
frp 主要由兩個組件組成:客戶端(frpc) 和 服務(wù)端(frps)。通常情況下,服務(wù)端部署在具有公網(wǎng) IP 地址的機器上,而客戶端部署在需要穿透的內(nèi)網(wǎng)服務(wù)所在的機器上。
由于內(nèi)網(wǎng)服務(wù)缺乏公網(wǎng) IP 地址或者某些原因用戶不能直接訪問,用戶通過訪問服務(wù)端的 frps,frp 負責(zé)根據(jù)請求的端口或其他信息將請求路由到相應(yīng)的內(nèi)網(wǎng)機器,從而實現(xiàn)通信。實際流量會變成 client->frps->frpc
frp 架構(gòu)圖
我們需要有一臺公網(wǎng) ip 的服務(wù)器作為 frps 服務(wù)端,這里我使用自己購買的阿里云服務(wù)器,一臺實現(xiàn)內(nèi)網(wǎng)穿透的windows pc作為 frpc 客戶端。下表是實驗環(huán)境:
# | OS | frps/frpc監(jiān)聽端口 | 內(nèi)網(wǎng)穿透服務(wù)和監(jiān)聽端口 |
frps | centos8 | 17000 | N/A |
frpc | win10 | 60002 | 遠程桌面/3389 |
frps 和 frpc 服務(wù)配置完成后,用戶可以使用frps_ip:60002 地址遠程桌面連接到內(nèi)網(wǎng) win10 pc。
win10 pc 開啟遠程桌面和檢查防火墻規(guī)則
右擊我的電腦->屬性->遠程桌面->啟用遠程桌面
開啟遠程桌面
另外還需要檢查 win10防火墻的入站規(guī)則有沒遠程桌面策略或者選擇關(guān)閉防火墻,還可以在跟 win10 相同的內(nèi)網(wǎng)其他機器測試網(wǎng)絡(luò)連通性。
防火墻規(guī)則檢查
frps server 檢查 selinux 和防火墻
frps server 如果是在公有云,還要在公有云上防火墻放行相關(guān)策略
云上防火墻策略
frps server上的centos 需要檢查 selinux 和防火墻iptables 或者 firewalld
注:在國內(nèi)公有云上如果使用域名,請確認域名有備案,要不然還是建議使用 ip 連接,要不然會有意想不到的連接錯誤。
frp 采用 Go 語言編寫,只需下載對應(yīng)平臺的二進制文件即可執(zhí)行
frps安裝
下載linux frp 對應(yīng)二進制包到 frps server,解壓到對應(yīng)目錄上
# 下載 frp 二進制壓縮包
wget https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_linux_amd64.tar.gz
# 解壓
tar xf frp_0.57.0_linux_amd64.tar.gz -C /usr/local/
cd /usr/local/frp_0.57.0_linux_amd64/
frp程序目錄
frps server的配置文件是frps.toml,frpc client的配置文件是frpc.toml,下面配置frps.toml
# 可以參考官方配置frps_full_example.toml,里面有詳細配置說明
# https://github.com/fatedier/frp/blob/405969085fb6b5c8058c88ca250e930ba6092153/conf/frps_full_example.toml
#frps監(jiān)聽端口
bindPort = 17000
# 配置 frp dashboard
webServer.addr = "127.0.0.1"
webServer.port = 7500
webServer.user = "admin"
webServer.password = "*******"
# 配置 token 認證,frpc 客戶端也需指定一樣的token
auth.method = "token"
auth.token = "abc123jki"
# 只允許frpc綁定指定ports.
allowPorts = [
{ start = 60000, end = 60500 }
]
使用 systemd 來管理 frps 服務(wù),并設(shè)置開機自啟,創(chuàng)建frps.service文件
vim /etc/systemd/system/frps.service
寫入frps.service內(nèi)容如下:
[Unit]
Description=FRP Server
After=network.target
[Service]
# 啟動frps的命令,需修改為您的frps的安裝路徑
ExecStart=/usr/local/frp_0.57.0_linux_amd64/frps -c /usr/local/frp_0.57.0_linux_amd64/frps.toml
Type=simple
[Install]
WantedBy=multi-user.target
設(shè)置frps開機啟動,并啟動 frps
# 設(shè)置frps開機啟動
systemctl enable frps
# 啟動frps
systemctl start frps
# 查看frps服務(wù)狀態(tài)
systemctl status frps
frpc安裝
下載windows frp 對應(yīng)二進制包到 frpc client,解壓到對應(yīng)目錄上,下載地址https://github.com/fatedier/frp/releases/download/v0.57.0/frp_0.57.0_windows_amd64.zip
frpc client的配置文件是frpc.toml,編輯frpc.toml
# 可以參考官方配置frpc_full_example.toml,里面有詳細配置說明
# https://github.com/fatedier/frp/blob/405969085fb6b5c8058c88ca250e930ba6092153/conf/frpc_full_example.toml
# 填寫你的frps server的ip 和 port
serverAddr = "1.1.1.1"
serverPort = 17000
# 配置 token 認證,frpc 客戶端需指定frps一樣的token
auth.method = "token"
auth.token = "abc123jki"
# 在 frp 中,一個代理對應(yīng)一個需要公開訪問的內(nèi)網(wǎng)服務(wù)。
# 一個客戶端可以同時配置多個代理,以滿足不同的需求。
# 下面配置的是將 win10 遠程桌面暴露到 frps_ip 60002端口上
[[proxies]]
name = "windows remote desktop"
type = "tcp"
localIP = "127.0.0.1"
localPort = 3389
remotePort = 60002
使用NSSM - the Non-Sucking Service Manager將frpc注冊成windows服務(wù)并設(shè)置開機啟動
在nssm 官網(wǎng)下載 nssm 程序,地址 https://nssm.cc/release/nssm-2.24.zip,解壓壓縮包,win64下面會有 nssm 程序,程序可以放在任何位置都可以。
以管理員權(quán)限運行cmd,切換到 nssm 程序目錄,執(zhí)行下面命令
nssm install frpc
命令執(zhí)行后,它會以 GUI顯示服務(wù)安裝窗口,填寫 frpc 程序的路徑和啟動參數(shù),點擊 Install service 即可
配置 frpc service
在上面打開的管理員cmd 窗口,啟動 frpc 服務(wù)
nssm start frpc #或者可以使用net start frpc
可以看到frpc 進程已經(jīng)啟動
檢查 frpc 啟動
這時候可以在frps dashboard(這里可以配置nginx反向代理訪問)查看frpc客戶端是否注冊上,注冊上 status 會顯示 online
frps dashboard
client通過frps_ip:60002 遠程桌面到 frpc win10 pc 上
遠程桌面 win10 pc