20181108 公網Linux伺服器開啟samba(smb)檔案共享服務給家裡電腦用

cx2889發表於2018-11-08

背景

通過 linux 伺服器搭建 samba 檔案共享服務應該人人都會了吧,然而由於2017年5月,那個永恆之藍病毒(比特幣勒索病毒),導致運營商(某信、某動、某通)把 445 埠封了,因此你無法通過 445 埠連線你的 linux 伺服器了,也就是說:你的samba檔案共享服務已經廢了。

那怎麼辦?我這裡還有一套解決方案。

方案原理

既然 445 被封了,我們只能換埠了,比方說換成 6727 埠,但是呢,windows 預設連的是 445 埠啊,印度佬們不讓你改 windows 預設的 445 埠呀(講道理可以改登錄檔來實現,但是我要是有幾臺 windows 電腦話豈不是要改得死去活來,況且要是你本來是有 windows 電腦與windows 電腦檔案共享的呢)。這個時候通過netsh,設定本機埠對映到你那臺 samba 的 linux 伺服器的 6727 埠。最後,你就可以通過

\\127.0.0.1

來訪問你的檔案共享服務了。

需要材料

  1. 一個已經配置好 samba 的、有公網IP的 linux 伺服器。(伺服器到底有沒有配置好,你在伺服器上用smbclient通過公網ip連線試試就知道了);
  2. 一臺永遠不打算共享檔案給其他人的 windows 電腦(是的,你需要 win7 以上的電腦);

開始操作

改 linux 伺服器 samba 服務的埠

用 vi 命令開啟 配置檔案 /etc/samba/smb.conf

我並不確定你也是這個路徑

然後設定

smb ports = 6727

在這裡插入圖片描述

重啟 smb 服務

systemctl restart smb

關閉 windows 的 445 埠

若是你沒有用過“某極度安全衛士”的話,你的 445 埠應該是一直被 LanmanServer 佔用的,這個 LanmanServer 就是幫你把你電腦的檔案分享給別人。所以你要把這個服務禁用了,這個服務顯示的名字叫“Server”,你可以在 Windows 送的“服務”管理頁面中看到(點選任務管理中的“服務”即可開啟),然後禁用它。但我更喜歡用命令列操作。

用管理員身份開啟cmd,執行以下命令:

sc config LanmanServer start= disabled
net stop LanmanServer

要是執行後沒有顯示"成功"二字,那是可能你沒有用管理員許可權執行吧。

啟動 windows 的 ip helper 服務

這個 ip helper 服務,就是用來搞埠轉發的,沒有了它就沒法轉發了。

用管理員身份開啟cmd,執行以下命令:

sc config iphlpsvc start= auto

要是執行後沒有顯示"成功"二字,那是可能你沒有用管理員許可權執行吧。

設定 windows 埠轉發

你的公網 IP 是 999.999.999.999 的話,那按照我下面的命令來搞。

用管理員身份開啟cmd,執行以下命令:

netsh interface portproxy add v4tov4 listenport=445 connectaddress=999.999.999.999 connectport=6727

執行後什麼都不會顯示的,你就當你執行成功了吧。

重啟 windows 電腦

要是不重啟的話上面所做的都不會生效的。

重啟不用教了吧。

在 windows 上開啟共享資料夾

win 鍵 + R 鍵 開啟執行,輸入127.0.0.1,類似我這樣:

\\127.0.0.1

回車,然後提示輸入賬戶密碼,按照你 Linux 伺服器 samba配置的賬戶密碼輸入,就成功了。

當然,對映網路驅動器也是一樣,按照你原來怎麼搞就怎麼搞。

總不可能你連 windows 電腦之間檔案共享都不會吧?

相關文章