1 什么是samba?
samba是基于smb传输协议的数据共享软件,通常用于提供跨平台跨主机的文件共享服务。
2 主控端(服务端)安装samba
2.1 准备工作:
一台安装好`docker`的`linux`主机.不知道安装可以参考[官方文档](https://docs.docker.com/)
2.2 启动服务
1 | docker run -it -p 139:139 -p 62727:445 \ |
以上是把本地目录挂载的容器中去,并基于挂载的目录上再创建共享的目录,分别创建2个目录
public和example1目录,一个是公开的,但不能写,一个是要账号密码的,并配置可以进行读写。更多的配置参数参数可以参考镜像的说明。2017 5月比特币勒索病毒事件导致
445端口至今还被网络运营商品封住,这里使用62727端口来替代。
2.3 开放端口
在linux如果你是iptables防火墙则IO策略为:
1 | sudo iptables -I INPUT -p tcp --dport 139 -j ACCEPT |
如果是其它的防火墙,请查阅相关的资料。
最终的效果是让外网能访问到这4个端口,测试可以是telnet工具测试tcp的端口139和62727格式为telnet <IP> <port> 能连接上则表明端口已经正常了。建议是用nmap的端口扫描工具来,格式为nmap <IP> 最终能访问的端口都会显示出来。
一定要在用户机子上进行测试为准。
3 在windows下连接
由于网民的445端口出方向被封了。需要访问的数据转发到能访问的62727端口上,流程大致为:
graph TB
本地127.0.0.1--62727端口-->宿主机:62727端口
subgraph 主控端
宿主机:62727端口--455端口-->容器提供的服务
end
subgraph 用户端
共享文件夹连接本地--445端口-->本地127.0.0.1
end
3.1 配置用户端端口转发
打开cmd,以管理员身份打开(如果不是则ctrl+R,然后Ctrl+Shift+Enter切换).
1 | netsh interface portproxy add v4tov4 listenport=445 connectaddress=远程ip connectport=62727 |
查看是否生效可以再输入:netsh interface portproxy show all来查询已经生效的端口转发
1 | Microsoft Windows [Version 10.0.18362.592] |
如果要删除则netsh interface portproxy delete v4tov4 listenaddress=欲删除项目的监听IP listenport=欲删除项目的监听端口
最后Ctrl-R 然后输入\\127.0.0.1就可以访问了不用密码的公开目录,而\\127.0.0.1\example1输入下密码就能访问账号下的目录了。需要添加快捷方式则在文件管理器中配置下网络位置方便下次使用.
本文资料参考于:
端口转发内容部分: https://www.zhihu.com/question/59814912
cmd管理员部分: https://blog.csdn.net/zyw_anquan/article/details/7756499
镜像内容部分: https://hub.docker.com/r/dperson/samba
本地转发部分: https://blog.csdn.net/cxwithyxy/article/details/83864824
docker案例部分: https://blog.joefom.com/archives/164
相关资料:
smbclient使用说明: https://blog.csdn.net/yexiangcsdn/article/details/82867469