Каталог
|
Реализация маршрутизатора на одноплатном компьютере Orange Pi R1 - Дополнение: настройка DNS адресов2021-06-16 Всі статті →В статье «Реализация маршрутизатора на одноплатном компьютере Orange Pi R1» в качестве операционной системы была использована Armbian 21.02.3 (Debian-Buster) с ядром Linux 5.10.21-sunxi. Описанная конфигурация в вышеупомянутой статье основывается на классической конфигурации маршрутизатора на платформах x86-x64 под управлением OC GNU/Linux. Но как показала практика, различия с ARM платформой все-таки есть. Точнее сказать, все нюансы кроются не в самой ARM архитектуре или в специфической аппаратной реализации, а непосредственно в OC Armbian GNU/Linux. Ссылка на первую статью: https://arduino.ua/ru/art161-realizaciya-marshrytizatora-na-odnoplatnom-komputere-orange-pi-r1 Начну с того что в OC GNU/Linux, DNS прописываются в конфигурационном файле resolv.conf располагающемся в директории /etc. Открыв данный файл мы увидим, что в нем находится только один адрес, например 192.168.1.1. root@orangepi-r1:~# nano /etc/resolv.conf
Как мы можем помнить из прошлой статьи, все DNS адреса были указаны в файле dnsmasq.conf расположенном в той же директории /etc, а resolv.conf не использовался вовсе. И в принципе система будет работать стабильно, но такой вариант не корректен. Причина кроется в нестандартной работе программы resolvconf. В данной статье я опишу два варианта корректной настройки DNS в OC Armbian GNU/Linux для все того же маршрутизатора реализованного на Orange Pi R1 или любом ином одноплатном компьютере. Изначально стоит внести некоторую ясность, как я уже упоминал выше в OC GNU/Linux за DNS отвечает файл resolv.conf. Как правило в Debian GNU/Linux и практически во всех дистрибутивах основанных на нем включая и Armbian GNU/Linux, существует еще и отдельная программа resolvconf. Ее задача заключается в постоянном мониторинге DNS и как только адрес или адреса меняются, она автоматически перезаписывает resolv.conf. Проще говоря, данная программа управляет DNS в системе. Как вы уже могли догадаться, редактировать вручную resolv.conf не имеет никакого смысла. Использование resolvconf является стандартной практикой, но что же делать когда нужно использовать конкретные, фиксированные адреса и не опасаться, что они будут проигнорированы или перезаписаны? Вариант №1 Первоначально следует убедиться, что программа resolvconf используется системой, после чего ее нужно будет отключить и убрать из автозагрузки. root@orangepi-r1:~# systemctl list-units --type service В списке мы видим что программа используется и загружается при каждом старте системы. Закрыв список (Crrl+C) отключаем ее и убираем из автозагрузки, затем перезагружаем систему. root@orangepi-r1:~# systemctl stop resolvconf root@orangepi-r1:~# systemctl disable resolvconf root@orangepi-r1:~# reboot После перезагрузки если повторно проверить systemctl, то в списке resolvconf будет отсутствовать. Теперь файл resolv.conf не контролируется программой resolvconf. Открываем его и вносим в него свои изменения, прописывая нужные DNS адреса. Примечание: для сохранения изменений в файле открытом в текстовом редакторе nano, нажмите сочетание клавиш Ctrl+O, а для выхода из текстового редактора нажмите сочетание клавиш Ctrl+X. root@orangepi-r1:~# nano /etc/resolv.conf
Примечание: адрес 88.54.0.251 это DNS абстрактного провайдера и вместо него укажите DNS своего провайдера. Вместо 192.168.1.1 у вас будет свой адрес и менять его не нужно. 8.8.8.8 это публичный DNS от Google! Теперь dnsmasq будет использовать адреса указанные в файле resolv.conf и указывать их в файле dnsmasq.conf не обязательно. На этом первый вариант конфигурации окончен. Вариант №2 Так же как и в первом варианте, первоначально проверяем используется ли программа resolvconf системой, затем отключаем ее и убираем из автозагрузки. После чего перезагружаем систему. root@orangepi-r1:~# systemctl list-units --type service root@orangepi-r1:~# systemctl stop resolvconf root@orangepi-r1:~# systemctl disable resolvconf root@orangepi-r1:~# reboot После перезагрузки системы, открываем файл resolv.conf и комментируем все активные строки. root@orangepi-r1:~# nano /etc/resolv.conf
В этом варианте мы не будем использовать файл конфигурации resolv.conf, DNS адреса укажем в файле dnsmasq.conf. root@orangepi-r1:~# nano /etc/dnsmasq.conf
Если вы сравните прошлую конфигурацию файла dnsmasq.conf с нынешней, то заметите некоторые отличия. Давайте их разберем. Верхние три строки - это DNS адреса:
Примечание: Не забывайте, что адрес 88.54.0.251 это DNS абстрактного провайдера и вместо него укажите DNS своего провайдера. Вместо 192.168.1.1 укажите адрес который был вами закомментирован в resolv.conf! Поскольку теперь dnsmasq считывает DNS адреса не из файл resolv.conf, а из своего же конфигурационного файла dnsmasq.conf, следуют два правила:
dhcp-option - стали объединены по физическим интерфейсам eth0 и wlan0 и добавлена маска для каждой сети:
Примечание: Конкретно в моей сети для раздачи сигнала по Wi-Fi используется AP Cisco (подчиняющаяся полностью настройкам маршрутизации OC Armbian GNU/Linux) а беспроводной модуль компьютера не используется. Поэтому все настройки касающиеся интерфейса wlan0 закомментированы. Если вы раздаете Wi-Fi по средствам беспроводного модуля самого компьютера, все настройки касающиеся интерфейса wlan0 должны быть активными. В конце строки #dhcp-range=wlan0,101.101.90.10,101.101.90.20,24 после запятой, можно увидеть число 24. Это время в часах, на которое выдаются в аренду все IP адреса в их заданном диапазоне для интерфейса wlan0. Строки:
В каждой строке, вместо XX:XX:XX:XX:XX:XX указывается MAC адрес сетевой карты конкретного компьютера находящегося в вашей сети, а через запятую привязанный к нему IP адрес. Другими словами, привязанные адреса к конкретным компьютерам на постоянной основе будут закреплены за ними и ни при каких условиях не будут выданы иным пользователям. Что касается конфигурационного файла interfaces расположенного в директории /etc/network, то там как я уже описывал в прошлой статье, получать настройки от провайдера можно двумя способами: DHCP
STATIC
Какой из двух вариантов использовать решать только вам. Но следует учитывать что при изменении провайдером хоть одного из параметров сети к которой вы относитесь:
Оба этих способа подходят для первого и второго варианта конфигурации. Единственное что для первого варианта, при статической настройке интерфейса WAN, не нужно указывать dns-nameservers. В заключении хочу посоветовать изучить документацию по dnsmasq и по его конфигурационному файлу dnsmasq.conf. Ведь в своих примерах я очень кратко описываю возможности тех или иных сервисов и программ. P.S. существует один неприятный нюанс и связан он с systemctl. Бывает что после перезагрузки всего сервера некорректно запускаются некоторые из программ. От чего происходит данное недоразумение я еще не выяснил, точно могу сказать что связанно это непосредственно с сборкой OC Armbian GNU/Linux. Честно сказать сам systemctl по хорошему недопустим в подобных системах. Но данный вопрос требует рассмотрения в отдельной и обширной статье. Поэтому после перезагрузки сервера обязательно проверяйте systemctl - systemctl list-units --type service. Проще всего данное действие автоматизировать, а лучше пересобрать систему без systemctl.
Дякуємо Вам за звернення! Ваш відгук з'явиться після модерації адміністратором.
Сергій
30.06.2021 10:53:47
Гарна покрокова інструкція
|