Intereting Posts
Селективные тусклые экраны Передача нескольких аргументов с пробелами через скрипт в ssh Предотвратить расширение glob в foo = "*"; echo $ foo Как я могу прокручивать строки файла и находить файлы, соответствующие каждой строке? Форматирование внешнего жесткого диска в совместимую с Linux файловую систему Сделать прозрачным xterm Как сделать $ ((5/2)) доставить число с плавающей запятой? Как остановить «grep» от вырезания трубы Можно ли записать живое изображение на поврежденный маятник? Как проверить UBIFS на наличие ошибок? О взаимосвязи между инициализацией оболочки и настольными приложениями после «графического входа» Кто может изменять разрешения файла / каталога? Как включить Wi-Fi с помощью клавиатуры (Dell Inspiron 14r) в suse Linux 11.4 Как процессы конечного пользователя, среда рабочего стола и менеджер окон взаимодействуют друг с другом? Программа вроде nethogs для udp?

Можно ли установить разные DNS-серверы для разных пользователей?

Можно ли установить разные DNS-серверы для разных пользователей?

Скажем, пользователь test1 использует DNS Google ( 8.8.8.8 и 8.8.8.8 ), test2 будет использовать 0.0.0.0 , и оба test3 и test4 будут использовать 127.0.0.1 .

Это возможно?

«Это …» Ну, да.

«Как», где он усложняется.

В принципе, у вас есть два реальных варианта, о которых я могу думать. Предполагая, что вы используете Gnu libc, и у вас есть поддержка nsswitch (я смутно помню, что некоторые дистрибутивы могут быть отключены?), Одним из вариантов может быть замена «нормального» модуля DNS NSS (то есть, /lib64/libnss_dns* ) с пользовательской версией, которая проверяет, возможно, ~/.config/resolv.conf или так.

Обратите внимание : «replace» я хочу добавить еще один модуль с уникальным именем, которое вы затем ссылаетесь на /etc/nsswitch.conf . Один может «просто» развить код, используемый для создания «нормальной» версии, и добавить что-то, чтобы построить для него версию для каждого пользователя.

Другой вариант может состоять в том, чтобы использовать пространства имен ядер для «монтирования» замены resolv.conf с точки зрения процессов каждого пользователя. (См. Очень подробное обращение от IBM в комментариях.)

Однако я не знаю никаких существующих инструментов для облегчения.

Третий вариант, который возникает для меня, заключается в том, чтобы каждый пользователь мог использовать chroot тюрьму, причем большинство файлов были жестко привязаны или привязаны к привязке, а некоторые из них, например, resolv.conf заменялись на месте.

Параметры сервера DNS определены для машины , а не для пользователя.

Семейство syscall gethostbyname*() пытается найти заданное имя хоста и возвращает IP-адрес. Первое место обычно представляет файл /etc/hosts . Затем они выполняют поиск через DNS-серверы, установленные в /etc/resolv.conf .

Нет, DNS не предназначен для этого. Тем не менее, если вы тестируете, вы можете использовать /etc/hosts и hard code несколько тестовых доменных имен для определенных IP-адресов, а затем предоставить каждому пользователю тестовые доменные имена, которые вы хотите использовать.

например. /etc/hosts и /etc/hosts

 IP address1 hosta.test2 IP address2 hostb.test2 IP address3 hosta.test3 IP address4 hostb.test3 ...