內網穿透系列文章索引:
- 內網穿透基本原理
- 【內網穿透服務器】遠程訪問
- 【內網穿透服務器】遠程(smb)檔案共享
- 【內網穿透服務器】遠程FTP服務器共享
- 【內網穿透路由器】遠程訪問后臺
- 【內網穿透硬碟】遠程訪問
- 【內網穿透計算機】遠程訪問
- 【內網穿透開機】VNC方式
- 【內網穿透開機】udp廣播方式
- 【內網穿透開機】路由器廣播方式
- 【內網穿透監控】遠程訪問
- 【內網穿透Nas】遠程訪問(本文)
內網穿透話題 實際上已經寫過很多了,從服務器,到路由器,從硬碟,到計算機、自制監控,穿透應用場景基本覆寫了包括組網、存盤、下載、開機在內的各大情形,基本上能夠替代Nas的大部份功能,但是沒有Nas穿透的系列始終是不完整的,今天將以群暉系統為例,通過Frp,實作Nas各大服務(包括但不限于ssh服務、DSM服務、移動端DS file、WebDAV Server磁盤映射、emby)的遠程訪問,
首先梳理出公網想要訪問的服務,自定義清楚訪問埠:
【ssh】(本地默認埠:22)
自定義訪問埠:2222
【DSM服務】(本地默認埠:5000-http 5001-https)
自定義訪問埠:443
【DS file】(本地默認埠:5000-http 5001-https)
自定義訪問埠:5001
【WebDAV Server】(本地默認埠:5005-http 5006-https)
自定義訪問埠:5007【https】
自定義訪問埠:5005【http】
#用https的5007訪問WebDAV Server的https的5006埠;用https的5005訪問WebDAV Server的http的5005埠
【emby】(本地默認埠:80096-http 不支持-https)
自定義訪問埠:80096【https雙重反代以訪問http】
【舉一反三:http專案】(本地默認埠:x)
自定義訪問埠:x【通過https的x埠訪問http的x埠】
其次,檢查需要提前準備的材料:
- 一臺公網服務器(作為FRPS,實作內網穿透);
- Nas一臺(作為FRPS)
- 域名決議至公網服務器
- 為域名申請證書,并上傳至Nas
根據訪問需求,我們需要用到443埠即https服務,因此域名需要申請到https證書,這里以騰訊云為例,我們申請一個免費ssl證書,


證書申請完畢后,將證書匯入nas中,“控制面板”——“安全性”——“證書”——“新增”——“添加新證書”——“匯入證書”同時設定為“默認證書”,將下載下來的證書Apache目錄內三項分別上傳

確認后點擊配置,確保全部成為默認證書,
在完成上述準備作業后,可以正式開始了,
一、穿透配置
(1)公網服務器端配置
1. 防火墻開放相應埠:

防火墻開放自定義訪問埠以及客戶端與服務端進行通信的7000埠、控制臺7500埠,
2. 服務端(frps)配置:
服務端(frps)和客戶端(frpc)需要相同版本,因此在部署前,需要慎重決定下載的版本號,這里我們用0.35.1這一版本進行部署,
wget https://github.com/fatedier/frp/releases/download/v0.35.1/frp_0.35.1_linux_amd64.tar.gz
tar -zxvf frp_0.35.1_linux_amd64.tar.gz #解壓縮:tar xvf 檔案名
cd frp_0.35.1_linux_amd64 #進入解壓目錄
#修改frps.ini檔案
sudo vim ./frps.ini
添加以下內容:
[common]
bind_port = 7000 # 客戶端與服務端進行通信的埠,即frp服務埠,需與客戶端server_port一致
dashboard_port = 7500 # 控制臺埠 通過 Dashboard 可以方便的查看 FRP 的狀態以及代理統計資訊展示 通過 http://[server_addr]:7500 訪問 Dashboard 界面,用戶名密碼默認都為 admin,
#后臺保持啟動 需要在frp_0.35.1_linux_amd64目錄下操作
nohup ./frps -c ./frps.ini &
回傳:nohup: ignoring input and appending output to ‘nohup.out’ 代表執行成功,ctrl+c關閉即可;用ps -ef 會在行程中看見frp作業行程,

查詢行程與結束行程命令:
ps -ef |grep frpc
kill -9 [行程號]
設定為開機自動啟動
sudo vi /lib/systemd/system/frps.service
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
ExecStart=/root/frp_0.35.1_linux_amd64/frps -c /root/frp_0.35.1_linux_amd64/frps.ini
Restart= always
RestartSec=1min
[Install]
WantedBy=multi-user.target
ExecStart中要配置成自己的路徑
#啟動frps
systemctl start frps
#將frps設定為開機啟動
systemctl enable frps

sudo vi /lib/systemd/system/frps.service 實際上lib或者etc目錄皆可,
(2)Nas客戶端配置
創建frpc.ini檔案添加以下內容(后文會詳細說明):
[common]
server_addr = nas.dengxj.net
server_port = 7000
[ssh]
type = tcp
local_ip = 必須填內網地址,不能填127.0.0.1
local_port = 22
remote_port = 2222
[dsm]
type = tcp
local_ip = 192.168.1.208(內網地址)
local_port = 5001
remote_port = 443
[ds_file]
type = tcp
local_ip = 192.168.1.208(內網地址)
local_port = 5001
remote_port = 5001
[https_webdav]
type = tcp
local_ip = 192.168.1.208(內網地址)
local_port = 5006
remote_port = 5007
[http_webdav]
type = tcp
local_ip = 192.168.1.208(內網地址)
local_port = 5004
remote_port = 5005
[emby]
type = tcp
local_ip = 192.168.1.208(內網地址)
local_port = 8097
remote_port = 8096

將組態檔上傳至nas自定義目錄上,

用docker下載與服務端版本一致(0.35.1)的frpc,“docker”——“注冊表”——“frpc”——選擇合適版本安裝

下載完成后——“映像”——雙擊安裝——自定義名稱——高級設定——卷——匯入frpc.ini,裝載路徑:/etc/frp/frpc.ini ——應用——“容器”——“frpc”——開啟

“容器”——“frpc”——“日志”,查看代理是否開啟,

設定容器開機自啟動:
1.ssh登陸
2. sudo -i 切換root用戶
3.使用docker ps命令,查看容器id
4.使用命令:docker update --restart=always 容器id????

二、ssh遠程訪問
【終端機和 SNMP】>【啟動ssh功能】>勾選

【用戶賬號】>【開啟admin】

通過內網ip+22埠,admin用戶身份ssh登陸,sudo -i提權至root

進行穿透后:對應frpc檔案中:
[ssh]
type = tcp
local_ip = 192.168.1.208
local_port = 22
remote_port = 2222
通過公網ip+2222埠,admin用戶身份ssh登陸,sudo -i提權至root

三、DSM遠程訪問
【網路】>【DSM設定】>勾選“將HTTP連接自動重新導向到HTTPS”

進行穿透后:對應frpc檔案中:
[dsm]
type = tcp
local_ip = 192.168.1.208
local_port = 5001
remote_port = 443
通過https://域名形式直接訪問,測驗:

如果出現:
檢查訪問是否未帶上https頭,
四、手機DS file遠程訪問
DS file遠程訪問要求格式為域名+埠的形式,當前nas的5001埠穿透為了服務器的443埠,由于443是https的默認埠,正常登陸將隱藏443的顯示,這將導致DS file無法實作遠程訪問,因此我們可以為nas的5001埠再穿透一個服務器埠,以解決443埠被隱藏的問題,
具體而言,對應frpc檔案中:
[ds_file]
type = tcp
local_ip = 192.168.1.208
local_port = 5001
remote_port = 5001
保存后重啟【frpc】docker,服務器開放5001埠,


五、WebDAV Server遠程訪問
遠程磁盤映射至本地,能夠遠程通過磁盤訪問的方式訪問nas,方便檔案的管理,首先前往WebDAV Server套件開啟https埠5006

其次修改frpc.ini(對應frpc檔案中[https_webdav]),新增穿透;重啟docker;服務器放行remote_port埠
[https_webdav]
type = tcp
local_ip = 192.168.1.208
local_port = 5006
remote_port = 5007
開啟admin賬號,安裝NetDrive2,用服務器ip+5007的admin權限連接WebDAV,并將其映射至驅動,


六、http專案的遠程訪問
Jellyfin、emby等媒體專案強制http協議訪問,雙重反向代理可以解決這一問題,這里以免費套件emby遠程訪問為例,
修改frpc.ini(對應frpc檔案中[emby]),新增穿透;重啟docker;服務器放行remote_port埠
[emby]
type = tcp
local_ip = 192.168.1.208
local_port = 8097
remote_port = 8096
【應用程式門戶】>【反向代理服務器】>“如圖填寫”,

這意味著在通過https協議采用“域名+8096埠”的方式訪問https協議下nas的8097埠后,nas中的反向代理規則又將https協議下nas的8097這一埠轉為http協議下nas的8096埠,換言之,即通過https協議采用“域名+8096埠”的方式最終訪問的是http協議下nas的8096埠內容,


七、關于nas遷移
遷移網路環境后,服務端無需修改,nas端只需在固定內網ip后,修改frpc.ini檔案中local_ip為新局域網下內網ip,并重啟docker即可,
至此,本文也就進入尾聲了,希望本文能夠起到拋磚引玉之效,也歡迎大家的批評交流,新年即將到來,在此也祝各位新年快樂,健康如意!
如果您有任何疑問或者好的建議,期待你的留言、評論與關注!
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/258506.html
標籤:其他

