Рейтинг:0

Fritz!Box и Ubuntu: предоставление URL-адреса в локальной сети с помощью Apache Httpd и Bind

флаг ck

Я надеюсь, что кто-то может помочь мне с этой, как я думал, простой задачей.

Ситуация:

В моей частной локальной сети я использую интернет-маршрутизатор («Fritz! Box») и Raspberry Pi с Ubuntu 20.04 LTS. Я разработал небольшое веб-приложение Spring Boot для личных целей, которое я хочу использовать только в своей локальной сети (или, возможно, через VPN извне). Собственный URL-адрес веб-приложения — «http://ubuntu:8080», потому что моя малина называется «ubuntu», а приложение работает на сервере Tomcat. Теперь я хочу открыть URL-адрес, например, например. «http://thats-my.app» внутри локальной сети и используйте его в качестве базового URL-адреса для приложения. На данный момент curl на ubuntu может до него дотянуться, а мой другой компьютер не может.

Еще лучше было бы полное доменное имя «http://wow.thats-my.app» (с субдоменом), чтобы я мог использовать один и тот же домен и домен верхнего уровня для всех приложений и варьировать только субдомен, например «http ://super.thats-my.app" и так далее.. Отказ от ответственности: поскольку я работаю через SSH, вся настройка выполняется только через терминал. Учтите, что я не использую рабочий стол Ubuntu.

Заранее спасибо за ваше время и, надеюсь, за вашу помощь!

Вот настройки, которые я сделал для системы Ubuntu. То, что здесь не показано, закомментировано!:

уфв

Статус: активен

     К действию от
     -- ------ ----
[ 1] 9090/tcp РАЗРЕШИТЬ ВХОД В любом месте # UBUNTU-COCKPIT
[ 2] 3306/tcp РАЗРЕШИТЬ ВХОД В любом месте # MYSQL
[ 3 ] Apache Full ALLOW IN Anywhere # :80,:443
[ 4] Bind9 РАЗРЕШИТЬ ВХОД В любом месте # :53
[ 5] OpenSSH РАЗРЕШИТЬ ВХОД В ЛЮБОМ месте # :22
[ 6] 8080:8090/tcp РАЗРЕШИТЬ ВХОД В любом месте # TOMCAT
[ 7] 9090/tcp (v6) РАЗРЕШИТЬ ВХОД В любом месте (v6) # UBUNTU-COCKPIT
[ 8] 3306/tcp (v6) РАЗРЕШИТЬ ВХОД В любом месте (v6) # MYSQL
[ 9] Apache Full (v6) РАЗРЕШИТЬ ВХОД В любом месте (v6) # :80,:443
[10] Bind9 (v6) РАЗРЕШИТЬ ВХОД В любом месте (v6) # :53
[11] OpenSSH (v6) РАЗРЕШИТЬ ВХОД ВСЕГДА (v6) # :22
[12] 8080:8090/tcp (v6) РАЗРЕШИТЬ ВХОД В любом месте (v6) # TOMCAT

/и т.д./хосты

127.0.0.1 локальный хост.локальный домен локальный хост
127.0.1.1 убунту
127.0.1.1 это-мое.приложение

(--> нет записей для IPv6)

/etc/apache2/сайты-доступны/это-мой.конф

<VirtualHost *:80>
        ServerName thats-my.app
        ServerAlias thats-my
        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyPreserveHost On
        ProxyPass               / http://localhost:8080/
        ProxyPassReverse        / http://localhost:8080/
</VirtualHost>

--> Символическая ссылка на каталог с поддержкой сайтов

/etc/bind/named.conf.local

зона "это мое.приложение" В {
        тип мастер;
        файл "/etc/bind/forward.thats-my.app.db";
        разрешить обновление {нет; };
};

зона "178.168.192.in-addr.arpa" В {
        тип мастер;
        файл "/etc/bind/reverse.thats-my.app.db";
        разрешить обновление {нет; };
};

/etc/bind/named.conf.options

параметры {
        директория "/var/cache/bind";
        экспедиторы {
        1.1.1.1;
        1.0.0.1;
        8.8.8.8;
        8.8.4.4;
        };
        автоматическая проверка dnssec;
        слушать на v6 { любой; };
        разрешить запрос { любой; };
};

/etc/bind/forward.thats-my.app.db

$TTL 604800
@ В SOA ns1.thats-my.app. admin.ns1.это-мое.приложение. (
                              5; Серийный
                         604800 ; Обновить
                          86400 ; Повторить попытку
                        2419200 ; Срок действия
                         604800 ) ; Отрицательный TTL кэша
;
@ В NS ns1.thats-my.app.
ns1 В А 192.168.178.23

/etc/bind/reverse.thats-my.app.db

$TTL 604800
@ В SOA это-мое.приложение. admin.это-мое.приложение. (
                              4; Серийный
                         604800 ; Обновить
                          86400 ; Повторить попытку
                        2419200 ; Срок действия
                         604800 ) ; Отрицательный TTL кэша
;
@ В NS ns1.thats-my.app.
ns1 В А 192.168.178.23
23 В PTR ns1.thats-my.app.

--> ввод в Терминал:

sudo systemctl перезапустить с именем
sudo systemctl перезапустить apache2
sudo systemctl перезапустить bind9

--> Конфигурация DNS в маршрутизаторе

Установите IP-адрес DNS IPv4 на 192.168.178.23 (основной и дополнительный)

Установите DNS IPv6 IP на IPv6-адрес компьютера с Ubuntu (основной и дополнительный)

Вот что я получил:

На локальном Ubuntu-сервере

$ curl это-мое.приложение -> ОК
$ dig thats-my.app -> статус: НЕТ ОШИБКИ *но* СЕРВЕР 1.1.1.1#53 ???
$ dig thats-my.app @127.0.1.1 -> "время ожидания соединения истекло!"
$ dig thats-my.app @192.198.178.23 -> "время подключения истекло!"

В локальной сети Windows-ПК PowerShell

curl thats-my.app -> не может быть разрешен

В локальной сети Windows-ПК Chrome Браузер

http://thats-my.app -> Веб-сайт недоступен / DNS_PROBE_FINISHED_NXDOMAIN

Если вы посмотрите на результаты «копания», мне кажется, что Bind9 здесь не работает. Что вы думаете?

Спасибо!

Рейтинг:0
флаг ck

Наконец-то я нашел решение: маршрутизатор («AVM Fritz! Box», очень распространенный в Германии) имеет функцию безопасности «DNS-Rebind-Protection», которая предотвращает DNS-запросы из локальной сети к другому хосту внутри локальной сети. Когда вы настраиваете исключение, набрав, например.TLD «lan» или, в случае выше, «app» в текстовом поле, ваш локальный DNS-сервер работает отлично. Вы можете удалить форвардеры.

PS: Вам не нужна запись в /etc/hosts!

PPS: https://bind9.readthedocs.io/en/latest/index.html

Удачи!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.