Czy mogę utworzyć zastępujące dns podobne do pisania w / etc / hosts bez dostępu roota


48

Chcę ustawić rekord dns, którego będzie używać moja przeglądarka, ale nie mam dostępu do konta root, więc nie mogę go modyfikować /etc/hosts. Muszę to zrobić w celu przetestowania vhostów z apache, których dns nie został jeszcze skonfigurowany. Mam dostęp do Firefoxa i Chrome, więc jeśli jest wtyczka, która może to ułatwić; lub inne opcje są pomocne.

aktualizacja: alternatywą dla zastąpienia dns jest prawdopodobnie modyfikacja nagłówków HTTP, jeśli poprawne zostaną wysłane do apache, właściwa treść powinna zostać zwrócona.


1
Ostatnia linia jest niejasna. Czy nie pasowałoby to bardziej do SF?
tshepang

@tshepang ... nie, ponieważ muszę to zrobić na pulpicie Linux?
ksenoterrakid

1
Nadal nie tak jasne. Co dokładnie oznacza „lub inne opcje”? Nie każ mi zgadywać.
tshepang

3
@tshepang Nie wiem, czego szukam ... gdybym wiedział, dlaczego miałbym pytać? mogą istnieć opcje, których nie rozważałem. Wydaje mi się, że prosisz mnie o wyjaśnienie, jak działają wirtualne hosty apache, http i dns.
ksenoterrakid

Myślę, że szukasz tego: unix.stackexchange.com/a/104511/135943
Wildcard

Odpowiedzi:


65

Szukałem sposobu na uruchomienie programu ze zmodyfikowaną rozdzielczością DNS do celów testowych. Dla mnie rozwiązaniem było użycie HOSTALIASESzmiennej środowiskowej:

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

Zobaczyć hostname(7).

(Uwaga dodatkowa: w tym przykładzie HOSTALIASESzmienna środowiskowa wpływa tylko na wgetproces. Oczywiście możesz włączyć export HOSTALIASESją dla wszystkich podprocesów bieżącej powłoki).


1
tak naprawdę powinno to być + 10k, niestety mogę dać ci tylko +1
xenoterracide

Zgadzam się! + 10k !!
Anders Hansson,

3
Wielkie dzięki! Przykład powinien poprzedzić exportw większości przypadków: export HOSTALIASES=~/.hosts.
ezequiel-garzon

8
wydaje się, że obsługuje tylko hosty dla aliasów hostów, a nie IP i hosty nie mogą zawierać „.”
woda netto 16.04.15

Czy istnieje takie samo rozwiązanie dla systemu Windows?
Akceptor,

10

Możesz napisać opakowanie wokół funkcji libc, aby rozpoznać nazwy hostów i wyszukać je w innym pliku niż / etc / hosts. Następnie uruchom dowolną aplikację, w której chcesz użyć pliku hosts

LD_PRELOAD=wrapper.so firefox

4
Najbardziej przydatne jest, aby opakowanie przekierowywało otwarcie /etc/nsswitch.confdo ~/.nsswitch.conf, i sprawi, ~/.nsswitch.confże zapyta twoje bazy danych DNS.
Gilles „SO- przestań być zły”

6

Myślę, że najlepszym sposobem na to byłoby skonfigurowanie proxy SOCKS5 i powiadomienie firefox, aby wysyłał żądania DNS przez proxy SOCKS5 (network.proxy.socks_remote_dns). Możesz dość łatwo skonfigurować proxy socks5 z openssh (opcja -D) i mieć zdalny host działający z niestandardowym / etc / hosts lub czymś takim jak DNSMasq dla bardziej złożonych ustawień DNS. Skutecznie jednak przesuwa konfigurację ustawień DNS do systemu, w którym można wprowadzać zmiany w całym systemie.


łatwiej powiedzieć niż zrobić, biorąc pod uwagę świetną zaporę ogniową, która została zbudowana w celu zablokowania nas przed
wysyłaniem

5

Sprawdź następujące pytanie u administratora:

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

Jeśli omówione opcje i link SO nie są wykonalnymi rozwiązaniami, sprawdź:

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

Szczególnie sprawdź:

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

Wygląda na to, że ten dodatek może pomóc - ale zależy to od jego faktycznej implementacji.


niestety, podobnie jak operacja w tym pytaniu, żadne z nich nie wydaje się opłacalne.
ksenoterrakid

@xenoterracide - zaktualizowałem swoją odpowiedź - być może dodatek do readresatora jest opcją?
maxschlepzig

Nie wydaje mi się, żeby tak było. To, co naprawdę muszę zrobić, to zmodyfikować nagłówki HTTP, które są wysyłane ... jako alternatywa dla hakowania za pomocą hostów
xenoterracide

Przeszukałem rozwiązanie SO (TamperData), ale nie widziałem, jak zmodyfikować w nim hosta. Zastanawiam się, czy funkcja nagłówków HTTP na żywo naprawdę pozwala mi modyfikować nagłówki, ponieważ jest to przeglądarka.
ksenoterrakid

Wydaje mi się, że rozszerzenie Modify Headers wymienione nieco w SO działa ... jeśli używasz nazwy hosta Host ... w nim ... jeszcze nie przetestowano ... poza uszkodzonymi stronami, które go używają.
ksenoterrakid

2

Aby przetestować vhosty, możesz ustawić serwer Apache jako serwer proxy w przeglądarce Firefox. Wpisane imię zostanie przesłane do Apache. Spowoduje to przerwanie przeglądania innych witryn, więc po zakończeniu ustaw serwer proxy ponownie.


0

Potrzebowałem czegoś podobnego do ssh, scp itp. Dla serwera, który zmienia IP co kilka tygodni (a nasz dział IT ma kilka tygodni opóźnienia w ustawianiu hosta). Rozwiązałem go za pomocą specjalnej zmiennej dla tego serwera: export FOO='131.227.aaa.bbba potem mogę to zrobić ssh bar@$FOOi zmieniam adres IP za ~/.bashrckażdym razem, gdy się zmienia ...


-2

Pech nie, nie możesz, chyba że napiszesz własną przeglądarkę internetową.

Jeśli musisz wykonać kilka testów, potrzebujesz maszyny testowej, cokolwiek to jest maszyna wirtualna lub prawdziwa, więc musisz zapytać administratora Unixa (lub dostawcę hostingu), jak możesz stworzyć środowisko programistyczne.

Możesz także zainstalować maszynę wirtualną na komputerze, zainstalować dystrybucję Linuksa, Apache i przetestować zmiany (nie jest tak trudne, jak się wydaje)

Aktualizacja

Aby lepiej to wyjaśnić, każda aplikacja jest napisana przy użyciu standardowych bibliotek, w ten sposób nikt nie musi przepisywać biblioteki niskiego poziomu i funkcji takich jak gethostbyname ().

Te funkcje zwykle są ustawione na użycie pliku (/ etc / hosts) i DNS, więc nieszczęśliwie, jeśli potrzebujesz, aby twoja przeglądarka rozpoznała nazwę niż ta ustawiona w / etc / hosts, nie masz zbyt wielu alternatyw .

  1. Możesz skonfigurować własny serwer DNS i zapytać, kto ma prawa roota, aby zmienić plik /etc/resolve.conf
  2. Możesz zainstalować serwer proxy, taki jak DeleGate, i ustawić niektóre reguły dla VirtualHost
  3. Zapytaj o prawa sudo na tym hoście klienta
  4. Zmień zachowanie aplikacji, której używasz do testowania połączenia (chyba przeglądarki), na przykład https://addons.mozilla.org/en-US/firefox/addon/switchhosts/

4
-1 źle sformułowane i protekcjonalne. Jestem dostawcą hostingu, a to cholerna strona klientów na naszym serwerze, którą muszę przetestować. Mamy linuksowy rozruch sieciowy, do którego nie mam dostępu administratora i nie sądzę, żebym mógł uruchomić na nim maszynę wirtualną.
ksenoterrakid

@ Xenoterracide nie ma zbyt wiele do powiedzenia. To naprawdę nie jest możliwe, o co prosisz, z wyjątkiem zmiany sposobu tworzenia SOCKET.
tmow

1
@ Xenoterracide BTW, nie było zamiaru obrażać.
tmow

tak samo jak dostawca hostingu ... Właściwie mam "prawa sudo", mam prawdziwy root na każdym pudełku i pełny dostęp do wszystkiego ... z wyjątkiem mojego pulpitu (eyeroll), ale jeśli jeszcze nie chcieli zmienić swoich serwerów nazw .. Nic na to nie poradzę ...
Xenoterracide

1
za pomocą LD_PRELOAD możesz „przesłonić” określone funkcje „niskiego poziomu” i robić, co chcesz, np. informowanie programu o swoim własnym '/ etc / hosts' open()i każdym innym wywołaniu niskopoziomowym .. dopóki dynamiczne ładowanie kodu jest włączone (.so)
akira
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.