Могу ли я создать переопределение DNS, аналогично записи в / etc / hosts без прав root


48

Я хочу установить запись DNS, которую будет использовать мой браузер, но у меня нет доступа с правами root, поэтому я не могу изменить /etc/hosts. Мне нужно сделать это для тестирования vhosts с apache, DNS которого еще не настроен. У меня есть доступ к Firefox и Chrome, так что, если есть плагин, который может облегчить это; или другие варианты полезны.

обновление: альтернативой переопределению днс, вероятно, является изменение заголовков HTTP, если правильные отправляются в apache, правильное содержимое должно быть возвращено.


1
Последняя строка неясна. Кроме того, не будет ли это больше соответствовать SF?
Чепанг

@tshepang ... нет, потому что мне нужно сделать это на рабочем столе Linux?
ксенотеррацид

1
Все еще не так ясно. Что именно означает «или другие варианты полезны»? Не заставляй меня догадываться.
Чепанг

3
@tshepang Я не знаю, что я ищу ... если бы я знал, почему я спрашивал? могут быть варианты, которые я не рассматривал. Я чувствую, что вы просите меня объяснить, как виртуальные хосты apache, http и dns работают вместе.
ксенотеррацид

Я думаю, что вы ищете это: unix.stackexchange.com/a/104511/135943
подстановочный

Ответы:


65

Я искал способ запустить программу с измененным разрешением DNS для целей тестирования. Для меня решение было использовать HOSTALIASESпеременную окружения:

$ echo "foo www.google.com" >> ~/.hosts
$ HOSTALIASES=~/.hosts wget foo

См hostname(7).

(Примечание: в примере HOSTALIASESпеременная среды влияет только на wgetпроцесс. Конечно, вы можете export HOSTALIASESвключить его для всех подпроцессов текущей оболочки.)


1
на самом деле это должно быть как + 10k, к сожалению, я могу дать вам только +1
xenoterracide

Я согласен! 10к + !!
Андерс Ханссон

3
Большое спасибо! Пример должен предварять exportв большинстве случаев: export HOSTALIASES=~/.hosts.
Ezequiel-Garzon

8
кажется, что псевдонимы хостов поддерживают только хосты, а не IP, и хосты не могут содержать «.».
netawater

Есть ли такое же решение для Windows?
Акцептор

10

Вы можете написать обертку вокруг функции libc, чтобы разрешить имена хостов и искать их в файле, отличном от / etc / hosts. Затем запустите любое приложение, с которым вы хотите использовать файл hosts.

LD_PRELOAD=wrapper.so firefox

4
Наиболее целесообразно, чтобы ваша оболочка перенаправляла открытие /etc/nsswitch.confв ~/.nsswitch.conf, и создавала ~/.nsswitch.confзапрос к вашим базам данных DNS.
Жиль "ТАК - перестань быть злым"

6

Я думаю, что лучший способ сделать это - настроить прокси-сервер SOCKS5 и сказать Firefox отправлять запросы DNS через прокси-сервер SOCKS5 (network.proxy.socks_remote_dns). Вы можете довольно легко настроить прокси socks5 с openssh (опция -D) и иметь удаленный хост, работающий с пользовательским / etc / hosts, или что-то вроде DNSMasq для более сложных настроек DNS. Однако, по сути, это проталкивает конфигурацию настроек DNS в систему, в которую можно вносить общесистемные изменения.


легче сказать, чем сделать, учитывая, что отличный межсетевой экран, который был установлен, чтобы блокировать нас от ssh-out ...
xenoterracide

5

Проверьте следующий вопрос у суперпользователя:

https://superuser.com/questions/184643/override-dns-in-firefox

Если обсуждаемые варианты и ссылка SO не являются жизнеспособными решениями, проверьте:

https://superuser.com/questions/100239/hostname-override-in-firefox

Особенно проверьте:

https://addons.mozilla.org/en-US/firefox/addon/redirector/

Похоже, что это дополнение может помочь - но я зависит от его фактической реализации.


к сожалению, так же, как в этом вопросе, ни один из них не представляется жизнеспособным.
ксенотеррацид

@xenoterracide - я обновил свой ответ - возможно, надстройка перенаправителя является вариантом?
maxschlepzig

Я так не думаю из-за того, как оно сформулировано ... что мне действительно нужно, это изменить отправляемые HTTP-заголовки ... как альтернативный вариант взлома с использованием хостов
xenoterracide

Я искал SO решение (TamperData), но я не видел, как изменить хост в этом. Интересно, действительно ли функция живых заголовков http позволяет мне изменять заголовки, она говорит, что это программа просмотра.
ксенотеррацид

Я думаю, что расширение Modify Headers, перечисленное немного ниже в SO, работает ... если вы используете Host host name ... в нем ... еще не проверено ... вне взлома сайтов, использующих его.
ксенотеррацид

2

Чтобы проверить vhosts, вы можете установить сервер Apache в качестве прокси в Firefox. Введенное вами имя будет перенаправлено в Apache. Это нарушит просмотр других сайтов, поэтому верните прокси, когда закончите.


0

Мне нужно что-то подобное для ssh, scp и т. Д. Для сервера, который постоянно меняет IP каждые пару недель (а наша ИТ-служба имеет пару недель задержки при настройке хоста). Я решил это, используя специальную переменную для этого сервера: export FOO='131.227.aaa.bbbи тогда я могу сделать только, ssh bar@$FOOи я меняю IP в ~/.bashrcлюбой момент, когда он меняется ...


-2

Не повезло, вы не можете, кроме как написать свой собственный интернет-браузер.

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

Вы также можете установить виртуальную машину на свой ПК, установить дистрибутив Linux, Apache и протестировать свои изменения (это не так сложно, как кажется)

Обновить

Чтобы лучше объяснить, каждое приложение написано с использованием стандартных библиотек, таким образом, никто не должен переписывать низкоуровневую библиотеку и функции, такие как gethostbyname ().

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

  1. Вы можете настроить свой собственный DNS-сервер и спросить, у кого есть права root, чтобы изменить /etc/resolve.conf
  2. Вы можете установить прокси-сервер, такой как DeleGate, и установить некоторые правила для вашего VirtualHost
  3. Спросите права sudo на этом клиентском хосте
  4. Измените поведение приложения, которое вы используете для проверки соединения (я думаю, в браузере), например https://addons.mozilla.org/en-US/firefox/addon/switchhosts/

4
-1 сформулирован плохо и покровительственно. Я являюсь хостинг-провайдером, и мне нужно протестировать сайт проклятых клиентов на нашем сервере. У нас есть сетевой загрузочный Linux, к которому у меня нет доступа администратора, и я не верю, что смогу загрузить на него виртуальную машину.
ксенотеррацид

@xenoterracide сказать особо нечего. Это действительно не выполнимо, о чем вы просите, за исключением того, что вы изменили способ создания SOCKET.
tmow

1
@xenoterracide Кстати, не было никакого намерения обидеть.
tmow

а также хостинг-провайдер ... у меня "права sudo" на самом деле, у меня есть реальный root на каждом ящике и полный доступ ко всему ... кроме моего рабочего стола (eyeroll), но если они еще не хотели менять свои серверы имен .. Я не могу с этим поделать ...
Ксенотеррацид

1
с LD_PRELOAD вы можете «переопределить» определенные функции «низкого уровня» и делать то, что вы хотите, например. сообщать программе о вашем собственном «/ etc / hosts» open()и любом другом низкоуровневом вызове .. до тех пор, пока включена динамическая загрузка кода (.so)
akira
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.