You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于Docker部署支持SMBv1、NetBIOS名称并跨多隔离网络的Samba共享方案求助

基于Docker部署支持SMBv1、NetBIOS名称并跨多隔离网络的Samba共享方案求助

我现在碰到一个挺棘手的特定场景,想请大家帮忙出出主意:

我有一台老旧的工业设备,它必须依赖SMBv1协议和NetBIOS名称才能找到它的工作数据。目前我是用一台带双网卡的Windows电脑做中转,把这台老设备和公司其他网络隔离开来保证安全,但其他同事也需要访问这些数据,才能给老设备分配新的任务。

现有环境细节

  • 中转用的Windows电脑,两个网卡分别对应两个隔离网段:192.168.178.0/24(公司办公网)和 192.168.69.0/24(老设备专属网段)
  • 老旧设备的固定IP是 192.168.69.91,它只会通过NetBIOS名称 PC-MASTER 来查找共享数据,而且因为系统版本太老,完全没办法修改它的访问逻辑,必须启用SMBv1才能正常工作
  • 我的核心服务器是Supermicro搭配VMware ESXi 7.0,目前跑了两个VM:
    • 一个Windows VM:带多网卡,分别配置了192.168.69.90和192.168.178.0/24网段的IP,已经启用了SMBv1并配置好所需共享。老设备直接连到Supermicro的一块独立网卡实现网络隔离,另一块网卡连到Netgear GS748T交换机,让办公网的同事能访问共享。
    • 一个PhotonOS VM:用Docker部署了ERPNext、自研内部系统、Traefik、Pi-hole等服务,我想把Samba共享也迁移到这个Docker环境里,替代掉现在的Windows中转机。

我尝试过的配置和遇到的问题

第一次尝试:Host网络模式

我先用host网络模式部署了dperson/samba容器,配置文件如下:

version: '3.0'

services:
  samba:
    image: dperson/samba
    container_name: mimot_smb
    hostname: pc-master
    environment:
      TZ: 'Europe/Berlin'
    network_mode: "host"
    ports:
      - "137:137/udp"
      - "138:138/udp"
      - "139:139/tcp"
      - "445:445/tcp"
    tmpfs:
      - /tmp
    restart: unless-stopped
    stdin_open: true
    tty: true
    volumes:
      - /tmp/mimot:/mimot
    command: '-n -S -g "netbios name = pc-master" -g "workgroup = ARBEITSGRUPPE" -s "mimot;/mimot;yes;no;yes" -p'

遇到的问题:我能在Docker宿主机上访问到共享,但没办法通过NetBIOS名称pc-master来访问,老设备根本找不到这个共享。

第二次尝试:Macvlan网络模式

我想着先不考虑多IP的问题,先把NetBIOS的问题解决,于是创建了一个macvlan网络:

docker network create --driver=macvlan --gateway=192.168.0.1 --subnet=192.168.0.0/24 --ip-range=192.168.0.215/28 -o parent=eth0 mimot

然后修改了Docker Compose配置,切换到这个macvlan网络:

version: '3.0'

services:
  samba:
    image: dperson/samba
    container_name: mimot_smb
    hostname: pc-master
    environment:
      TZ: 'Europe/Berlin'
    networks:
      - mimot
    ports:
      - "137:137/udp"
      - "138:138/udp"
      - "139:139/tcp"
      - "445:445/tcp"
    tmpfs:
      - /tmp
    restart: unless-stopped
    stdin_open: true
    tty: true
    volumes:
      - /tmp/mimot:/mimot
    command: '-n -S -g "netbios name = pc-master" -g "workgroup = ARBEITSGRUPPE" -s "mimot;/mimot;yes;no;yes" -p'

networks:
  mimot:
    external: true

遇到的问题:容器成功获取了独立的IP地址,但NetBIOS名称还是没法正常生效,老设备依然找不到pc-master这个共享。现在我既没办法让容器同时拥有两个网段的IP(来对接老设备网段和办公网段),也没法让NetBIOS名称正常工作。

补充说明

  • Edit 1:不需要在Windows的网络邻居里显示这台服务器,但必须确保能通过 \\pc-master\mimot\ 这个路径访问到共享,这是老设备唯一的访问方式
  • Edit 2:上面的现有环境部分补充了完整的服务器VM架构细节

有没有大佬能帮我看看怎么解决这个问题?

备注:内容来源于stack exchange,提问作者Thomson

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 09:59:31