DNS: Возможно ли разрешение в зависимости от домена?

efibootmgr is giving me the "system does not support efivars" when I boot from a Ubuntu USB stick.

Это происходит из-за того, что вы загружаетесь с USB-накопителя с использованием устаревшего стиля BIOS, поэтому модуль поддержки совместимости UEFI отключит интерфейс времени запуска UEFI -, который будет использоваться для доступа к переменным загрузки. Если вы можете загрузить USB-накопитель в собственном режиме UEFI, то efibootmgrбудет работать. Если в настройках загрузки микропрограммы есть выбор, следует ли сначала использовать UEFI или устаревшие методы загрузки, попробуйте переключить его в режим «UEFI first» при загрузке с флешки.

С устаревшей MBR GRUB2 вы можете загружать только те операционные системы, которые загружаются с использованием устаревшей MBR. Чтобы подключиться к операционной системе, которая была установлена ​​для загрузки с использованием собственного UEFI, вам потребуется версия GRUB2 для UEFI.

Проблема с пересадкой UEFI GRUB из одного дистрибутива в другой заключается в том, что разные дистрибутивы настраивают его немного по-разному :, например, Debian раньше внедрял очень минимальный grub.efiв ESP со встроенными инструкциями для дальнейшего чтения Модули GRUB и файл конфигурации из другой файловой системы, указанной во время установки GRUB (, обычно это файловая система, содержащая каталог /boot).

Проблема с этим подходом заключается в том, что безопасная загрузка делает это невозможным, если включена :весь загружаемый исполняемый код должен быть подписан, а поскольку модули GRUB не используют тот же формат двоичных файлов, что и стандартные двоичные файлы UEFI, они не могут быть подписаны таким образом, чтобы его можно было распознать для прошивки UEFI.

Производные дистрибутивы RedHat -, с другой стороны, имеют тенденцию встраивать все необходимые модули GRUB в основной grubx64.efiдвоичный файл, который затем может быть успешно загружен за одну операцию посредством безопасной загрузки shim.efi. Файл конфигурации GRUB также помещается в файловую систему ESP, что обычно отражает название основного двоичного файла UEFI GRUB, т. е. если двоичный файл переименован в foo.efi, он будет искать foo.cfgв том же каталоге.

Зная это, вы можете просто убедиться, что безопасная загрузка отключена, взять двоичный файл grub.efiс установочного носителя RedHat/CentOS/Fedora, написать для него минимальный файл конфигурации вручную, поместить его в свой ESP (, возможно, как \EFI\boot\bootx64.efiи \EFI\boot\bootx64.cfg, поэтому UEFI должен подбирать их автоматически без необходимости использования переменных UEFI )и загружаться один раз. Затем вы можете увидеть, совместим ли файл конфигурации GRUB, сгенерированный встроенным генератором конфигурации GRUB TinyCore, с этой версией GRUB,и либо замените упрощенный файл конфигурации реальным, либо замените трансплантированную версию GRUB предпочтительной для TinyCore версией UEFI GRUB.

Если вы хотите загрузить TinyCore vmlinuzнепосредственно из прошивки UEFI, ядро ​​необходимо скомпилировать с CONFIG_EFI_STUB=y, а затем вам нужно выяснить, что делать с параметрами загрузки и файлом initramfs. Я сделал такой набор -однажды, настроив параметры загрузки в загрузочной переменной UEFI. Без загрузчика у вас, вероятно, не будет возможности изменить параметры загрузки во время загрузки, поэтому вам лучше заранее сгенерировать несколько настроек загрузочной переменной UEFI с разными параметрами загрузки, чтобы у вас был способ доступа система, если что-то пойдет не так, например, с обновлением ядра.

(Если параметры загрузки UEFI уровня микропрограммы -включают способ загрузки в оболочку UEFI, это может быть очень полезно при настройке загрузочной установки UEFI -без загрузчика.)

UUID, используемые в переменных загрузки UEFI, можно узнать, выполнив команду blkid. GRUB использует UUID файловой системы (= поле UUID=), а загрузочные переменные UEFI используют уникальный UUID раздела (= поле PARTUUID=).

2
27.02.2020, 15:43
2 ответа

Вы не можете сделать это только с resolv.conf, но с промежуточным демоном переадресации DNS, таким как Dnsmasq (, упакованным в Debian как dnsmasqи связанными пакетами ).

С помощью Dnsmasq вы должны настроить сам Dnsmasq со списком серверов:

server=/abc.com/1.2.3.4
server=/cba.com/4.3.2.1
server=1.4.2.3

и скажите ему не смотреть наresolv.conf:

no-resolv

Затем вы измените свой resolv.conf, чтобы он указывал на демон Dnsmasq, удалив все записи nameserverв нем. Вам также необходимо убедиться, что любая настройка DHCP не перезаписывает resolv.conf.

5
28.04.2021, 23:21

Да. Четверть века это было возможно. То, что вы ищете, это служба DNS с разделенным горизонтом , и это не делается путем возни с /etc/resolv.conf. Этот файл конфигурации диктует вещи клиентской библиотеке DNS, которая (обычно )встроена в библиотеку C, на которую ссылаются прикладные программы. Эта библиотека проста и не принимает сложных решений, таких как определение того, куда отправлять различные запросы на основе их разделов вопросов.

Это делается путем возни с (машиной -локальным или сайтом -локальным)разрешающим прокси-сервером DNS , с которым клиентские библиотеки DNS настроены для взаимодействия. Конкретно :Настройки /etc/resolv.confуказывают приложениям разрешающий DNS-прокси-сервер, который прослушивает (скажем, )сокет, привязанный к IPv4-адресу 127.0.0.1, и , что сервер настроен, способами, характерными для серверного программного обеспечения, для соответствующего разрешения запросов. Этот прокси-сервер DNS или даже DNS-сервер контента (s ), с которым он, в свою очередь, взаимодействует , является местом, где находится весь механизм разделения -горизонта.

  • В BIND ISC это делается с помощью условной переадресации или с помощью тупиковых зон .
  • В dnscache Даниэля Дж. Бернштейна это делается с помощью servers/domainфайлов.
  • В dnsmasq это делается еще одним способом. Так же systemd-тоже разрешил. И так далее.

Итак, установите одно из этих серверных программ (Debian, даже если некоторые из них предварительно -упакованы )на вашем компьютере с Debian, настройте клиентские библиотеки DNS для его использования и настройте его для разделения -горизонт DNS.

Дополнительная литература

3
28.04.2021, 23:21

Теги

Похожие вопросы