Это задание не выполняется в клиентской библиотеке DNS. Клиентские библиотеки DNS недостаточно сложны, чтобы принимать решения о маршрутизации запросов к различным наборам содержимого DNS-сервера на основе искомого имени. Клиентские библиотеки DNS делегируют тяжелую работу по разрешению запросов, в том числе такого рода, разрешению прокси-серверов DNS. Они реализуют разделенную -службу DNS Horizon , которая является механизмом, который вам здесь нужен.
В вашем случае, если вы используете только то, что поставляется с FreeBSD (или ее производными, такими как DragonFly BSD и TrueOS ), из коробки, это будет экземпляр unbound
, работающий локально.
Вы делаете три вещи:
unbound
. Включите автоматический запуск с помощью local_unbound_enable=YES
в /etc/rc.conf
обычным способом. unbound
для выполнения службы DNS с разделенным горизонтом. Вы делаете это с зонами-заглушками в unbound.conf
для вашего lab.example.com.
и вашего home.example.com.
доменов, обозначая 10.0.0.10
и 192.168.1.1
как контентные DNS-серверы для этих доменных имен и всего остального. под ними. nameserver
в/etc/resolv.conf
(из одной пары name_servers
ключ -значение в /etc/resolvconf.conf
), которая указывает вашей клиентской библиотеке DNS обращаться к unbound
. Примечания:
home.
и lab.
. Это настоящие доменные имена верхнего -уровня, которыми вы не владеете . home.
в настоящее время является предметом 10 заявок в ICANN. Используйте доменное имя , которым вы владеете , а не те, которыми вы не владеете. Замените это на example.com.
выше. Нет, у вас нет local.
, localhost.
, dev.
, corp.
и многих других.Если, например, у вас есть radiantnexus.com.
, вы должны использовать home.allan.radiantnexus.com.
и lab.allan.radiantnexus.com.
.
search_domains="home.allan.radiantnexus.com lab.allan.radiantnexus.com"
продолжить приведенный выше пример.
Я использую djbdns (, исправленный… ну… мной )на FreeBSD.
dnscache@127.0.0.1
, которая запускает локальный разрешающий прокси-сервер DNS, а также службы tinydns@127.53.0.1
и axfrdns@127.53.0.1
, которые запускают локальный DNS-сервер корневого содержимого, который dnscache@127.0.0.1
разговаривает с. Я включаю эти службы с помощью enable
директив в/etc/system-control/presets/20-djbwares.preset
:
enable axfrdns@127.53.0.1 enable cyclog@axfrdns enable tinydns@127.53.0.1 enable cyclog@tinydns enable dnscache@127.0.0.1 enable cyclog@dnscache
.
данных, получаемых от ICANN каждый год или около того с использованием axfr-get
, и данных для внутренних имен под доменными именами, которыми я владею.% ls -dl root/{data*,p*,root*,Makefile} -rw-r--r-- 1 root wheel 968 16 Sep 09:43 root/Makefile -rw-r--r-- 1 root wheel 571334 28 Nov 00:33 root/data -rw-r--r-- 1 root wheel 1088169 28 Nov 00:33 root/data.cdb -rw-r--r-- 1 root wheel 3243 16 Sep 09:55 root/private -rw-r--r-- 1 root wheel 6962 28 Nov 00:32 root/public -rw-r--r-- 1 root wheel 560853 11 Mar 2017 root/root -rw-r--r-- 1 root wheel 3668733 11 Mar 2017 root/root.zone %
В файле root/private
я буду хранить личные данные, такие как:
=machine97.jdebp.eu:192.168.100.97:::lo
root/servers/@
в dnscache@127.0.0.1
для различных точек обрезки разделенного горизонта, чтобы dnscache
знал, что нужно переопределять любую информацию об адресах DNS-серверов общедоступного контента для тех точек, которые могут быть отправлены:% ls -dli root/servers/{@,C.E.F.ip6.arpa,machine97.jdebp.eu} 352608 -rw-r--r-- 46 root wheel 11 23 Nov 2016 root/servers/@ 352608 -rw-r--r-- 46 root wheel 11 23 Nov 2016 root/servers/C.E.F.ip6.arpa 352608 -rw-r--r-- 46 root wheel 11 23 Nov 2016 root/servers/machine97.jdebp.eu %(На самом деле, набор инструментов nosh стандартно устанавливает для меня частные IP-адреса. В nosh Guide есть целая глава о том, что предоставляется, и о различных способах его использования.)
Это частная установка root . Это один из других способов, (которых существует несколько )предоставления службы DNS с разделенным -горизонтом с двумя контентными DNS-серверами. (В описанной выше конфигурации unbound
у вас также есть несколько контентных DNS-серверов; вашими локальными DNS-серверами являются серверы 10.0.0.10
и 192.168.1.1
на других машинах в вашей локальной сети, а не частные серверы на 127.53.0.1
на самой машине.)
Частный корень также дает мне преимущество ложного трафика DNS-запросов для несуществующих вещей, от зондов Google Chrome до вещей, которые пытаются инвертировать -адреса IPv6 в fec0::/12
и адреса IPv4 в 192.168.0.0/16
, а не убежать в интернет на свободе.
Вы также можете сделать приватный корень с помощью unbound
. Однако это сложнее, чем тупиковые зоны. Я оставляю это как упражнение для читателя, поскольку оно выходит за рамки этого ответа.
dnscache
, tinydns
и axfrdns
».Направляющая ноша. Программное обеспечение. Одним из решений является встроенная команда read
.
read -r -p 'Please enter your favorite editor' editor
echo "You have enter $editor"
Теперь значение находится в переменной $editor"
. Следующим шагом будет проверка, действительно ли редактор установлен или находится в вашем PATH.
if type "$editor" >/dev/null 2>&1; then
command "$editor" ENTER_THE_FILE_YOU_WANT_TO_EDIT
else
echo "$editor no such file or directory!" >&2
exit 127
fi
см.
help type
help command
Статус выхода 127 — это то, что оболочка завершит работу, если нет исполняемой псевдонимной функции.посмотри на
man 1p exit