赞
踩
win10
实现非标(非445)端口访问samba
服务背景:
由于公司有需求,在某个高性能宿主机节点上起了
N
多个Docker
容器,而每个容器内的/usr1
下都挂载了独立的数据卷,这个数据卷还不是宿主机的数据卷,因此需要在每个服务中安装独立的samba
服务。
samba
服务的标准是占用445
和139
端口。容器中可以默认使用445
和139
端口,然后映射到宿主机的随机端口上,实现每个容器都能启动独立的samba
服务而不冲突。那么问题就抛给
windows
用户了,windows
上面想访问某个samba
服务,就需要在资源管理器地址中输入\\ip\共享目录
,然后就能访问到这个ip
对应的445
端口上启动的samba
服务了,可是一旦服务器上的samba
服务没有启动在445
端口,通过默认的ip
和端口就访问不到samba
服务了,因为windows
上面访问samba
服务是不能指定端口的,只能是445
端口。那如何通过
\\ip\共享目录
连接到非445
端口启动的samba
服务呢?
解决办法如下:
SMB 1.0
协议和Telnet
功能在控制面板>程序>启用或关闭Windows
功能中启用SMB 1.0
协议和Telnet
功能,启用后提示,需要重启电脑才能生效,这里先不重启,等设置好端口转发以后再重启。
启用SMB 1.0
协议了后面才能修改通过端口转发访问到samba
服务
启用Telnet
功能是为了确认你的samba
服务是否正常工作,输入如下命令进行确认
telnet ip 端口
如果没有报无法访问的错误,就表示samba
服务工作正常
445
端口的默认服务win+r
输入services.msc
,在服务列表中停止并禁用Server
服务
IP
端口转发服务win+r
输入services.msc
,在服务列表中启动IP Helper
服务,并把启动类型设置成自动。
IP
端口转发规则netsh interface portproxy add v4tov4 listenport=445 listenaddress=localhost connectport=目标端口 connectaddress=目标IP
例如我要把访问127.0.0.1:445
的请求都转发到192.168.3.116:446
,命令如下
netsh interface portproxy add v4tov4 listenport=445 listenaddress=localhost connectport=446 connectaddress=192.168.3.11
查看是否设置成功
netsh interface portproxy show all
到此就设置完了,重启下电脑,让SMB 1.0协议和端口转发服务生效
IP
端口转发规则是否生效查看端口转发监听是否生效:
netstat -ano|findstr 445
只要显示不是4
就是代表成功的意思,否则就是不成功。
这里的6180
是进程号,在任务管理器的服务一栏下可以看到这是ip
端口转发服务对应的进程号
如果显示正确,资源管理器的地址栏输入\\localhost
,就可以访问到samba
服务器的共享目录了。
如果能通过\\localhost
访问到samba
服务的文件了,那么可以进一步把这个地址映射网络驱动器,效果就是跟C
盘、D
盘这种系统盘一样方便地访问了,按照截图的步骤操作即可
wiki
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。