Я полагаюсь на множество образов Docker, и нецелесообразно изменять /etc/apt/source.list для каждого из них, поэтому я хочу перенаправить archive.ubuntu.com
на зеркало на уровне DNS (у меня уже есть собственный dnsmasq / unbound в сети).
Моя установка представляет собой Pi-Hole, работающий на порту 53 (pihole-FTL 4.0, с базовым dnsmasq), который указывает на несвязанный запуск на порту 5353:
server=127.0.0.1#5353
Чтобы добиться перенаправления, я добавил эти строки в несвязанную конфигурацию:
local-zone: "archive.ubuntu.com." typetransparent
local-data: "archive.ubuntu.com. CNAME ubuntu.mirror.su.se."
И вроде нормально работает (несвязанный на порт 5353):
root@raspberrypi:~# dig +short -p 5353 @127.0.0.1 archive.ubuntu.com
ubuntu.mirror.su.se.
root@raspberrypi:~# dig +short -p 5353 @127.0.0.1 ubuntu.mirror.su.se
193.11.30.223
root@raspberrypi:~#
Странно то, что dnsmasq теряет себя с этим:
root@raspberrypi:~# dig +short -p 53 @127.0.0.1 archive.ubuntu.com
ubuntu.mirror.su.se.
root@raspberrypi:~# dig +short -p 53 @127.0.0.1 ubuntu.mirror.su.se
root@raspberrypi:~#
Для меня это не имеет большого смысла, поскольку dnsmasq должен просто ретранслировать все несвязанное, отправленное в качестве ответа, но каким-то образом dnsmasq что-то делает с этим.
Сначала я подумал, что это может быть проверка DNSSEC, но тогда ошибка должна была быть в archive.ubuntu.com, а не в зеркале.
Есть идеи, как это отладить?
Похоже, несвязанный сам может это сделать:
local-zone: "archive.ubuntu.com" redirect
local-data: "archive.ubuntu.com. CNAME se.archive.ubuntu.com."
Это дает:
$ docker run --rm -it test bash
root@3f1c7eff6ebc:/# dig archive.ubuntu.com
; <<>> DiG 9.11.3-1ubuntu1.5-Ubuntu <<>> archive.ubuntu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 14903
;; flags: qr rd ra; QUERY: 1, ANSWER: 4, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;archive.ubuntu.com. IN A
;; ANSWER SECTION:
archive.ubuntu.com. 3265 IN CNAME se.archive.ubuntu.com.
se.archive.ubuntu.com. 3265 IN CNAME ftp.acc.umu.se.
ftp.acc.umu.se. 3265 IN A 194.71.11.165
ftp.acc.umu.se. 3265 IN A 194.71.11.173
;; Query time: 3 msec
;; SERVER: 192.168.1.2#53(192.168.1.2)
;; WHEN: Thu Feb 28 19:31:27 UTC 2019
;; MSG SIZE rcvd: 142