屏蔽 445 端口后使用 SMB 协议的替代方法

图片[1]-屏蔽 445 端口后使用 SMB 协议的替代方法-速维云

在网络环境中,运营商出于安全考虑,可能会屏蔽 445 端口,这会导致 SMB 协议无法通过该端口正常工作。不过,我们可以通过一些替代方法来继续使用 SMB 协议。以下将详细介绍在不同操作系统下的操作步骤。

一、在 Linux 系统中修改 SMB 服务端口并连接

(一)配置 Samba 端口

  1. 确保你具有 root 权限。
  2. 使用文本编辑器打开 Samba 的主配置文件smb.conf,一般路径为/etc/samba/smb.conf。例如,使用nano编辑器,可在终端输入命令:sudo nano /etc/samba/smb.conf。
  3. 在打开的配置文件中,找到[global]部分。
  4. 在[global]部分下方添加smb ports = <新端口>,例如smb ports = 4455。这里的新端口可以根据你的需求自定义,但要确保该端口未被其他服务占用。添加时注意smb ports与等号及端口号之间有空格。

(二)开放端口

  1. 使用firewall-cmd命令来开放刚才设置的新端口。例如,若新端口为 4455,在终端输入命令:firewall-cmd --permanent --add-port=4455/tcp。该命令用于在防火墙中永久添加允许 4455 端口的 TCP 连接规则。
  2. 输入命令重启防火墙,使新的端口规则生效:systemctl restart firewalld。

(三)客户端连接

  1. 在客户端的 Linux 系统上,使用mount命令进行挂载。命令格式为:mount -t cifs -o port="<新端口>",username="<用户名>",password="<密码>" //<服务器IP>/<共享目录> <本地挂载点>。
  2. 例如,假设服务器 IP 为 10.0.0.51,共享目录为web,本地挂载点为/mnt/www,用户名是smb,密码是123456,新端口为 4455,那么完整的命令为:mount -t cifs -o port="4455",username="smb",password="123456" //10.0.0.51/web /mnt/www。

二、在 Windows 系统中通过端口转发连接 SMB 服务

(一)修改 SMB 服务端端口(以 Linux 的 Samba 服务为例)

  1. 参考上述 Linux 系统中修改 Samba 端口的步骤,在smb.conf文件中修改端口设置。
  2. 如果是 Windows 系统的 SMB 服务,虽然也可通过修改注册表来实现,但过程较为复杂且可能需要重启系统,存在一定风险,故这里不做推荐。若有需要,可咨询专业人士或参考相关官方文档。

(二)禁用本地 SMB 服务

  1. 以管理员身份运行命令提示符。你可以通过在开始菜单中搜索 “命令提示符”,然后右键选择 “以管理员身份运行”。
  2. 在命令提示符中输入命令:sc config LanmanServer start= disabled。此命令的作用是将 “文件共享服务”(即 Windows 自带的 SMB)设置为禁用状态,start=后面的disabled表示禁用,注意等号前后无空格。
  3. 接着输入命令:net stop LanmanServer。该命令用于停止当前正在运行的 SMB 服务。

(三)设置端口转发

  1. 输入命令:sc config iphlpsvc start= auto。iphlpsvc是 IP 转换以及为端口代理提供隧道的服务,此命令将该服务设置为自动启动状态,start=后面的auto表示自动启动。
  2. 输入端口转发命令:netsh interface portproxy add v4tov4 listenport=445 connectaddress=<服务端IP或域名> connectport=<服务端设置的SMB自定义端口>。例如,服务端 IP 为 192.168.1.100,服务端设置的 SMB 自定义端口为 6727,那么完整命令为netsh interface portproxy add v4tov4 listenport=445 connectaddress=192.168.1.100 connectport=6727。此命令用于将本地的 445 端口流量转发到指定的服务端 IP 和自定义端口。

(四)映射网络驱动器

  1. 重启电脑,使之前的设置生效。
  2. 重启后,打开 “此电脑”,在界面中选择 “映射网络驱动器”。
  3. 在弹出的映射网络驱动器窗口中,选择一个盘符。在 “文件夹” 地址栏输入\\127.0.0.1\<共享文件夹名>。因为进行了本地端口转发,此时 SMB 服务相当于在本地 445 端口运行,所以使用127.0.0.1(代表本地主机 IP)来连接。

三、使用端口代理工具 WinDivert

(一)下载和编译工具

  1. 从 GitHub 上获取 WinDivert 和 DivertTCPconn 项目代码。你需要在 GitHub 网站上搜索这两个项目,找到对应的代码仓库,并按照仓库中的说明进行下载。一般可以通过git clone命令将代码克隆到本地。
  2. 对下载的代码进行编译。编译过程可能因系统环境和开发工具的不同而有所差异。通常需要安装相应的编译器和开发环境,例如 Visual Studio 等。在编译过程中,可能需要根据项目的要求进行一些配置和设置。具体的编译步骤请参考项目的官方文档或相关教程。

(二)配置端口转发

  1. 假设远端 SMB 服务器 IP 为 192.168.1.81,首先使用命令netsh interface portproxy add v4tov4 listenport=8445 connectaddress=192.168.1.81 connectport=8445添加端口代理。此命令将本地的 8445 端口流量转发到远端服务器的 8445 端口。这里的端口号 8445 可根据实际情况自定义,但要确保与后续设置一致且未被占用。

(三)修改 DivertTCPconn 代码

  1. 由于默认的 DivertTCPconn 过滤器只匹配入站流量,需要修改代码使其能匹配出站流量。
  2. 具体的修改方式是将访问远端 445 端口的流量转换成访问本地 8445 端口。这涉及到对代码中流量匹配和转发逻辑的修改。例如,在代码中找到处理流量过滤和转发的相关函数或模块,根据端口转发的需求,调整其中的端口匹配条件和转发目标端口。详细的代码修改过程需要具备一定的编程知识和对该工具代码结构的了解,若你不熟悉编程,建议在专业人士的指导下进行操作。

(四)测试连接

  1. 完成上述配置和代码修改后,进行 SMB 连接测试。尝试通过 SMB 客户端连接到远端服务器。如果配置正确,此时流量会通过 8445 端口进行传输,从而实现绕过被屏蔽的 445 端口使用 SMB 协议的目的。

通过以上方法,在运营商屏蔽 445 端口的情况下,依然可以实现 SMB 协议的使用,满足文件共享等需求。但在操作过程中,请务必谨慎,尤其是涉及到修改系统配置和代码等操作,避免因错误操作导致系统故障或安全问题。若对某些操作不确定,建议先在测试环境中进行尝试。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享
评论 抢沙发

    暂无评论内容