【內網穿透伺服器】公網環境訪問內網伺服器(以使用samba(smb)檔案共享服務為例)

鄧大帥發表於2019-04-08

公網環境訪問內網伺服器,以使用samba(smb)檔案共享服務為例

Frp
掛載
Frp
SSH埠
訪問
訪問
samba
Linux
cifs
Windows
Winscp等客戶端
SFTP協議登陸
使用檔案訪問服務
http://IP:6500/static/
FTP服務
FileZilla等客戶端
ftp://IP:埠
ftp本地對映
VNC遠端登陸

如何在公網環境下訪問內網伺服器?本文以在家中通過samba搭建完成家庭nas伺服器後,如何在公網環境下訪問內網伺服器,使用samba(smb)檔案共享服務為例,進行講解。

一、搭建鏈路

1. 內網伺服器處於的內網擁有公網IP情況下

(1) 擁有靜態公網IP情況下:
Step 1 固定內網IP
Step 2 埠對映或DMZ對映
(2)擁有動態公網IP(動態NAT裝置)情況下:
Step 1 路由器靜態分配內網IP
Step 2 埠對映或DMZ對映
Step 3 動態域名解析

2. 內網伺服器處於的內網不具有公網IP情況下

(1)方法一: 內外網搭建VPN(安全,推薦)

在這裡插入圖片描述

點選檢視部署方法

(2)方法二 內網穿透 點選檢視全部操作方法

在此重點介紹frp內網穿透 檢視文章
1. 防火牆需要開放相應埠:

在這裡插入圖片描述

2. 服務端配置:
sudo apt-get update

wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_amd64.tar.gz

tar -zxvf frp_0.17.0_linux_amd64.tar.gz  #解壓縮:tar xvf 檔名

cd frp_0.17.0_linux_amd64                #進入解壓目錄

#修改frps.ini檔案
sudo vim ./frps.ini

新增以下內容:
[common]
bind_addr = 0.0.0.0         # 0.0.0.0為伺服器全域性所有IP可用,假如你的伺服器有多個IP則可以這樣做,或者填寫為指定其中的一個伺服器IP,支援IPV6.
bind_port = 7000            # 客戶端與服務端進行通訊的埠,即frp服務埠,需與客戶端server_port一致
dashboard_port = 7500       # 控制檯埠 通過 Dashboard 可以方便的檢視 FRP 的狀態以及代理統計資訊展示 通過 http://[server_addr]:7500 訪問 Dashboard 介面,使用者名稱密碼預設都為 admin。
#後臺保持啟動 需要在frp_0.17.0_linux_amd64目錄下操作
nohup ./frps -c ./frps.ini &

返回:nohup: ignoring input and appending output to ‘nohup.out’ 代表執行成功,ctrl+c關閉即可;用ps -ef 會在程式中看見frp工作程式。

3. 客戶端配置:
sudo apt-get update

wget https://github.com/fatedier/frp/releases/download/v0.17.0/frp_0.17.0_linux_arm.tar.gz

tar -zxvf frp_0.17.0_linux_arm.tar.gz  #解壓縮:tar xvf 檔名

cd frp_0.17.0_linux_arm                #進入解壓目錄

#修改frps.ini檔案
sudo vim ./frpc.ini

新增以下內容(需要刪除註釋)
[common]
server_addr = your_server_ip               #VPS伺服器IP
server_port = 7000                         #埠,與服務端bind_port一致  

[samba]
type = tcp
local_ip = 127.0.0.1
local_port = 445                           #samba預設埠
remote_port = 4545                         #自定義的遠端訪問埠,4545是轉發埠,目的是將本地的445埠轉發到遠端伺服器上面的4545埠中去。

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 21
remote_port =6000

# 對外提供檔案訪問服務
[test_static_file]
type = tcp
remote_port = 6500
plugin = static_file
# 要對外暴露的檔案目錄
plugin_local_path =/samba
# 訪問 url 中會被去除的字首,保留的內容即為要訪問的檔案路徑
plugin_strip_prefix = static
plugin_http_user = 123
plugin_http_passwd = 123

plugin_local_path = 寫絕對路徑(從root根目錄開始) 如:/home/pi/Desktop 這裡選擇進入 samba 目錄

在這裡插入圖片描述
先執行一下,有上面的顯示說明能夠正常執行後再在後臺啟動。

#後臺保持啟動  需要在frp_0.17.0_linux_arm目錄下操作
nohup ./frpc -c ./frpc.ini &

注意!!!每次修改完配置檔案之後,需要先kill之前的FRP程式,重新執行才可以更新配置!
注意!!!每次修改完配置檔案之後,需要先kill之前的FRP程式,重新執行才可以更新配置!
注意!!!每次修改完配置檔案之後,需要先kill之前的FRP程式,重新執行才可以更新配置!

查詢程式與結束程式命令

ps -ef |grep frpc
kill -9 [程式號]

設定為開機自動啟動

sudo vim /etc/systemd/system/frpc.service
[Unit]
Description=frpc daemon
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/frp_0.17.0_linux_arm/frpc -c /frp_0.17.0_linux_arm/frpc.ini
Restart= always
RestartSec=1min

[Install]
WantedBy=multi-user.target

注意ExecStart中要配置成自己的路徑.
然後使用systemctl start frpc即可啟動frpc, 用systemctl enable frpc即可將frpc設定為開機啟動。

在這裡插入圖片描述
不要忘記開放相應埠!

二、訪問

在鏈路搭建完成之後,我們可以開始正式的訪問了。

1. linux

#安裝cifs
apt-get install cifs-utils
mount.cifs -o port=4545  //伺服器ip/public/vps  /mnt/share/ 

記得要先建立share目錄,不然可能會掛載失敗。

2. windows:

(1)方法一:使用Winscp等軟體SFTP(ssh)登陸

在這裡插入圖片描述
填寫主機IP(VPS的公網IP)、埠(自定義的遠端訪問埠6000)、使用者名稱密碼(樹莓派的使用者名稱和密碼) ,即可訪問。

在這裡插入圖片描述

手機良心推薦使用 nPlayer app

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

(2)方法二:使用FRP對外檔案訪問服務

除了上面提到的使用SFTP服務以外,通過瀏覽器訪問 http://x.x.x.x:6500/static/ 來檢視位於 /samba 目錄下的檔案,會要求輸入已設定好的使用者名稱和密碼。

在這裡插入圖片描述

(3)方法三:使用FTP服務訪問 實現方法點此檢視

搭建FTP服務後:

< 1 > 通過 ftp://使用者名稱:密碼@IP:埠 的形式訪問samba

在這裡插入圖片描述
< 2 > 使用FileZilla登陸FTP訪問samba

FileZilla下載:
連結:https://pan.baidu.com/s/11hd0Kqw5pGxRcer6aBh__Q
提取碼:jtn2

在這裡插入圖片描述
在這裡插入圖片描述
< 3 > 使用FTP磁碟對映訪問samba

在這裡插入圖片描述
在這裡插入圖片描述
友情提示一點,你是不是在用公網的伺服器地址嘗試連線本地內網的FTP資料夾,捨不得開熱點,恐怕要經歷失敗(手動狗頭)。點此瞭解出現227 Entering Passive Mode錯誤命令原因及解決方法

(4)方法四:使用WebDAV服務,磁碟對映

在區域網環境下,我們會採用對映網路驅動器的方式使用samba(smb)檔案共享服務

具體來講:我的電腦—>對映網路驅動器—>碟符:\\IP地址\share

對映至本地

在公網環境下,除了上文降到的使用FTP磁碟對映訪問samba,我們還可以使用WebDAV服務,對映磁碟。

通過安裝WebDAV Server ,開啟http埠,在路由器做埠轉發,在windows系統上安裝NetDrive

在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

(5)方法五:使用VNC遠端登入的方式訪問內網samba(smb)檔案共享服務

上述方法一直都是在嘗試穿透內網伺服器,但是針對內網samba(smb)檔案共享服務,由於其使用平臺多為計算機,因此我們也可以通過穿透內網環境下的對映了samba(smb)檔案共享服務的網路驅動器的計算機,直接訪問。實現方式點選此處.

在這裡插入圖片描述

參考:
1: https://dengxj.blog.csdn.net/article/details/88821719
2: https://dengxj.blog.csdn.net/article/details/88922690
3: https://dengxj.blog.csdn.net/article/details/88952420
4: https://dengxj.blog.csdn.net/article/details/89520682

相關文章