V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LeeReamond
V2EX  ›  程序员

smb 服务使用的是哪个端口, docker 有办法通过端口映射的方式暴露服务吗?

  •  
  •   LeeReamond · 49 天前 · 1321 次点击
    这是一个创建于 49 天前的主题,其中的信息可能已经有所发展或是发生改变。

    宿主机是 windows ,需要实现局域网内各种主机到 NAS 的文件共享。

    windows 本身是有共享系统的,而且做的还不错,优点是权限管理粒度很细,但缺点是双方电脑都要经过比较复杂设置,开放很多权限,否则连不上。目前在用的 linux 的 smb 方案的缺点是粒度不够细,优点则是任意一台电脑不需要经过复杂配置,直接输入网络位置和密码就能访问。我目前倾向于使用 smb ,win 的每台机器都要设置的话太麻烦了。

    一个想法是宿主机是 windows ,并且想使用 smb 的话,能否通过 docker desktop ,挂载一个本地硬盘,并且在 docker 里暴露服务到主机端口,这样达到类似运行了一个 linux 物理机的效果?因为查了查,docker 的桥接模式跟普通意义上的网络桥接好像不太一样,没办法连接到路由器并获取一个内网都能访问到的 IP 位置。

    21 条回复    2023-02-04 18:49:10 +08:00
    leoQaQ
        1
    leoQaQ  
       49 天前
    smb 有个默认端口,忘了,注册表可以改,具体 Google 一下;
    不建议使用默认端口,风险太大。
    ppyzzz
        2
    ppyzzz  
       49 天前
    445
    LeeReamond
        3
    LeeReamond  
    OP
       49 天前
    @leoQaQ
    @ppyzzz 主要不是很理解这种服务的原理。。毕竟它不是个 http 服务,不是很懂是不是把 445 转接出来就能实现代理了。。

    另外安全性问题,既然是在家庭路由内网里使用,还有密码保护,应该还好吧
    f5c4ebc2
        4
    f5c4ebc2  
       49 天前 via Android
    其实只需要知道 SMB 服务默认暴露 445 端口,不需要了解原理就能通过 docker 的端口映射来使用服务了。SMB 虽然不是 HTTP 服务,但本质上也是基于 TCP 协议和对应的 IP:port
    f5c4ebc2
        5
    f5c4ebc2  
       49 天前 via Android
    通信的,所以只要能访问这个 socket 就能使用服务。
    webcape233
        6
    webcape233  
       49 天前 via iPhone
    samba 的 linux 上性能比 win 上差的老远了。
    LeeReamond
        7
    LeeReamond  
    OP
       49 天前
    @f5c4ebc2 试了试无法绑定,提示端口已占用,比较符合之前潜意识里感觉不行。而且试了试 docker desktop 的内存占用挺坑的,完全没有省的特征,还不如 hv 直接开个虚拟机
    LeeReamond
        8
    LeeReamond  
    OP
       49 天前
    @webcape233 我试了试,hv 走虚拟网卡的话大概顺序读写是 500/500MBPS,其实还可以了,机械硬盘读写都能跑满,我没啥不满意的
    webcape233
        9
    webcape233  
       49 天前 via iPhone
    win 共享不是很简单呢,共享出去就行了,在 server 端管理用户,client 端登录即可。
    f5c4ebc2
        10
    f5c4ebc2  
       48 天前
    @LeeReamond #7 端口已占用可能是因为宿主机 445 端口上已经跑了其他服务了(例如 Windows 自身的 SMB ),和 Docker 本身无关,可以使用一个非默认端口来解决; Docker Desktop 资源占用的确比较大。
    czwstc
        11
    czwstc  
       48 天前
    听说过永恒之蓝吗?
    kenvix
        12
    kenvix  
       48 天前 via Android
    @webcape233 你要高性能实现的话是 ksmbd
    beijiaoff
        13
    beijiaoff  
       48 天前
    不用担心勒索病毒,lz 这是局域网内部。
    话说我没理解你需求,你局域网的 windows 直接提供 smb 服务就完事了呀,为什么还要牵扯 docker 等?
    windows 共享后,其他客户端也是不需要复杂配置,直接输入网络位置和密码就能访问的。
    LeeReamond
        14
    LeeReamond  
    OP
       48 天前
    @beijiaoff 我个人使用经验是(系统是企业版 win10 ),如果使用 win 自己的共享的话,需要进共享中心,把所有网络发现都打开,然后密码和相关要求选项全都取消,c 和 s 全都要这么调才能连上,s 端额外还需要对文件夹进行一些共享和高级共享设置,这个不提。linux 的体验是新的 windows 不用调共享设置,直接添加网络位置并输入密码就可以访问
    opengps
        15
    opengps  
       48 天前
    没记错的话,运营商默认封 445 端口了
    LisaSue
        16
    LisaSue  
       48 天前
    @LeeReamond win+r \\+ip 地址就好了啊,哪有那么复杂
    onikage
        17
    onikage  
       48 天前
    性能比起直连差的比较多,我的 2.5 寸 cmr 笔记本硬盘共享出来千兆跑不满.
    LeeReamond
        18
    LeeReamond  
    OP
       48 天前
    @LisaSue 有的机器能访问有的机器不能访问。

    [Window Title]
    网络错误

    [Main Instruction]
    Windows 无法访问 \\DESKTOP-115TIM8\Sunny

    [Content]
    你没有权限访问 \\DESKTOP-115TIM8\Sunny 。请与网络管理员联系请求访问权限。

    有关权限的详细信息,请参阅 Windows 帮助和支持

    [关闭(C)]
    tree2525
        19
    tree2525  
       48 天前
    在用 linux 的 smb ,多用户权限也很好用啊,还有共享文件的回收站,详细的日志;
    beijiaoff
        20
    beijiaoff  
       48 天前   ❤️ 1
    @LeeReamond 有的访问不了这个的确是常见的问题……给我的感觉就是 smb 鲁棒性很差。不如在 windows 上开一个第三方的 webdav 服务,我用过一阵 Cute Http File Server(chfs ,一个很简单独立 exe 文件打开即用)感觉就很稳定。说到 webdav ,windows 本身也可以挂载,但是也是有参数限制,否则就访问不了。win 做网络服务真让人觉得是个半成品。
    flexbug
        21
    flexbug  
       48 天前 via iPhone
    你来这问不如问 chatgpt
    关于   ·   帮助文档   ·   博客   ·   nftychat   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   实用小工具   ·   2572 人在线   最高记录 5556   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 42ms · UTC 13:47 · PVG 21:47 · LAX 06:47 · JFK 09:47
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.