Posso creare override DNS simili alla scrittura in / etc / hosts senza accesso root


48

Voglio impostare un record DNS che verrà utilizzato dal mio browser, ma non ho accesso come root, quindi non posso modificarlo /etc/hosts. Devo farlo per testare vhosts con apache, il cui DNS non è stato ancora impostato. Ho accesso a Firefox e Chrome, quindi se c'è un plugin che potrebbe facilitarlo; o altre opzioni sono utili.

aggiornamento: l'alternativa alla sovrascrittura del dns sta probabilmente modificando le intestazioni HTTP, se quelle corrette vengono inviate ad apache, dovrebbe essere restituito il contenuto corretto.


1
L'ultima riga non è chiara. Inoltre, questo non si adatterebbe di più in SF?
Tshepang,

@tshepang ... no perché devo farlo su un desktop Linux?
xenoterracide,

1
Ancora non così chiaro. Che cosa significa esattamente "o altre opzioni utili"? Non farmi indovinare.
Tshepang,

3
@tshepang Non so cosa sto cercando ... se sapessi perché dovrei chiedere? potrebbero esserci opzioni che non ho considerato. Sento che mi stai chiedendo di spiegare come host virtuali apache, http e dns lavorano insieme.
xenoterracide,

Penso che tu stia cercando questo: unix.stackexchange.com/a/104511/135943
Wildcard,

Risposte:


65

Stavo cercando un modo per eseguire un programma con risoluzione DNS modificata a scopo di test. Per me, la soluzione stava usando la HOSTALIASESvariabile d'ambiente:

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

Vedere hostname(7).

(Nota a margine: nell'esempio la HOSTALIASESvariabile d'ambiente influisce solo sul wgetprocesso. Naturalmente, è possibile export HOSTALIASESfar sì che abbia effetto per tutti i sottoprocessi della shell corrente.)


1
davvero questo dovrebbe essere come + 10k, sfortunatamente posso darti solo +1
xenoterracide

Sono d'accordo! + 10k !!
Anders Hansson,

3
Molte grazie! L'esempio dovrebbe anteporre exportnella maggior parte dei casi: export HOSTALIASES=~/.hosts.
Ezequiel-Garzon,

8
sembra supportare solo gli host agli alias host, non IP e gli host non possono contenere ".".
netawater,

Esiste la stessa soluzione per Windows?
Akceptor il

10

È possibile scrivere un wrapper attorno alla funzione libc per risolvere i nomi host e cercarli in un file diverso rispetto a / etc / hosts. Quindi esegui qualsiasi applicazione con cui desideri utilizzare il file hosts

LD_PRELOAD=wrapper.so firefox

4
Più utilmente, fai in modo che il tuo wrapper reindirizzi l'apertura di /etc/nsswitch.confa ~/.nsswitch.confed esegui una ~/.nsswitch.confquery che interroghi i tuoi database DNS.
Gilles 'SO- smetti di essere malvagio' il

6

Penso che il modo migliore per farlo sarebbe quello di impostare un proxy SOCKS5 e dire a Firefox di inviare le richieste DNS sul proxy SOCKS5 (network.proxy.socks_remote_dns). Puoi impostare un proxy socks5 con openssh abbastanza facilmente (l'opzione -D) e avere un host remoto in esecuzione con un / etc / hosts personalizzato, o qualcosa come DNSMasq per impostazioni DNS più complesse. In effetti, tuttavia, questo sta spingendo la configurazione delle impostazioni DNS su un sistema a cui è possibile apportare modifiche a livello di sistema.


più facile a dirsi che a farsi, considerando il grande firewall che è stato eretto per impedirci di uscire ...
xenoterracide,

5

Dai un'occhiata alla seguente domanda su superutente:

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

Se le opzioni discusse e il collegamento SO non sono soluzioni praticabili, controlla:

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

Soprattutto controlla:

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

Sembra che questo componente aggiuntivo possa essere d'aiuto, ma dipendo dalla sua effettiva implementazione.


sfortunatamente molto simile all'operazione in quella domanda nessuno di questi sembra fattibile.
xenoterracide,

@xenoterracide - ho aggiornato la mia risposta - forse il componente aggiuntivo redirector è un'opzione?
maxschlepzig,

Non credo dal modo in cui è scritto .. quello che devo davvero fare è modificare le intestazioni HTTP che vengono inviate ... come opzione alternativa per hackerare usando gli host
xenoterracide

Ho cercato la soluzione SO (TamperData) ma non ho visto come modificare l'host. Mi chiedo se la cosa reale delle intestazioni http mi permetta davvero di modificare le intestazioni, dice che è un visualizzatore.
xenoterracide,

Penso che l'estensione Modifica intestazioni elencata un po 'sotto in quella SO funzioni ... se usi l'hostname ... in esso ... non ancora testato ... al di fuori dei siti di rottura che lo usano.
xenoterracide,

2

Per testare i vhosts, è possibile impostare il server Apache come proxy in Firefox. Il nome inserito verrà inoltrato ad Apache. Ciò interromperà la navigazione in altri siti, quindi ripristina il proxy quando hai finito.


0

Avevo bisogno di qualcosa di simile per ssh, scp ecc. Per un server che cambia continuamente IP ogni paio di settimane (e il nostro IT ha un ritardo di un paio di settimane nell'impostazione dell'host). L'ho risolto usando una variabile speciale per questo server: export FOO='131.227.aaa.bbbe poi posso fare solo ssh bar@$FOOe cambio l'IP nel mio ~/.bashrcogni volta che cambia ...


-2

Sfortunatamente no, non puoi, tranne che scrivere il tuo browser Internet.

Se devi fare alcuni test hai bisogno di una macchina di prova, qualunque sia una macchina virtuale o una vera, quindi devi chiedere al tuo amministratore Unix (o provider di hosting) come creare un ambiente di sviluppo.

Puoi anche installare una VM sul tuo PC, installare una distribuzione Linux, Apache e testare le tue modifiche (non è così difficile come sembra)

Aggiornare

Per spiegare meglio, ogni applicazione è scritta usando le librerie standard, in questo modo nessuno deve riscrivere la libreria di basso livello e funzioni come gethostbyname ().

Queste funzioni normalmente sono impostate per utilizzare file (/ etc / hosts) e DNS, quindi, sfortunatamente, se hai bisogno che il tuo browser risolva un nome di quello impostato in / etc / hosts non hai troppe alternative .

  1. È possibile configurare il proprio server DNS e chiedere a chi dispone dei diritti di root di modificare /etc/resolve.conf
  2. Puoi installare un server proxy come DeleGate e impostare alcune regole per VirtualHost
  3. Chiedi i diritti sudo sull'host del cliente
  4. Cambia il comportamento dell'applicazione che stai utilizzando per testare la connessione (suppongo che il browser), ad esempio https://addons.mozilla.org/en-US/firefox/addon/switchhosts/

4
-1 formulato male e condiscendente. Sono il fornitore di hosting, ed è il dannato sito dei clienti sul nostro server che devo testare. Abbiamo una rete che avvia Linux a cui non ho accesso come amministratore e non credo di poter avviare una VM su di essa.
xenoterracide

@xenoterracide non c'è molto da dire. In realtà non è fattibile quello che stai chiedendo, tranne che per cambiare il modo in cui viene creata una PRESA.
tmow

1
@xenoterracide A proposito, non c'era alcuna intenzione di offendere.
tmow

così come il provider di hosting ... In realtà ho "diritti sudo", ho una vera radice su ogni box e pieno accesso a tutto ... tranne il mio desktop (eyeroll) ma se non hanno ancora voluto cambiare i loro nameserver .. Non posso
farci niente

1
con LD_PRELOAD puoi "sovrascrivere" specifiche funzioni di "basso livello" e fare ciò che desideri, ad es. riferire al programma il proprio '/ etc / hosts' su open()e qualsiasi altra chiamata di basso livello .. fintanto che il caricamento dinamico del codice è invocato (.so)
akira
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.