Сервер протокола динамической конфигурации хоста (DHCP) динамически назначает IP-адреса и другие параметры конфигурации сети каждому устройству в сети. Сервер пересылки DNS в локальной сети пересылает DNS-запросы для нелокальных доменных имен вышестоящим DNS-серверам (за пределами этой сети). Сервер кэширования DNS отвечает на рекурсивные запросы от клиентов, чтобы запрос DNS мог быть решен быстрее, тем самым улучшая скорость поиска DNS для ранее посещенных сайтов.
dnsmasq — это легкий и простой в настройке сервер пересылки DNS, программное обеспечение DHCP-сервера и подсистема объявления маршрутизатора для небольших сетей. Dnsmasq поддерживает Linux, * BSD, Mac OS X, а также Android.
Он имеет подсистему DNS, которая предоставляет локальный DNS-сервер для сети, с пересылкой всех типов запросов на вышестоящие рекурсивные DNS-серверы и кэшированием общих типов записей. Подсистема DHCP поддерживает DHCPv4, DHCPv6, BOOTP, PXE и сервер TFTP. Подсистема объявления маршрутизатора поддерживает базовую автоконфигурацию для хостов IPv6.
СРОЧНО ЗАПРЕТИ ЭТИ НАСТРОЙКИ НА СВОЕМ ТЕЛЕФОНЕ! ХИТРОСТЬ НАСТРОЙКИ ПРО ДОСТУП К ЛИЧНЫМ ДАННЫМ
В этой статье мы расскажем, как установить и настроить DNS/DHCP-сервер с помощью dnsmasq в дистрибутивах CentOS/RHEL 8/7.
Установка dnsmasq в CentOS и RHEL Linux
1. Пакет dnsmasq доступен в репозиториях по умолчанию и может быть легко установлен с помощью диспетчера пакетов YUM, как показано.
# yum install dnsmasq
2. После завершения установки пакета dnsmasq вам необходимо запустить службу dnsmasq и включить ее автоматический запуск при загрузке системы. Кроме того, проверьте его статус, чтобы убедиться, что он запущен и работает, используя следующие команды systemctl.
# systemctl start dnsmasq # systemctl enable dnsmasq # systemctl status dnsmasq
Настройка сервера dnsmasq в CentOS и RHEL Linux
3. Сервер dnsmasq можно настроить с помощью файла /etc/dnsmasq.conf (который содержит хорошо прокомментированные и объясненные параметры), а пользовательские файлы конфигурации также можно добавить в каталог /etc/dnsmasq.d.
DNS включен по умолчанию, поэтому перед внесением каких-либо изменений обязательно создайте резервную копию файла /etc/dnsmasq.conf.
# cp /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
4. Теперь откройте файл /etc/dnsmasq.conf с помощью вашего любимого текстового редактора и выполните следующие предлагаемые настройки конфигурации.
# vi /etc/dnsmasq.conf
Параметр listen-address используется для установки IP-адреса, по которому dnsmasq будет прослушивать. Чтобы использовать сервер CentOS/RHEL для прослушивания запросов DHCP и DNS в локальной сети, установите для параметра listen-address его IP-адреса в локальной сети (не забудьте включить 127.0.0.1), как показано. Обратите внимание, что IP-адрес сервера должен быть статическим.
❗❗ ОТКЛЮЧИ Настройку ПАРАЗИТ на своем Xiaomi и ОФИГЕЕШЬ!!
listen-address=::1,127.0.0.1,192.168.56.10
В связи с вышеизложенным вы можете ограничить интерфейс, который dnsmasq прослушивает, используя параметр интерфейса (добавьте больше строк для более чем одного интерфейса).
interface=eth0
5. Если вы хотите, чтобы домен (который можно настроить, как показано ниже) автоматически добавлялся к простым именам в файле hosts, раскомментируйте параметр expand-hosts .
expand-hosts
6. Чтобы установить домен для dnsmasq, что означает, что клиенты DHCP будут иметь полные доменные имена, пока заданный домен совпадает, и задает параметр DHCP «домен» для всех клиентов.
domain=tecmint.lan
7. Затем также определите вышестоящий DNS-сервер для нелокальных доменов с помощью опции сервера (в форме server = dns_server_ip), как показано.
# Google’s nameservers server=8.8.8.8 server=8.8.4.4
8. Затем вы можете принудительно настроить локальный домен на IP-адрес (а), используя параметр адреса, как показано.
address=/tecmint.lan/127.0.0.1 address=/tecmint.lan/192.168.56.10
9. Сохраните файл и проверьте синтаксис файла конфигурации на наличие ошибок, как показано.
# dnsmasq —test
10. На этом этапе вам нужно сделать так, чтобы все запросы отправлялись в dnsmasq, добавив адреса localhost в качестве единственных серверов имен в файл /etc/resolv.conf.
# vi /etc/resolv.conf
11. Файл /etc/resolv.conf обслуживается локальным демоном, особенно командой chattr, как показано.
# chattr +i /etc/resolv.conf # lsattr /etc/resolv.conf
12. Dnsmasq считывает все DNS-хосты и имена из файла/etc/hosts, поэтому добавьте IP-адреса и пары имен ваших DNS-хостов, как показано.
127.0.0.1 dnsmasq 192.168.56.10 dnsmasq 192.168.56.1 gateway 192.168.56.100 maas-controller 192.168.56.20 nagios 192.168.56.25 webserver1
Важно: локальные DNS-имена также могут быть определены путем импорта имен из подсистемы DHCP или путем настройки широкого диапазона полезных типов записей.
13. Чтобы применить вышеуказанные изменения, перезапустите службу dnsmasq, как показано.
# systemctl restart dnsmasq
14. Если у вас запущена служба firewalld, вам необходимо открыть службы DNS и DHCP в конфигурации брандмауэра, чтобы разрешить передачу запросов от хостов в вашей локальной сети на сервер dnsmasq.
# firewall-cmd —add-service=dns —permanent # firewall-cmd —add-service=dhcp —permanent # firewall-cmd —reload
15. Чтобы проверить, нормально ли работают локальный DNS-сервер или пересылка, вам необходимо использовать такие инструменты, как nslookup для выполнения DNS-запросов. Эти инструменты предоставляются пакетом bind-utils, который может не входить в предустановленный в CentOS/RHEL 8, но вы можете установить его, как показано.
# yum install bind-utils
16. После установки вы можете выполнить простой запрос в своем локальном домене, как показано.
# dig tecmint.lan OR # nslookup tecmint.lan
17. Вы также можете попытаться запросить полное доменное имя одного из серверов.
# dig webserver1.tecmint.lan OR # nslookup webserver1.tecmint.lan
18. Чтобы проверить обратный поиск IP, выполните аналогичную команду.
# dig -x 192.168.56.25 OR # nslookup 192.168.56.25
Включение DHCP-сервера с помощью dnsmasq
19. Вы можете включить DHCP-сервер, раскомментировав параметр dhcp-range и указав диапазон адресов, доступных для аренды, и, при необходимости, время аренды, например (повторить для более чем одной сети).
dhcp-range=192.168.0.50,192.168.0.150,12h
20. Следующая опция определяет, где DHCP-сервер будет хранить свою базу данных аренды, это поможет вам легко проверить IP-адреса, которые он назначил.
dhcp-leasefile=/var/lib/dnsmasq/dnsmasq.leases
21. Чтобы перевести DHCP-сервер в полномочный режим, раскомментируйте параметр.
dhcp-authoritative
22. Сохраните файл и перезапустите службу dnsmasq, чтобы применить последние изменения.
# systemctl restart dnsmasq
На этом мы подошли к концу этого руководства. Чтобы связаться с нами по любым вопросам или мыслям, которыми вы хотите поделиться об этом руководстве, используйте форму обратной связи ниже.
Источник: ru.linux-console.net
Настройка маршрутизации в сети с неподконтрольным роутером
Я ненавижу рекламу, но постоянно на нее покупаюсь. Увидел в подъезде объявление МГТС — GPON 500 мегабит за 500 рублей в месяц, настоящий IP, IPv6. Из минусов — всего лишь необходимость сверлить стену и вешать в квартире чужой роутер. Думаю надо брать — разберемся как-нибудь. (На самом деле нет, но об этом позже).
Гигабитный роутер с WiFi 802.11ас (5ГГц), но без возможности модификации прошивки, установки софта и с минимальными возможностями настройки через веб-интерфейс. Задача — настроить VPN с другой сетью и прозрачное для клиентов использование ресурсов из луковой сети (The Onion Router aka TOR) с использованием своего сервера в локальной сети.
Думаю данная статья не потянет на полноценное руководство. Слишком разные возможности и потребности у людей — разное железо. Скорее некоторый указатель пути по которому можно пойти. Например для сервера можно использовать популярную малину. Возможно даже с pi-hole.
Я, например, поставил недорогой x86 сервер с распаянным на материнской плате процессором, поставил ubuntu и использую его, в том числе как файловый, home assistant, веб и сервер приложений.
В общем я хотел, чтобы была возможность использовать WiFi интерфейсы роутера, а также, чтобы клиенты локальной сети получили прозрачный доступ к некоторым ресурсам через vpn или tor без дополнительной настройки на стороне клиента. И не хотелось понапрасну пропускать весь трафик через сторонний сервер — хотелось, чтобы обычный интернет трафик шел напрямую на роутер, а специальный (tor, vpn) обрабатывался сервером.
Решил, что отключу на маршрутизаторе DHCP и DNS server, поставлю DHCP на свой сервер, который будет анонсировать правильные маршруты по DHCP и на котором будет крутиться dns, vpn и tor daemon. С vpn все понятно — если другая локальная сеть имеет другие адреса, то достаточно просто настроить маршрутизацию.
Для прозрачного доступа к ресурсам через луковый маршрутизатор решил использовать связку dnsmasq + tor.VirtualAddrNetwork + tor.DNS. Настраиваем dnsmasq для предопределенных доменов из списка, чтобы для их разрешения он использовал tor. После этого домены из луковой сети будут иметь специфичные адреса из специального выделенного диапазона частных адресов и можно использовать обычные правила маршрутизации для перенаправления этого трафика в tor.TransPort с использованием правил iptables. Для соединения локальных сетей по vpn использовал wireguard. В другой локалке стоит обычный роутер пока с прошивкой padavan + entware.
Ключевые параметры моей конфигурации:
- Локальная сеть — 192.168.2.0/24. У роутера статический белый IP
- Другая локальная сеть (доступ к которой получаем через vpn) — 192.168.3.0/24
- Роутер — 192.168.2.1
- Сервер ubuntu — 192.168.2.4, имя ethernet интерфейс — enp1s0
- tor
- private network (VirtualAddrNetwork) — 10.254.0.0/16
- dns server (DNSPort) — 127.0.0.1:9053
- transparent proxy address (TransPort) — 0.0.0.0:9040
- сервер wireguard address — 10.253.1.2
- android клиент — 10.253.1.10
- vpn сервер другой локалки — 10.253.1.3
Сервер
Мой сервер — обычный x86 с Ubuntu 20.04 LTS.
Установливаем пакеты ( apt install ):
- iptables-persistent — сохранение и восстановление правил iptables
- tor
- dnsmasq — DNS + DHCP сервер
- dnscrypt-proxy — DoH DNS клиент
- systemd + netplan.io — были установлены по умолчанию и используются для настройки сетевого интерфейса
- wireguard — vpn
Настраиваем статический сетевой интерфейс — /etc/netplan/eth0-static.yaml и запускаем netplan apply для применения изменений.
Для включения маршрутизации установливаем параметры ядра:
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1
и правим файл /etc/sysctl.conf для сохранения изменений после перезагрузки.
Настроиваем iptables — для таблицы filter установливаем default policy ACCEPT для цепочек INPUT и FORWARD — /etc/iptables/rules.v4. И перезагружаем правила netfilter-persistent start или iptables-restore < /etc/iptables/rules.v4 .
Настройки dnsmasq
В /etc/default/dnsmasq добавляем опцию для игнорирования файлов с расширением *.i.
Локальные устройства прописываем в /etc/dnsmasq.d/src/lan_hosts.csv.i для задания фиксированных IP адресов.
Домены для доступа к которым будем использовать tor прописываем в /etc/dnsmasq.d/src/dns_tor_domains.txt.i
Для анонса маршрутов используется DHCP опция classless-static-route и microsoft-classless-static-route — 249 (на всякий случай). В принципе можно было бы попробовать и не отключать DHCP сервер на роутере, а просто анонсировать дополнительные маршруты. Проблема возникла на телефоне Android Xiaomi Mi 9T. Он не использовал маршруты с DHCP, использовал только один маршрут по умолчанию.
Не уверен, что на всех андроидах есть такая проблема. Пришлось для андроидов сделать специальные настройки и перенаправлять весь трафик от андроид клиентов на сервер.
Специальные настройки для android — нет маршрутов, сервер используется в качестве основного маршрутизатора.
Для примения настроек запускаем `dnsmasq_reconfig.sh` — более подробно описано в разделе «Обновление конфигурации».
Настройки tor
- Порт для socks5 proxy — SocksPort
- Запрещаем выходные ноды в некоторых странах — ExcludeExitNodes
- Порт для transparent proxy — TransPort
- Порт DNS — DNSPort
- Частный диапазон адресов из которых будут назначаться IP для серверов к которым мы будем ходить через tor — VirtualAddrNetwork
Список доменов которые мы будем резолвить через tor и которые будут иметь адреса из нашего частного диапазона (см. VirtualAddrNetwork) — AutomapHostsSuffixes — настраивается скриптом dnsmasq_reconfig.sh и сохраняется в файл /etc/tor/hosts_suffixes.cfg.
DoH
DNS over HTTPS — это протокол для выполнения разрешения DNS по протоколу HTTPS. Для меня целью его использование является защита от подмены DNS провайдером.
Для реализации используем dnscrypt-proxy. Для установки выполняем apt install dnscrypt-proxy .
Примечание: я немного изменил способ запуска dnscrypt-proxy потому что мне показалось, что он у меня не работал. В настройках по умолчанию он запускается через systemd.socket — то есть порт слушает systemd и запускает dnscrypt-proxy когда нужно. Я изменил конфигурацию. В моей конфигурации я запускаю dnscrypt-proxy напрямую. Порт слушает dnscrypt-proxy.
Не думаю что это нужно. Для смены порта в конфигурации по умолчанию — когда dnscrypt активируется через systemd.socket надо выполнить systemctl edit dnscrypt-proxy.socket и установить
Обновление конфигурации
Добавляем домен на который хотим ходить через tor в файл /etc/dnsmasq.d/src/dns_tor_domains.txt.i
Добавляем статический адрес устройства локальной сети в файл /etc/dnsmasq.d/src/lan_hosts.csv.i
Запускаем скрипт dnsmasq_reconfig.sh, который сгеренрирует файлы настройки для dnsmasq (/etc/dnsmasq.d/ lan_hosts.cfg.i, resolv.conf.i), tor (/etc/tor/hosts_suffixes.cfg) и все перезапустит для обновления конфигурации.
Cброс DNS кэша
Допустим вы зашли на сайт напрямую, но посмотрели и решили, что стоит зайти через tor. Просто обновить конфигурацию недостаточно — происходить кэширование DNS адресов в разных местах. Поэтому после обновления конфигурации кэши надо сбросить.
На клиенте с линуксом с systemd-resolve запускаем sudo systemd-resolve —flush-caches .
На клиенте с windows запускаем ipconfig /flushdns в командной строке с правами администратора.
В google chrome открываем страничку chrome://net-internals/#dns и сбрасываем кэш браузера.
Настройка Wireguard VPN
Про настройку wireguard я написал в отдельной статье.
Плач Ярославны
Ну и напоследок напишу почему всё это оказалось ненужным
Во-первых в какой-то момент МГТС отобрала настоящий IP и посадила всех за NAT. Почему-то в этот момент отвалился корпоративный VPN и в службе поддержки порекомендовали подключить выделенный IP.
Во-вторых после подключения выделенного IP перестал работать IPv6. Служба поддержки сообщила, что МГТС в принципе никогда и не поддерживал IPv6. Ну то есть IPv6 как-бы работает, но его работу не гарантируют. На форумах есть объяснение на эту тему — типа выделяют статический IP, но IPv6 статический выделить не могут и чтобы никого не смущать при подключении статического IP тупо обрубают v6.
Повысили тариф на 100 рубей, но это меньшее из зол, даже не в счет.
В-третьих тех поддержка МГТС ужасна. Сначала у меня был роутер sercomm rv6699 — вроде все более-менее работало. И это был не самый плохой вариант — там был telnet и доступ к iptables. Говорят его даже можно перепрошить. Был косяк — к внешнему IP адресу нельзя было достучаться из локальной сети по http и https — но это решалось удалениеми двух правил iptables.
Но потом я решил назначить фиксированный канал сети WiFi 5ГГц. Канал не назначился — начал прыгать, я обратился в техподдержку и мне заменили роутер на ZTE ZXHN F680. И это оказалось полным концом. Он не пробрасывал DHCP пакеты из локальной сети в WiFi. Мою схему я использовать уже не мог.
Техподдержкой был послан с заключением «в конфигурации по умолчанию странички грузятся, все остальное не наши проблемы». Думал может попробую использовать DNS от роутера, но там совсем шлак. Максимум можно настроить — 10 статических адресов в локальной сети. Статические и динамические адреса должны быть в одном диапазоне. В общем WiFi роутера не используется.
В-четрвертых у МГТС есть полный доступ к вашему роутеру. А иметь третье лицо, а вернее даже целую компанию в своей локальной сети — это как-то даже негигиенично.
Вывод — можно и МГТС, но отключать WiFi и переводить роутер в режим моста (не факт, что это можно сделать, не факт, что это не слетит после неотключаемого автообновления, не факт, что это не запретят).
Говорят, что роутер Sercomm RV6699 v4 можно перепрошить. Хотел попробовать, но не могу — у меня этого роутера больше нет — мне его заменили на ZTE ZXHN F680.
Еще говорят, что можно купить коробочку мене чем за 1.5 тыс. рублей и она будет работать бриджом — думаю это хороший вариант.
Источник: habr.com
dnsmasq — dnsmasq
dnsmasq — это бесплатное программное обеспечение, обеспечивающее систему доменных имен (DNS) кэширование, протокол динамической конфигурации хоста (DHCP) сервер, объявления маршрутизатора и функции сетевой загрузки, предназначенные для небольших компьютерных сетей.
dnsmasq имеет низкие требования для системных ресурсов может работать в Linux, BSD, Android и macOS и включен в большинство дистрибутивов Linux. Следовательно, он «присутствует во многих домашних маршрутизаторах и некоторых гаджетах Интернета вещей» и включен в Android.
- 1 Подробности
- 2 См. Также
- 3 Ссылки
- 4 Внешние links
Подробности
dnsmasq — это облегченный, простой в настройке сервер пересылки DNS, предназначенный для предоставления служб DNS (и, возможно, DHCP и TFTP ) в небольшой сети. Он может обслуживать имена локальных машин, не входящих в глобальный DNS.
DHCP-сервер dnsmasq поддерживает статическую и динамическую аренду DHCP, несколько сетей и диапазоны IP-адресов. Сервер DHCP интегрируется с сервером DNS и позволяет локальным машинам с адресами, назначенными DHCP, появляться в DNS. dnsmasq кэширует записи DNS, снижая нагрузку на вышестоящие серверы имен и повышая производительность, и может быть настроен на автоматический выбор адресов вышестоящих серверов.
dnsmasq принимает запросы DNS и либо отвечает на них из небольшого локального кеша, либо перенаправляет их на реальный рекурсивный сервер DNS. Он загружает содержимое / etc / hosts, так что имена локальных хостов, которые не отображаются в глобальном DNS, могут быть разрешены. Это также означает, что записи, добавленные в ваш локальный файл / etc / hosts в формате «0.0.0.0 annoyingsite.com», могут использоваться для предотвращения ссылок на «annoyingsite.com» в вашем браузере. Это может быстро превратиться в локальный блокировщик рекламы в сочетании с поставщиками списков сайтов, блокирующих рекламу. Если это сделано на маршрутизаторе, можно эффективно удалить рекламный контент для всей семьи или компании.
dnsmasq поддерживает современные стандарты Интернета, такие как IPv6 и DNSSEC, загрузку по сети с поддержкой BOOTP, PXE и TFTP, а также сценарии Lua.
Некоторые интернет-провайдеры переписывают ответы NXDOMAIN (домен не существует) от DNS-серверов, что заставляет веб-браузеры переходить на страницу поиска всякий раз, когда пользователь пытается перейти в домен, который не существует. dnsmasq может отфильтровать эти «фиктивные» записи NXDOMAIN, предотвращая это потенциально нежелательное поведение.
См. Также
- Портал бесплатного программного обеспечения с открытым исходным кодом
- Сравнение программного обеспечения DHCP-сервера
- Сравнение программного обеспечения DNS-сервера
Ссылки
Внешние ссылки
- Официальные веб-сайт
- Блокировка рекламы с помощью dnsmasq — LinksysInfo.org
Источник: ru.wikibrief.org