Winows通過非445端口遠程訪問公網Samba


本人家里用的軟路由,PVE下虛擬安裝了CentOS,並安裝了Samba服務,在家庭局域網訪問和共享文件很方便,如果想在公司電腦和手機也能隨時隨地訪問資源,就需要實現公網訪問,但 Samba 的默認端口是445,公網因為 smb1 漏洞等安全原因445端口全部封了; Windows 系統默認不提供非445端口的samba訪問,所以需要用端口轉發實現訪問。

前提

有內建 Samba 的服務器(電腦),有公網IP,路由器做了端口轉發,並對域名做好DDNS,也可以直接IP訪問,但一旦路由器重新撥號,IP變化之后,需要重新設置;沒有公網IP的需要用到其他內網穿透如frp等,本文暫不涉及。

假設

1、內網samba服務端口:445

2、公網IP:123.123.123.123

3、公網端口:44500

4、做好DDNS的域名:smb.domain.com

流程

1、用管理員賬號打開CMD,以下命令查詢445端口占用情況

netstat -ano | findstr 445

可以看出是pid為4的進程進行監聽,從任務管理器上看是名叫System,備注"NT Kernel&System"。

 

2、本地 Windows 電腦打開:控制面板-所有控制面板選項-Windows工具-服務-Server,啟動類型改為“禁用”,並停止服務,如下圖:

 

3、重啟機器,再次用步驟1種命令查看445端口占用情況,應該是無占用信息(沒有返回信息)。

4、利用 Windows 自帶的端口轉發 netsh interface portproxy 命令,修改端口轉發(如果使用IPV6網絡,也需要進行端口轉發,具體的參照 netsh interface portproxy 使用幫助)

netsh interface portproxy add v4tov4 listenaddress=127.0.0.1 listenport=445 connectaddress=smb.domain.com connectport=44500

5、用以下命令查詢端口轉發是否設置成功(IPV6 同理)

netsh interface portproxy show all

應該可以看到相關轉發信息,說明轉發成功。

6、用步驟1中命令,查看445端口占用情況,此時的進程ID應該不是4,說明成功了。

7、磁盤掛載(注意,IP地址為本機地址127.0.0.1)。

8、刪除端口轉發:

netsh interface portproxy delete v4tov4 listenaddress=127.0.0.1 listenport=445

 9、重置所有端口轉發:

netsh interface portproxy reset

解決重啟失效

以上方法在Win10,Win11電腦上有個缺陷,目前還沒有好的解決方法,就是電腦重啟失效,查看的話,轉發是存在的,但就是無法實際轉發,所以,沒辦法,只能自己寫個批處理命令,每次重啟以后運行一次或加入計划任務里自動運行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM