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

如何让Debian服务器的MongoDB容器仅通过vSwitch被Windows服务器访问

解决方案

方法一:默认Docker Bridge + iptables访问限制(最简方案)

无需修改Docker网络模式,通过绑定容器到内网IP+iptables规则实现仅内网访问:

  1. 启动MongoDB容器时仅绑定Debian服务器的内网IP
    假设Debian服务器的内网IP为192.168.100.2,替换为你实际的内网IP:

    docker run -d --name mongodb \
      -p 192.168.100.2:27017:27017 \
      -v mongodb-data:/data/db \
      mongo:latest
    

    此命令会让MongoDB仅监听Debian的内网IP,而非默认的0.0.0.0(公网+内网都监听)。

  2. 添加iptables规则限制仅Windows服务器IP访问
    执行以下命令,拒绝所有非192.168.100.1的IP访问27017端口:

    iptables -A INPUT -p tcp --dport 27017 -s ! 192.168.100.1 -j DROP
    
  3. 持久化iptables规则(防止重启失效)
    安装iptables持久化工具并保存规则:

    apt update && apt install -y iptables-persistent
    iptables-save > /etc/iptables/rules.v4
    

方法二:自定义Docker Bridge网络(隔离性更强)

创建专属内网服务的自定义Bridge网络,避免和默认Bridge的公网服务混同:

  1. 创建自定义内网Bridge网络
    选择一个和vSwitch不冲突的网段(比如192.168.101.0/24):

    docker network create --subnet=192.168.101.0/24 --gateway=192.168.101.1 internal-bridge
    
  2. 启动MongoDB容器到自定义网络
    不映射端口到主机,通过Docker内部网络通信,再通过Debian做转发:

    docker run -d --name mongodb \
      --network internal-bridge \
      --ip 192.168.101.10 \
      -v mongodb-data:/data/db \
      mongo:latest
    
  3. 配置Debian的端口转发+iptables限制
    开启IP转发:

    echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
    sysctl -p
    

    添加转发规则,将Debian内网IP的27017端口转发到容器IP:

    iptables -t nat -A PREROUTING -d 192.168.100.2 -p tcp --dport 27017 -j DNAT --to-destination 192.168.101.10:27017
    iptables -A FORWARD -d 192.168.101.10 -p tcp --dport 27017 -s 192.168.100.1 -j ACCEPT
    iptables -A FORWARD -d 192.168.101.10 -p tcp --dport 27017 -j DROP
    

    执行iptables-save > /etc/iptables/rules.v4持久化规则。

方法三:修复IPvlan网络配置(原生内网直连)

如果坚持使用IPvlan,检查以下配置步骤是否正确:

  1. 确定内网物理网卡名称
    执行ip addr查看,比如内网网卡为ens3(替换为你实际的网卡名)。

  2. 创建IPvlan网络
    确保子网和vSwitch的192.168.100.0/24一致:

    docker network create -d ipvlan \
      --subnet=192.168.100.0/24 \
      --gateway=192.168.100.1 \
      -o parent=ens3 \
      ipvlan-internal
    
  3. 启动MongoDB容器到IPvlan网络
    分配一个vSwitch网段内的未使用IP(比如192.168.100.3):

    docker run -d --name mongodb \
      --network ipvlan-internal \
      --ip 192.168.100.3 \
      -v mongodb-data:/data/db \
      mongo:latest
    
  4. 验证连通性
    在Windows服务器上执行Test-NetConnection 192.168.100.3 -Port 27017测试连接。

额外安全建议

  • 修改MongoDB默认端口,避免被扫描:将27017改为自定义端口(比如27018),同步修改上述命令中的端口号。
  • 启用MongoDB身份验证:启动容器时添加--auth参数,创建管理员账号,防止未授权访问。

内容的提问来源于stack exchange,提问作者RuleSan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 20:58:16