以下是一个经过优化的部署unbound服务的Docker Compose文件示例,其中包括参数优化,所有配置都在YAML文件中,不使用卷挂载:

version: '3.8'
services:
  unbound:
    image: mvance/unbound:latest
    ports:
      - "53:53/udp"
      - "53:53/tcp"
    environment:
      - TZ=UTC
      - UPSTREAM_RESOLVER=1.1.1.1
      - CACHE_MAX_SIZE=500m
      - NUM_THREADS=4
      - MSG_CACHE_SIZE=16m
      - RRSET_CACHE_SIZE=32m
      - OUTGOING_RANGE="4096"
      - INFRA_CACHE_SLABS="4"
      - INFRA_CACHE_CHUNK_SIZE="128k"
      - QNAME_MIN_WIRE=0
      - QNAME_MIN_STRLEN=0
      - DO_IPV6="no"
      - DO_UDP="yes"
      - DO_TCP="yes"
      - DO_DAEMONIZE="no"
      - HARDEN_GLUE="yes"
      - HARDEN_DNSSEC_STRICT="yes"
      - USE_CAPS_FOR_ID="yes"
      - EDNS_BUFFER_SIZE="4096"
      - EDNS_DO_QUERY_SOURCE="yes"
      - EDNS_EXTENDED_RCODE="yes"
    restart: always
    networks:
      unbound-network:
        ipv4_address: 172.18.19.42

networks:
  unbound-network:
    driver: bridge
    ipam:
      config:
        - subnet: 172.18.19.0/24
    name: unbound-network

在上述示例中,我们使用了一些额外的环境变量来进行更详细的参数优化:

  • MSG_CACHE_SIZE=16m:设置消息缓存的大小为16兆字节。
  • RRSET_CACHE_SIZE=32m:设置RRset缓存的大小为32兆字节。
  • OUTGOING_RANGE="4096":设置出站端口的范围为4096,用于并发查询。
  • INFRA_CACHE_SLABS="4":设置基础缓存的分片数为4,用于提高缓存性能。
  • INFRA_CACHE_CHUNK_SIZE="128k":设置基础缓存的块大小为128千字节。
  • QNAME_MIN_WIRE=0:设置查询名称的最小长度(以字节为单位),默认为0。
  • QNAME_MIN_STRLEN=0:设置查询名称的最小长度(以字符为单位),默认为0。
  • DO_IPV6="no":禁用IPv6支持,如果你的环境不需要IPv6,可以使用此选项。
  • DO_UDP="yes":启用UDP查询支持。
  • DO_TCP="yes":启用TCP查询支持。
  • DO_DAEMONIZE="no":禁用守护进程模式,使unbound以前台模式运行。
  • HARDEN_GLUE="yes":启用对DNS回答中的附加信息(例如NS记录)的严格检查。
  • HARDEN_DNSSEC_STRICT="yes":启用严格的DNSSEC验证。
  • USE_CAPS_FOR_ID="yes":使用大写字母作为查询ID。
  • EDNS_BUFFER_SIZE="4096":设置EDNS缓冲区的大小为4096字节。
  • EDNS_DO_QUERY_SOURCE="yes":启用查询源IP地址的EDNS选项。
  • EDNS_EXTENDED_RCODE="yes":启用扩展的RCODE编码。

这些参数优化可以根据你的需求进行修改,以满足特定的性能和安全要求。

请注意,unbound的参数优化涉及多个方面,根据你的具体需求和环境,可能需要进一步调整和优化参数。

这个示例提供了一个更详细的参数优化的部署unbound服务的Docker Compose文件。你可以根据需要修改这些参数和配置。

最后修改:2023 年 11 月 03 日
如果觉得我的文章对你有用,请随意赞赏