前言
最近內網的服務器沒有了公網ip導致自己回家完全沒有辦法連接到服務器跑數據,自己的東西又全部寫在服務器上,導致我回家后必須使用遠程桌面連接到內網的電腦再進行操作服務器,這幾步操作異常繁瑣,因此才決定使用內網穿透的方式進行連接服務器。
又因為服務器上直接開內網穿透安全性堪憂,所以自己還是只在自己的電腦上開穿透,然后在自己的內網電腦上架設加速節點,使得在家可以通過節點跳轉到內網並進行訪問內網的服務器。
正文
使用frp內網穿透較為簡單,首先就是下載frp軟件,不同的操作系統又不同的包,由於我的服務器是linux,我的內網電腦使用的是windows,
所以我需要下載frps
和 frpc.exe
,分別對應服務端和內網端。
Releases · fatedier/frp (github.com)
具有公網IP的服務端
可以使用git命令或者直接下載linux到本地然后通過ftp傳到服務器中。
curl -o frp https://github.com/fatedier/frp/releases/download/v0.38.0/frp_0.38.0_linux_amd64.tar.gz
打開壓縮包,其中frps
為服務器端任務,frpc
為客戶端任務,服務器端用於提供公網ip,使得客戶端的某些端口可以通過frp發送到公網。
在運行frps前我們需要配置frps.ini 配置文件
# frps.ini 需要自行配置
# eg:端口
[common]
bind_port = 15300
# 幫助udp進行內網穿透的端口號
bind_udp_port = 15301
# 網頁端控制面板
dashboard_addr = 0.0.0.0
dashboard_port = 8090
# 控制面板的用戶名和密碼
dashboard_user = vase
dashboard_pwd = password
# 在 srceen 中開啟frps
srceen -S frps
./frps -c ./frps.ini
運行成功即可看到如下輸出,當然我們可以打開對應的網頁控制面板查看開啟狀態
ubuntu@VM-16-12-ubuntu:~/server/frp_0.38.0_linux_amd64$ ./frps -c ./frps.ini
2021/12/25 16:19:21 [I] [root.go:200] frps uses config file: ./frps.ini
2021/12/25 16:19:21 [I] [service.go:192] frps tcp listen on 0.0.0.0:15300
2021/12/25 16:19:21 [I] [service.go:276] nat hole udp service listen on 0.0.0.0:15301
2021/12/25 16:19:21 [I] [service.go:291] Dashboard listen on 0.0.0.0:8090
2021/12/25 16:19:21 [I] [root.go:209] frps started successfully
當然我們可以將frps 作為linux的服務進行運行使得開機即可進行啟動:
# 將frps 拷貝到 /usr/bin/ 下
cp frps /usr/bin/frps
# 將frps.ini 拷貝到 /etc/frps/ 下
co frps.ini /etc/frps/frps.ini
chmod a+x systemd/frps.service
service systemd/frps.service start
service
# 直接修改frps.service中的frps 和frps.ini 再執行也可以
注意:國內的雲服務基本有防火牆,我們需要去自己的服務商網站將自己的端口對應在防火牆中打開
需要穿透的內網客戶端
客戶端運行的程序為frpc
,即需要配置frpc.ini
文件:
# file frpc.ini
# 如我將本地的端口8080 映射到服務器的15302端口
[common]
server_addr = 101.35.195.xxx # 自己的服務器地址x.x.x.x
server_port = 15300
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 8080 # 本地需要映射到公網的端口
remote_port = 15302 # 遠程可以訪問的端口
# 執行
./frpc -c ./frpc.ini
# windows執行命令
./frpc.exe -c frpc.ini
運行成功顯示:
2021/12/25 16:52:50 [I] [service.go:301] [9a8bc69c28aa350e] login to server success, get run id [9a8bc69c28aa350e], server udp port [15301]
2021/12/25 16:52:50 [I] [proxy_manager.go:144] [9a8bc69c28aa350e] proxy added: [ssh]
2021/12/25 16:52:50 [I] [control.go:180] [9a8bc69c28aa350e] [ssh] start proxy success
簡單的使用vue創建8080網頁測試下映射結果顯示:
到這里其實就可以結束了,你可以直接在內網的服務器中將22端口映射出去,然后就可以通過公網的ip+映射的端口訪問你的22端口,當然如果你需要創建一個內網節點就可以繼續看下去。
創建內網vmess節點
如果希望將內網映射出一個v2節點和上述類似,值得注意的是vmess使用的tcp的協議,所以如果需要開放端口記得將端口設置為tcp,使得vmess可以正常穿透.
由於我是需要開節點的電腦是windows,所以我下載的是windows的版本,如果是linux就會更簡單,網上有很多的一鍵腳本,這里我就不介紹了,我從v-core中的最簡單配置說起,。
下載v2-core
windows 這里給個關鍵詞,自己去GitHub搜索去吧 -> v2fly
配置config 文件
配置config.json
,並修改"inbounds",內容
這里做一個簡單的范例:
"inbounds": [
{
"port": 15600, # 本地沒有被占用且可以通過內網防火牆的端口
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "17c3eed1-6010-4938-996d-5b14xxxxxx", # 唯一的uuid,可以再linux系統中生成一個然后復制過來
# cat /proc/sys/kernel/random/uuid 進行隨機生成
"alterId": 64
}
]
},
"streamSettings": {
"network":"ws", # websocket 模式
"wsSettings": {
"path": "/win/" # 隨便設置一下
}
}
}
],
修改對應的frpc 配置文件
修改frpc.ini
文件
# 如我將本地的端口8080 映射到服務器的15302端口
[common]
server_addr = 101.35.195.xxx # 自己的服務器地址x.x.x.x
server_port = 15300
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 15600 # v2 中節點設置的端口
remote_port = 15302
啟動程序
啟動v2.exe
和 frpc.exe
其他設備配置節點
之后配置你電腦或者手機中的vmess 節點;
這里要注意的是地址填寫的是你公網的ip,端口填寫的是你公網映射過去的端口號,而不是本地的端口,傳輸模式因為設置的是websocket,所以這里也選擇websocket。
測試
嘗試使用該節點訪問網頁,當本機電腦中出現訪問的網站即可,