smb 局域网内 win10 和 ios 设备传文件的问题

2021-01-25 08:11:07 +08:00
 JankinZhang
我是使用 Android 设备开热点来组建局域网 Windows 端配置完成后 查看 ipv4 地址 在 ios 的文件中连接服务器
smb://ipv4 地址 这样操作很成功 没有问题 但随后了解到如果用路由器 则可以使用 smb://电脑名称 来解决动态 ip 的问题
想问问:可以这样操作吗?路由器的 DNS 设置有什么需要主义的地方吗?我用 Android 热点组的局域网可否这样操作?
感谢大佬
2035 次点击
所在节点    问与答
15 条回复
idealhs
2021-01-25 08:41:16 +08:00
啊这,你试一下不就完了么
0TSH60F7J2rVkg8t
2021-01-25 08:50:46 +08:00
smb://电脑主机名 访问,使用的是 arp 协议,通过 arp 广播,查找 mac 和 ip 对应的主机,随后进行通信。此协议是以太网协议,没有 dns 参与,路由器无需设置 dns
dier
2021-01-25 09:21:58 +08:00
直接在路由器上 DHCP 设置里为 Android 设备(或者任意想要固定 IP 的设备)的 MAC 地址静态绑定一个 IP 就不会变了,主机名有时可能也会修改导致旧的连不上。另外 #2 说得没错 ARP 只在二层交换,不需要 DNS
sujin190
2021-01-25 10:04:32 +08:00
@ahhui #2 你这前面主机名,后面 ip,驴唇不对马嘴了吧

其实 windows 这个局域网主机名可以访问似乎试 NetBIOS 的 NBNS 服务提供的吧,其实也就是网络发现,Android 的话自己就没原生支持 smb,具体怎么查找本地网络就看安装的 smb 软件怎么实现了,ios 没用过不清楚,不过估计输入主机名估计在手机上就是走 dns 解析的,一般路由也不支持设置自定义解析吧,openwrt 的话可以在 dnsmasq 添加一条解析记录就好了
yutou527
2021-01-25 11:51:18 +08:00
他说的应该是“查找主机对应的 MAC 和 IP”
JankinZhang
2021-01-25 11:58:51 +08:00
路由器丢学校了 热点试了试貌似不行
JankinZhang
2021-01-25 11:59:39 +08:00
@idealhs 路由器丢学校了 热点试了试貌似不行
0TSH60F7J2rVkg8t
2021-01-25 12:23:18 +08:00
@yutou527 #5 我在 2 楼的回复确实错了,arp 是 ip 和 mac 地址之间互相转换查找的协议,如 @sujin190 #4 所说,楼主的问题是 NetBIOS 协议负责完成的。查了下,NetBIOS 好像是 Windows 在用,不确定 Android 有没有使用,所以楼主 @JankinZhang #6 提到的,测试没有成功。

抱歉,我之前的回复是错的。有关 NetBIOS 的说明,可查看:
https://support.microsoft.com/en-us/topic/microsoft-tcp-ip-host-name-resolution-order-dae00cc9-7e9c-c0cc-8360-477b99cb978a
https://en.wikipedia.org/wiki/NetBIOS
AoTmmy
2021-01-25 12:26:14 +08:00
不知道为什么我的 iPad 连接 smb://ip 一直失败,只能用 smb://主机名
JankinZhang
2021-01-25 13:33:12 +08:00
@ahhui 连路由器试了试 win10ipv4 是 192.168.1.143 ipad 是 192.168.1.144
使用 ipad 自带的 文件-连接服务器-smb://192.168.1.134 可以正常访问 win10 的共享文件夹
smb://+电脑名称 也不行
JankinZhang
2021-01-25 13:44:07 +08:00
倒是 Android 使用 ES 文件浏览器-网络-局域网-扫描 可以直接看到 win10 电脑名称
lin559671
2021-01-25 14:44:48 +08:00
Windows server 有个叫 wins 的服务,了解下就知道了
0TSH60F7J2rVkg8t
2021-01-25 14:59:05 +08:00
@JankinZhang 因为这里有 2 个问题,1 个是查找主机名对应的 ip 地址,另外一个是 smb 连接这个 ip 地址。貌似 android 没有实现 NetBIOS 的 Client 协议,所以在查找主机名的时候,直接问 DNS 了,于是就查不到了。ES 文件浏览器的扫描使用的是网络设备发现协议,那是另外一个问题了。

我想到个比较简单的方法实现你的功能,在计算机上使用一个计划任务,检测局域网 ip 地址,如果是某个范围内,更新路由器的 hosts 文件(或者 dns 记录),可能需要配合路由器的 ssh 或者 telnet 协议登录,而且前提是路由器使用的是 OpenWrt 等开源固件。
jim9606
2021-01-25 16:09:40 +08:00
这个功能需要路由器支持,例如 openwrt 会自动将 dhcp 租约列表的主机名加入到內建的 dnsmasq 解析列表,这种情况你确保手机使用路由器作为 dns 服务器即可。

另一种方法是使用 mdns,用"主机名.local"访问,不过 android 默认不支持这个。
docx
2021-01-26 03:50:10 +08:00
就是 hostname 吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/748004

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX