Шановні друзі!
26 та 31 грудня магазин працюватиме до 16 години. 1 та 2 січня магазин працювати не буде.
Вітаємо всіх з Різдвом та Новим Роком!
Мобильная версия Форум Arduino Документация Гарантийные условия 0 0
UA RU
График работы магазина:
Пн-Пт: 8.00 - 19.00
Сб: 10.00 - 17.00
Вс: выходной
Каталог
Напиши статью и получи скидку!

Реализация маршрутизатора на одноплатном компьютере 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/LinuxDNS прописываются в конфигурационном файле resolv.conf располагающемся в директории /etc. Открыв данный файл мы увидим, что в нем находится только один адрес, например 192.168.1.1.

root@orangepi-r1:~# nano /etc/resolv.conf

  • # Generated by NetworkManager
  • nameserver 192.168.1.1

Как мы можем помнить из прошлой статьи, все DNS адреса были указаны в файле dnsmasq.conf расположенном в той же директории /etc, а resolv.conf не использовался вовсе. И в принципе система будет работать стабильно, но такой вариант не корректен. Причина кроется в нестандартной работе программы resolvconf.

В данной статье я опишу два варианта корректной настройки DNS в 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

  • # Generated by NetworkManager
  • nameserver 192.168.1.1
  • nameserver 88.54.0.251
  • nameserver 8.8.8.8

Примечание: адрес 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

  • # Generated by NetworkManager
  • #nameserver 192.168.1.1

В этом варианте мы не будем использовать файл конфигурации resolv.conf, DNS адреса укажем в файле dnsmasq.conf.

root@orangepi-r1:~# nano /etc/dnsmasq.conf

  • server=192.168.1.1
  • server=88.54.0.251
  • server=8.8.8.8

  • domain-needed
  • bogus-priv
  • no-resolv
  • no-poll

  • interface=lo
  • interface=eth0
  • bind-interfaces

  • cache-size=15000

  • dhcp-range=eth0,101.101.80.10,101.101.80.20
  • #dhcp-range=wlan0,101.101.90.10,101.101.90.20,24

  • dhcp-option=eth0,1,255.255.255.0
  • dhcp-option=eth0,3,101.101.80.1
  • dhcp-option=eth0,6,101.101.80.1

  • #dhcp-option=wlan0,1,255.255.255.0
  • #dhcp-option=wlan0,3,101.101.90.1
  • #dhcp-option=wlan0,6,101.101.90.1

  • dhcp-host=XX:XX:XX:XX:XX:XX,101.101.80.10
  • dhcp-host=XX:XX:XX:XX:XX:XX,101.101.80.11
  • dhcp-host=XX:XX:XX:XX:XX:XX,101.101.80.12

Если вы сравните прошлую конфигурацию файла dnsmasq.conf с нынешней, то заметите некоторые отличия. Давайте их разберем.

Верхние три строки - это DNS адреса:

  • server=192.168.1.1
  • server=88.54.0.251
  • server=8.8.8.8

Примечание: Не забывайте, что адрес 88.54.0.251 это DNS абстрактного провайдера и вместо него укажите DNS своего провайдера. Вместо 192.168.1.1 укажите адрес который был вами закомментирован в resolv.conf!

Поскольку теперь dnsmasq считывает DNS адреса не из файл resolv.conf, а из своего же конфигурационного файла dnsmasq.conf, следуют два правила:

  • no-resolv - запрет на считывание DNS адресов из файла resolv.conf, адреса будут считываться из dnsmasq.conf.
  • no-poll - запрет отслеживания любых изменений в resolv.conf.

dhcp-option - стали объединены по физическим интерфейсам eth0 и wlan0 и добавлена маска для каждой сети:

  • dhcp-option=eth0,1,255.255.255.0 - интерфейс eth0
  • #dhcp-option=wlan0,1,255.255.255.0 - интерфейс 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.

Строки:

  • dhcp-host=XX:XX:XX:XX:XX:XX,101.101.80.10
  • dhcp-host=XX:XX:XX:XX:XX:XX,101.101.80.11
  • dhcp-host=XX:XX:XX:XX:XX:XX,101.101.80.12

В каждой строке, вместо XX:XX:XX:XX:XX:XX указывается MAC адрес сетевой карты конкретного компьютера находящегося в вашей сети, а через запятую привязанный к нему IP адрес. Другими словами, привязанные адреса к конкретным компьютерам на постоянной основе будут закреплены за ними и ни при каких условиях не будут выданы иным пользователям.

Что касается конфигурационного файла interfaces расположенного в директории /etc/network, то там как я уже описывал в прошлой статье, получать настройки от провайдера можно двумя способами:

DHCP

  • # WAN : The primary network interface - DHCP
  • auto eth1
  • allow-hotplug eth1
  • iface eth1 inet dhcp
  • hwaddress ether XX:XX:XX:XX:XX:XX

STATIC

  • # WAN : The primary network interface - STATIC
  • auto eth1
  • allow-hotplug eth1
  • iface eth1 inet static
  • address IP адрес выданный вам вашим провайдером
  • netmask маска сети к которой принадлежит ваш IP адрес
  • network сеть к которой принадлежит ваш IP адрес
  • broadcast широковещательный канал
  • gateway шлюз сети к которой принадлежит ваш IP адрес
  • dns-nameservers нужные DNS адреса (если несколько, то они указываются через пробел)
  • hwaddress ether XX:XX:XX:XX:XX:XX

Какой из двух вариантов использовать решать только вам. Но следует учитывать что при изменении провайдером хоть одного из параметров сети к которой вы относитесь:

  • Вариант (DHCP) автоматически их подхватит и продолжит свою работу.
  • Вариант (STATIC) перестанет работать и потребуется вручную вносить изменения с последующим перезапуском всего сервера.

Оба этих способа подходят для первого и второго варианта конфигурации. Единственное что для первого варианта, при статической настройке интерфейса WAN, не нужно указывать dns-nameservers.

В заключении хочу посоветовать изучить документацию по dnsmasq и по его конфигурационному файлу dnsmasq.conf. Ведь в своих примерах я очень кратко описываю возможности тех или иных сервисов и программ.

P.S. существует один неприятный нюанс и связан он с systemctl. Бывает что после перезагрузки всего сервера некорректно запускаются некоторые из программ. От чего происходит данное недоразумение я еще не выяснил, точно могу сказать что связанно это непосредственно с сборкой OC Armbian GNU/Linux. Честно сказать сам systemctl по хорошему недопустим в подобных системах. Но данный вопрос требует рассмотрения в отдельной и обширной статье. Поэтому после перезагрузки сервера обязательно проверяйте systemctl - systemctl list-units --type service. Проще всего данное действие автоматизировать, а лучше пересобрать систему без systemctl.


Ваша оценка статьи:

Отлично
Хорошо
Удовлетворительно
Плохо
Очень плохо

Общая оценка:

Оценка "Реализация маршрутизатора на одноплатном компьютере Orange Pi R1 - Дополнение: настройка DNS адресов"
5 из 5
сделана на основе 1 оценки 1 клиентских отзыва.

Благодарим Вас за обращение! Ваш отзыв появится после модерации администратором.
Сергій
30.06.2021 10:53:47
Гарна покрокова інструкція
оплата картами Visa и MasterCard