JankinZhang
V2EX  ›  问与答

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

  •  1
     
  •   JankinZhang · Jan 25, 2021 · 2723 views
    This topic created in 1934 days ago, the information mentioned may be changed or developed.
    我是使用 Android 设备开热点来组建局域网 Windows 端配置完成后 查看 ipv4 地址 在 ios 的文件中连接服务器
    smb://ipv4 地址 这样操作很成功 没有问题 但随后了解到如果用路由器 则可以使用 smb://电脑名称 来解决动态 ip 的问题
    想问问:可以这样操作吗?路由器的 DNS 设置有什么需要主义的地方吗?我用 Android 热点组的局域网可否这样操作?
    感谢大佬
    15 replies    2021-01-26 03:50:10 +08:00
    idealhs
        1
    idealhs  
       Jan 25, 2021
    啊这,你试一下不就完了么
    0TSH60F7J2rVkg8t
        2
    0TSH60F7J2rVkg8t  
       Jan 25, 2021 via iPhone
    smb://电脑主机名 访问,使用的是 arp 协议,通过 arp 广播,查找 mac 和 ip 对应的主机,随后进行通信。此协议是以太网协议,没有 dns 参与,路由器无需设置 dns
    dier
        3
    dier  
       Jan 25, 2021
    直接在路由器上 DHCP 设置里为 Android 设备(或者任意想要固定 IP 的设备)的 MAC 地址静态绑定一个 IP 就不会变了,主机名有时可能也会修改导致旧的连不上。另外 #2 说得没错 ARP 只在二层交换,不需要 DNS
    sujin190
        4
    sujin190  
       Jan 25, 2021
    @ahhui #2 你这前面主机名,后面 ip,驴唇不对马嘴了吧

    其实 windows 这个局域网主机名可以访问似乎试 NetBIOS 的 NBNS 服务提供的吧,其实也就是网络发现,Android 的话自己就没原生支持 smb,具体怎么查找本地网络就看安装的 smb 软件怎么实现了,ios 没用过不清楚,不过估计输入主机名估计在手机上就是走 dns 解析的,一般路由也不支持设置自定义解析吧,openwrt 的话可以在 dnsmasq 添加一条解析记录就好了
    yutou527
        5
    yutou527  
       Jan 25, 2021
    他说的应该是“查找主机对应的 MAC 和 IP”
    JankinZhang
        6
    JankinZhang  
    OP
       Jan 25, 2021
    路由器丢学校了 热点试了试貌似不行
    JankinZhang
        7
    JankinZhang  
    OP
       Jan 25, 2021
    @idealhs 路由器丢学校了 热点试了试貌似不行
    0TSH60F7J2rVkg8t
        8
    0TSH60F7J2rVkg8t  
       Jan 25, 2021
    @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
        9
    AoTmmy  
       Jan 25, 2021 via Android
    不知道为什么我的 iPad 连接 smb://ip 一直失败,只能用 smb://主机名
    JankinZhang
        10
    JankinZhang  
    OP
       Jan 25, 2021
    @ahhui 连路由器试了试 win10ipv4 是 192.168.1.143 ipad 是 192.168.1.144
    使用 ipad 自带的 文件-连接服务器-smb://192.168.1.134 可以正常访问 win10 的共享文件夹
    smb://+电脑名称 也不行
    JankinZhang
        11
    JankinZhang  
    OP
       Jan 25, 2021
    倒是 Android 使用 ES 文件浏览器-网络-局域网-扫描 可以直接看到 win10 电脑名称
    lin559671
        12
    lin559671  
       Jan 25, 2021 via Android
    Windows server 有个叫 wins 的服务,了解下就知道了
    0TSH60F7J2rVkg8t
        13
    0TSH60F7J2rVkg8t  
       Jan 25, 2021
    @JankinZhang 因为这里有 2 个问题,1 个是查找主机名对应的 ip 地址,另外一个是 smb 连接这个 ip 地址。貌似 android 没有实现 NetBIOS 的 Client 协议,所以在查找主机名的时候,直接问 DNS 了,于是就查不到了。ES 文件浏览器的扫描使用的是网络设备发现协议,那是另外一个问题了。

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

    另一种方法是使用 mdns,用"主机名.local"访问,不过 android 默认不支持这个。
    docx
        15
    docx  
       Jan 26, 2021 via iPhone
    就是 hostname 吧
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   1017 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 18:54 · PVG 02:54 · LAX 11:54 · JFK 14:54
    ♥ Do have faith in what you're doing.