Настройка DNS в Docker
Помогите пожалуйста разобраться с DNS сервером не разу не настраивал и как правильно это делать не очень понимаю. Единственный раз когда у меня DNS заработал это когда я установил Hestia Control Panel. Но настройка автоматом конечно хорошо но всё же хочется разобраться как работает и как надо правильно настраивать. В данный момент использую Docker и тут у меня вообще полный ступор как связать DNS сервер с Docker что бы домены можно было привязать по NS-записям и если к примеру я буду добавлять или удалять какой то домен то это можно было сделать через консоль.
Одолжив бубен у шамана что то получилось сделать а именно сделал следующее:
(Для примера буду использовать домен lab-net.lan)
Создал сеть
docker network create lan-lab-net --subnet 172.24.0.0/16
Создал файлы с таким содержимым:
Dockerfile
FROM ubuntu
RUN apt-get -y update && apt-get install -y bind9
COPY named.conf.options /etc/bind/
COPY named.conf.local /etc/bind/
COPY db.lab-net.lan /etc/bind/zones/
CMD ["/usr/sbin/named", "-g", "-c", "/etc/bind/named.conf", "-u", "bind"]
EXPOSE 53/tcp
EXPOSE 53/udp
EXPOSE 953/tcp
named.conf.options
options {
directory "/var/cache/bind";
recursion yes;
listen-on { any; };
forwarders {
8.8.8.8;
8.8.4.4;
};};
named.conf.local
zone "lab-net.lan" {
type master;
file "/etc/bind/zones/db.lab-net.lan";
};
db.lab-net.lan
$TTL 1d ;
;default expiration time (in seconds) of all RRs without their own TTL value
@ IN SOA ns1.lab-net.lan. root.lab-net.lan. (
3 ; Serial
1d ; Refresh
1h ; Retry
1w ; Expire
1h ); Negative Cache TTL;
;name servers - NS records
@ IN NS ns1.lab-net.lan.;
;name servers - A records
ns1.lab-net.lan. IN A 172.24.0.2
lab-net.lan. IN A 172.24.0.3
Создал контейнер для DNS и присвоил ему IP 172.24.0.2
docker run -d -p 53:53/tcp -p 53:53/udp -p 127.0.0.1:953:953/tcp --rm --name=dns-master --net=lan-lab-net --ip=172.24.0.2 b9-serv:b9
Создал тестовый контейнер и присвоил ему IP 172.24.0.3
docker run -d --rm --name=test-conteiner --net=lan-lab-net --ip=172.24.0.3 --dns=172.24.0.2 test1:t1
После всех манипуляций и незначительных исправлений при проверке через nslookup вроде что то заработало
user@user:~# nslookup
> server 172.24.0.2
Default server: 172.24.0.2
Address: 172.24.0.2#53
> lab-net.lan
Server: 172.24.0.2
Address: 172.24.0.2#53
Name: lab-net.lan
Address: 172.24.0.3
Подскажите пожалуйста как мне теперь по домену lab-net.lan зайти на сайт из интернета что нужно ещё настроить?
Ответы (1 шт):
Для того, чтобы опубликовать сайт в интернете, вам нужно 5 вещей:
- домен, приобретенный у регистратора
- статический внешний IP адрес у той машины, на которой крутятся ваш докер либо nginx proxy который распределяет запросы между вашими докерами
- A-запись у регистратора о том, что ваш домен соответствует вашему внешнему статическому IP
- Проброс портов внутрь (80,443 и т.д.) на маршрутизаторе, через который ваша машина выходит в инет
- Правила iptables/ufw на машине о том, что с внешнего IP можно подключаться по этим портам
Когда вы регистрируете домен у регистратора (nic.ru, reg.ru и т.д.) он попадает в глобальную публичную таблицу DNS записей. И только после этого любой ПК в интернете сможет понять, что вашему домену соответствует ваш внешний статический ip и пойти по нему.
.lan это ваш локальный домен, который виден только из вашей локальной сети и его никак нельзя использовать снаружи.