我的网络上的防火墙丢弃了 TCP 端口 139 和 445 上的所有数据包。因此,所有 samba 共享都无法在 LAN 之外工作。
我尝试让 samba 守护进程监听非标准端口。此方法在 Linux 上效果很好,因为和smbclient
都有smbmount
设置服务器端口的选项。但在 Windows 上我找不到类似的选项。
Windows 是否支持在非标准端口上挂载 smb 共享?第三方软件也可以接受。
编辑:
\\hostname:port\share
在 Windows 资源管理器中不起作用。奇怪的是,我可以看到服务器上已建立连接。但 Windows 一直告诉我无法访问服务器。即使在具有标准端口 445 的 LAN 中也不起作用,在这种情况下,没有端口号的路径将通过。
答案1
这是可能的!这几年过得不错,但结合我找到的环回接口教程和部分在@Mike 的 [..link-only] 答案(多主机版本)中,我创建了一个可以为您执行此操作的脚本。
你可以使用这个在管理终端运行后Install-Module -Name LoopbackAdapter -MinimumVersion 1.2.0.0
(不要忘记对脚本进行点源,以便可以调用它)。
Create-Host -Name bob -Ip 10.254.0.1 -Dest ipOfHostname -Port port
重新启动后,您将可以访问\\bob
(假 IP 10.254.0.1),该 IP 附加到您问题中的“主机名:端口”。
这将在启动过程中持续存在,并且如果源服务器启动或关闭,您无需重新运行它;拆卸非常简单Retire-Host -Name bob
。
就这么简单,一个命令,编程,没有 GUI/Windows 设置对话框;但请随意手动按照下面的步骤操作。
解释:
使用netsh portproxy
将虚假 IP 与您的 SMB 服务器链接起来,这将使非标准端口在 Explorer 上可访问。
#it's important IP's are used here, not hostnames
netsh `
interface portproxy `
add v4tov4 `
listenaddress=<#fakeIP#> `
listenport=445 `
connectaddress=<#serverIP#> `
connectport=<#serverPort#>
可选择将 IP 添加到您的%windir%\System32\drivers\etc\hosts
文件中,这样您就不需要记住这个 IP(例如与 交互\\bob
而不是\\10.254.0.1
)。
使用DevCon创建一个环回网络适配器,这个“网络”将托管IP。
$interface = New-LoopbackAdapter -Name <#NAME#>
禁用会破坏各种事物的冲突/未使用的服务。
$interface `
| Disable-NetAdapterBinding `
-ComponentID ms_msclient,ms_pacer,ms_server,ms_lltdio,ms_rspndr
$interface `
| Set-DnsClient `
-RegisterThisConnectionsAddress $False `
-PassThru `
| Set-NetIPInterface `
-InterfaceMetric '254' `
-WeakHostSend Enabled `
-WeakHostReceive Enabled `
-Dhcp Disabled
设置您的机器在此“网络”上可访问的 IP。
$interface `
| New-NetIPAddress `
-IPAddress <#fakeIP#> `
-PrefixLength 32 `
-AddressFamily IPv4
完成!重启后,转发将连接起来,只要您的电脑可以访问远程端口,您就可以访问它。除非您手动将其拆除,否则设置不会消失。
值得注意的是,我只转发到 445(实际上是从 445 使用ssh -L
隧道传输到我的电脑无法直接看到的网络上的机器),但如果需要的话,只需更改/netsh portproxy
添加 139 等效项即可。
要进行故障排除,您可以检查 Windows 是否正在尝试使用
netsh interface portproxy show v4tov4
是否成功监听了环回设备
netstat -an | sls ':445'
并且如果你的远程机器的服务器正在接受连接
Test-NetConnection -ComputerName <#serverIP#> -Port <#serverPort#>
最终,所有事情都尘埃落定(也许是一些凭证问题)
Test-NetConnection -ComputerName <#fakeIP#> -Port 445
答案2
不幸的是,这是不可能的,因为 Windows 仅支持端口 445 和 139
您可能能够使用 ssh 隧道。以下是使用 Windows 和 Linux 的参考:https://www.ocf.berkeley.edu/~xuanluo/sshproxywin.html
答案3
对于那些仍在寻找在非标准端口上安装 SMB 资源的方法的人来说,这里是一篇关于如何做到这一点的很棒的文章。我个人设置stunnel
使用 SSL 封装 SMB 流量,因为我通过互联网远程访问我的 SMB 共享。效果非常好。
答案4
如果第三方工具没问题,并且你只需要访问 SMB 共享,而不需要真正将其安装到驱动器号上,则该工具猫头鹰档案完成此工作。在这里,您可以输入用于访问 SMB 共享的其他端口号。
我开始在通过 SSH 隧道传输 SMB 时使用它,因此不需要设置环回适配器。
该工具可通过 MS 商店获取,并且该功能在该工具的免费版本中可用。