Чи можу я створити заміщення dns, подібного до запису в / etc / hosts без доступу root


48

Я хочу встановити dns-запис, який використовуватиме мій браузер, але у мене немає кореневого доступу, тому я не можу змінювати /etc/hosts. Мені потрібно це зробити для тестування vhosts з apache, dns якого ще не встановлено. У мене є доступ до firefox та chrome, тому якщо є плагін, який може полегшити його; або інші варіанти корисні.

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


1
Останній рядок незрозумілий. Крім того, чи не підходило б це більше до SF?
thepang

@tshepang ... ні, тому що мені потрібно це зробити на робочому столі Linux?
ксенотеррацид

1
Ще не так зрозуміло. Що саме означає "чи інші варіанти корисні"? Не змушуй мене гадати.
thepang

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

Я думаю, ти шукаєш це: unix.stackexchange.com/a/104511/135943
Wildcard

Відповіді:


65

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

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

Див hostname(7).

(Побічна примітка. У прикладі HOSTALIASESзмінна середовища впливає лише на wgetпроцес. Звичайно, ви можете export HOSTALIASESзробити так, щоб це набуло чинності для всіх підпроцесів поточної оболонки.)


1
насправді це має бути як + 10 к, на жаль, я можу дати вам лише +1
ксенотерацид

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

3
Дуже дякую! Приклад повинен випереджати exportв більшості випадків: export HOSTALIASES=~/.hosts.
ezequiel-garzon

8
видається, що лише хости підтримують псевдоніми хостів, а не IP, а хости не можуть містити "".
netawater

Чи є те саме рішення для Windows?
Акцептор

10

Ви можете написати обгортку навколо функції libc, щоб вирішити імена хостів і переглянути їх у файлі, відмінному від / etc / 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-ing 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 насправді дозволяє мені змінювати заголовки, вона говорить, що це переглядач.
ксенотеррацид

Я думаю, що розширення Змінити заголовки, перелічене трохи нижче, так працює, якщо ви використовуєте ім'я хоста ... в ньому ... ще не перевірено ... поза межами злому сайтів, що використовують його.
ксенотеррацид

2

Щоб перевірити vhosts, ви можете встановити сервер Apache як проксі-сервер у Firefox. Введене ім’я буде переадресовано Apache. Це порушить перегляд інших сайтів, тому поверніть проксі, коли ви закінчите.


0

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


-2

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

Якщо вам доведеться зробити кілька тестів, вам потрібна тестова машина, незалежно від віртуальної машини чи справжньої, тож вам доведеться запитати у свого адміністратора Unix (або постачальника хостингу), як можна створити середовище розробки.

Ви також можете встановити VM на свій ПК, встановити дистрибутив 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, до якого я не маю доступу адміністратора, і я не вірю, що можу на ньому завантажувати VM.
ксенотерацид

@xenoterracide - не надто багато сказати. Те, що ви просите, насправді не представляється можливим, за винятком того, як ви змінюєте спосіб створення СОКЕТ.
tmow

1
@xenoterracide BTW, не було наміру ображати.
tmow

а також провайдер хостингу ... У мене фактично є "права на судо", я маю справжній корінь на кожному вікні і повний доступ до всього ... крім мого робочого столу (вічка), але якщо вони ще не хотіли змінювати своїх серверів імен .. Я не можу в цьому допомогти ...
xenoterracide

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