基于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中转机。
- 一个Windows VM:带多网卡,分别配置了
我尝试过的配置和遇到的问题
第一次尝试: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
相关产品推荐
相关产品推荐

