Internal-Dns

DHCP:使用埠(不是 53)通告 DNS 伺服器

  • November 2, 2018

在我的網路中,我有一個執行多個應用程序的小型 docker swarm。最近,我嘗試設置兩個新服務,提供帶有 ispcpd 的 DHCP 和未綁定到網路的 DNS。

Master of the swarm 是一個新的 QNAP NAS 控制幾個 Pi3(為了可用性,SDCards 有時會在 24/7 使用時崩潰)。DHCP 已啟動並正在執行,但無法在埠 53 上啟動 DNS,因為該埠被 QNAP 上的 dnsmasq 阻止。QNAPs Container station 中的 docker/lxc 實現與 dnsmasq 一起用於容器網路中的 dhcp/dns 服務。所以這個埠被封鎖了。我可以在不同的埠上執行它,比如說 54。但是在 DHCP 選項中,據我從文件中看到的,我只能列出 dns 伺服器,但沒有埠規範。

有沒有辦法與埠資訊一起發布 DNS 伺服器?

正如邁克爾漢普頓所提到的,我不能為 DNS 宣傳特定埠

因為我不想更改 QNAP 的 dnsmasq-config(每次更新包時都會失去),所以我在 docker swarm 的其他節點(不是 QNAP 本身)上安裝了一個 systemd 服務,將 dns 作為本地容器啟動。

這樣 qnap 不會嘗試綁定主機埠 53,因為容器不在 swarm 範圍內執行。

有點話題,但這是我用於服務的腳本:

#
# Docker + unbound DNS systemd service
#
# This service aims to make the update and invocation of the docker-dns
# container seemless.  It automatically downloads the latest docker-dns
# image and instantiates a Docker container with that image.  At shutdown it
# cleans-up the old container.
#
# In the event the service dies (crashes, or is killed) systemd will attempt
# to restart the service every 10 seconds until the service is stopped with
# `systemctl stop docker-dns@NAME`.
#
# To use:
# 1. Create a Docker volume source folder named `NAME` in DATA_SRC path where NAME is the
#    user's choice to describe the use of the container.
# 2. Download this service file to /etc/systemd/system/docker-dns@.service
# 3. Enable and start the service template with:
#    `systemctl enable --now docker-dns@NAME.service`
# 4. Verify service start-up with:
#    `systemctl status docker-dns@NAME.service`
#    `journalctl --unit docker-dns@NAME.service`
#
# For more information, see the systemd manual pages.
#
[Unit]
Description=unbound DNS Docker Container
Documentation=
After=network.target docker.socket
Requires=docker.socket

[Service]
RestartSec=10
Restart=always

Environment="NAME=dns-%i"
Environment="DATA_VOL=/mnt/nas/dns/%i"
Environment="IMG=192.168.0.65:6088/unbound:latest"

# To override environment variables, use local configuration directory:
# /etc/systemd/system/docker-openvpn@foo.d/local.conf
# http://www.freedesktop.org/software/systemd/man/systemd.unit.html

# Clean-up bad state if still hanging around
ExecStartPre=-/usr/bin/docker rm -f $NAME

# Attempt to pull new image for security updates
ExecStartPre=-/usr/bin/docker pull $IMG

# Main process
ExecStart=/usr/bin/docker run --rm -v ${DATA_VOL}:/usr/local/etc/unbound.zones.d.src --name ${NAME} -p 53 -p 53/udp --net=host ${IMG} $

[Install]
WantedBy=multi-user.target

引用自:https://serverfault.com/questions/937944