win10连接公网ip的samba服务器

1、我们都知道,samba是默认使用445端口进行通信
2、因为 smb 服务本身就是主要针对 Windows 的,所以 445 端口被安排的明明白白。
3、由于2017年5月,那个永恒之蓝病毒(比特币勒索病毒),导致运营商(某信、某动、某通)把 445 端口封了,因此你无法通过 445 端口连接你的 linux 服务器了,也就是说:你的samba文件共享服务已经废了。


话不多说!往下看!!!

方案原理:

既然 445 被封了,我们只能换端口了,比方说换成 6727 端口,但是呢,windows 默认连的是 445 端口啊,印度佬们不让你改 windows 默认的 445 端口呀(讲道理可以改注册表来实现,但是我要是有几台 windows 电脑话岂不是要改得死去活来,况且要是你本来是有 windows 电脑与windows 电脑文件共享的呢)。这个时候通过netsh,设置本机端口映射到你那台 samba 的 linux 服务器的 6727 端口。最后,你就可以通过\\127.0.0.1来访问你的文件共享服务了。

配置 Samba

既然要使用其它端口,意味着我们服务的端口就不能再是 445,所以我们修改 Samba 主配置文件:/etc/samba/smb.conf;通过 smb ports 将 Samba 的端口更改为:6727,然后重启服务即可!systemctl restart smb

image.png

image.png

至此,samba服务就配置完成了

配置window10

先以管理员身份运行 cmd 控制台:这里以 Windows 10 为例

1、关闭 windows 的 445 端口:
若是你没有用过“某极度安全卫士”的话,你的 445 端口应该是一直被 LanmanServer 占用的,这个 LanmanServer 就是帮你把你电脑的文件分享给别人。所以你要把这个服务禁用了,这个服务显示的名字叫“Server”,你可以在 Windows 送的“服务”管理页面中看到(点击任务管理中的“服务”即可开启),然后禁用它。但我更喜欢用命令行操作。运行以下命令(要是运行后会显示"成功"二字):

sc config LanmanServer start= disabled
net stop LanmanServer

image.png

2、启动 windows 的 ip helper 服务

这个 ip helper 服务,就是用来搞端口转发的,没有了它就没法转发了。

运行以下命令(要是运行后会显示"成功"二字):sc config iphlpsvc start= auto

3、设置 windows 端口转发

假如你的公网ip是xxx.xx.xxx.xx

运行以下命令:netsh interface portproxy add v4tov4 listenport=445 connectaddress=xxx.xx.xxx.xx connectport=6727运行后什么都不会显示的
必须要重启电脑

查看转发的端口:netsh interface portproxy show v4tov4

image.png

4、输入\\127.0.0.1即可访问

image.png

若用linux访问smbclient //xxx.xx.xxx.xx/myshare -p 6727 -U samba;若不知道目录,则要检索smbclient -L //xxx.xx.xxx.xx -p 6727 -U samba
linux挂载samba:mount -t cifs //xxx.xx.xxx.xx/myshare /samba/samba1/ -o username=samba,password=samba,port=6727,取消挂载:umount /samba/samba1/
若用mac smb://用户名:密码@xxx.xx.xxx.xx:6727

至此,大功告成!!

注意点:

1、服务器有没对应开启6727端口


image.png

相关命令

# 添加端口转发
netsh interface portproxy add v4tov4 listenaddress= listenport= connectaddress= connectport=

istenaddress 等待连接的本地IP地址。
listenport 本地侦听TCP端口。
connectaddress 将传入连接重定向到本地或远程IP地址(或DNS名称)。
connectport 一个TCP端口,来自listenport的连接会被转发到该端口

# 查看已经设置的端口转发
netsh interface portproxy show all
netsh interface portproxy show v4tov4
netsh interface portproxy show v4tov6

# 查看端口是否已经监听
netstat -an | find "LISTEN"

# 修改已经设置的端口转发
netsh interface portproxy set v6tov4 listenport=
netsh interface portproxy set v4tov6 listenport=

# 删除已经设置的端口转发
netsh interface portproxy delete v6tov4 listenport=
netsh interface portproxy delete v4tov6 listenport=

# 删除指定的端口转发规则
netsh interface portproxy delete v4tov4 listenport= listenaddress=

# 清除所有当前的端口转发规则
netsh interface portproxy reset

你可能感兴趣的:(win10连接公网ip的samba服务器)