@sequelone

Как настроить DNS в Vagrant?

Всем привет. Имеется 1 хост машина с Windows 10 и 3 гостевых машины с Ubuntu 22.04. На одной стоит CloudPanel, на двух других bind. Все 3 гостевых машины имеют одну подсеть на которой основной интернет шлюз в машине хосте. На этих двух машинах настроены DNS как Master и Slave (ns1.sequel.loc, ns2.sequel.loc) как показано на сайте. В гостевой машине с CloudPanel можно проверить работу DNS:

dig sequel.loc

vagrant@ubuntu-jammy:~$ dig sequel.loc

; <<>> DiG 9.18.12-0ubuntu0.22.04.1-Ubuntu <<>> sequel.loc
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 5084
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: d2a18bd5dcbe8bea0100000064611c54d13cbfbb8aa29027 (good)
;; QUESTION SECTION:
;sequel.loc.                    IN      A

;; ANSWER SECTION:
sequel.loc.             604800  IN      A       192.168.2.10

;; Query time: 0 msec
;; SERVER: 192.168.2.21#53(192.168.2.21) (UDP)
;; WHEN: Sun May 14 19:37:24 CEST 2023
;; MSG SIZE  rcvd: 83


Все данные отдаются корректно.

Файлы с настройками Vagrant

1. CloudPanel:

Vagrant.configure("2") do |config|
	config.vm.box = "ubuntu/jammy64"
	config.vm.network "forwarded_port", guest: 80, host: 8080
	config.vm.network "public_network", ip: "192.168.2.10", bridge: "Intel(R) Wi-Fi 6 AX201 160MHz"
	config.vm.synced_folder ".", "/vagrant"
	
	config.vm.provider :virtualbox do |vb|
		vb.cpus = 2
		vb.memory = "4096"
		vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
		vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
	end
end


2. DNS Master (ns1.site.loc)

Vagrant.configure("2") do |config|
	config.vm.box = "ubuntu/jammy64"
	config.vm.network "public_network", ip: "192.168.2.21", bridge: "Intel(R) Wi-Fi 6 AX201 160MHz"
	config.vm.synced_folder ".", "/vagrant"
	
	config.vm.provider :virtualbox do |vb|
		vb.cpus = 1
		vb.memory = "1024"
		vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
		vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
	end
end


3. DNS Slave (ns2.site.loc)

Vagrant.configure("2") do |config|
	config.vm.box = "ubuntu/jammy64"
	config.vm.network "public_network", ip: "192.168.2.22", bridge: "Intel(R) Wi-Fi 6 AX201 160MHz"
	config.vm.synced_folder ".", "/vagrant"
	
	config.vm.provider :virtualbox do |vb|
		vb.cpus = 1
		vb.memory = "1024"
		vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
		vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
	end
end


Вариант с внесением изменений в файл hosts на машине хосте отпадает, т.к. домены должны быть видны всей локальной сети, а прописывать на каждой машине эти настройки не вариант. Для MacOS и Linux есть плагин vagrant-dns, правда он не поддерживает Windows.

Если задать в PowerShell команду, то выдаёт следующее:

ipconfig /all

6460afe144a4d073857485.png

DNS сервера в машине хосте работают, проблема похоже в настройках nginx. Сайт по домену не открывается и выдаёт ошибку:

6460b07ae2a58044844013.png

Update 1:

Похоже в конфиге nginx нужно настроить upstream и proxy_pass. Надо изучить мануал.

Update 2:

Забыл проверить самое очевидное. Пинг из хост машины до домена не идёт и выдаёт ошибку:

λ ping sequel.loc
При проверке связи не удалось обнаружить узел sequel.loc.
Проверьте имя узла и повторите попытку.


Как, а главное где настроить сеть, чтобы по доменам можно было зайти на сайт в машине хосте с Windows 10?
  • Вопрос задан
  • 287 просмотров
Решения вопроса 1
@sequelone Автор вопроса
Удалось побороть всё это дело. В гостевых системах Ubuntu 22.04 c Master и Slave открываем в редакторе файл /etc/bind/named.conf.option

nano /etc/bind/named.conf.option

И изменяем секцию forwarders {...} на следующее содержимое:

forwarders {
                // Router DNS
                192.168.2.1

                // Google Public DNS
                8.8.8.8;
                8.8.4.4;
 
                // OpenDNS
                208.67.222.222;
                208.67.220.220;
        };


Сохраняем (CTRL + S) и выходим из редактора nano (CTRL + X). После чего перезагружаем наши DNS сервера:

systemctl restart named

Открываем в браузере наш сайт https://sequel.loc и видим заветное сообщение:

646133cbc05f0597774603.png

То есть нужно указать главный шлюз нашего роутера.

Создал обширный мануал https://github.com/SequelONE/Vagrant-CloudPanel-DNS

Update:

Удалось решить проблему с пингом из хост-машины. Подробности тут https://github.com/SequelONE/Vagrant-CloudPanel-DN... скоро перепишу мануал.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы