参考:Windows 10 下如何修改 smb 连接的默认端口(445)?
帮朋友通过阿里云搭建 nas,遇到个很神奇的现象。设定完共享及权限后,同一个账户,有的人能访问,有的人却不行。
一开始有考虑到是445这个高危端口的问题,但以为是电脑移动等做了限制。后来问了客服,说阿里云的网关先会过滤掉一部分可能有危险的 IP。反正就一个消息:445端口直接用是没戏了。
那么第一个想到的就是端口映射。
先说一下原理:
windows系统下的共享文件夹是通过 smb 协议实现的。而 smb 协议就是通过445端口进行通信的。过程如下:
客户端程序->客户端445端口->交换机->服务端445端口->服务端程序
现在445端口不能用,我们通过添加一层映射来绕开这个问题。拿8888端口举例:
客户端程序->客户端445端口->客户端8888端口->交换机->服务端8888端口->服务端445端口->服务端程序
实际代码如下:
1 -------- client add proxy -------- 2 netsh interface portproxy add v4tov4 listenport=445 listenaddress=127.0.0.1 connectport=9880 connectaddress=serverIP 3 4 -------- client delete proxy -------- 5 netsh interface portproxy delete v4tov4 listenport=445 listenaddress=127.0.0.1 6 7 8 9 -------- server add proxy -------- 10 netsh interface portproxy add v4tov4 listenport=9880 listenaddress=127.0.0.1 connectport=445 connectaddress=serverIP 11 12 -------- server delete proxy -------- 13 netsh interface portproxy delete v4tov4 listenport=9880 listenaddress=127.0.0.1
分别在客户端与服务端运行相应的代码即可,删除基本用不上,但如果这台服务器失效了。最好还是把转发端口给去掉。