背景

通过 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

windows10 开启samba 电脑开启samba_windows文件共享

重启 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 电脑之间文件共享都不会吧?