背景
通过 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
来访问你的文件共享服务了。
需要材料
- 一个已经配置好 samba 的、有公网IP的 linux 服务器。(服务器到底有没有配置好,你在服务器上用smbclient通过公网ip连接试试就知道了);
- 一台永远不打算共享文件给其他人的 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 电脑之间文件共享都不会吧?