Puis-je créer un remplacement DNS similaire à l'écriture dans / etc / hosts sans accès root


48

Je veux définir un enregistrement DNS que mon navigateur utilisera, mais je n'ai pas d'accès root, je ne peux donc pas le modifier /etc/hosts. Je dois le faire pour tester vhosts avec Apache, dont le DNS n'a pas encore été configuré. J'ai accès à Firefox et Chrome, donc s'il y a un plugin qui pourrait le faciliter, ou d'autres options sont utiles.

update: l'alternative à la substitution du DNS est probablement de modifier les en-têtes HTTP. Si les corrects sont envoyés à Apache, le contenu correct doit être renvoyé.


1
La dernière ligne n'est pas claire. En outre, cela ne conviendrait-il pas davantage à la SF?
Tshepang

@tshepang ... non parce que je dois le faire sur un bureau linux?
Xenoterracide

1
Toujours pas si clair. Qu'est-ce que "ou d'autres options sont utiles" signifie exactement? Ne me fais pas deviner.
Tshepang

3
@tshepang Je ne sais pas ce que je cherche ... si je savais pourquoi je demanderais? il y a peut-être des options que je n'ai pas envisagées. J'ai l'impression que vous me demandez d'expliquer comment les hôtes virtuels, HTTP et DNS d'Apache fonctionnent ensemble.
Xenoterracide

Je pense que vous recherchez ceci: unix.stackexchange.com/a/104511/135943
Wildcard

Réponses:


65

Je cherchais un moyen d'exécuter un programme avec une résolution DNS modifiée à des fins de test. Pour moi, la solution utilisait la HOSTALIASESvariable d'environnement:

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

Voir hostname(7).

(Remarque: dans l'exemple, la HOSTALIASESvariable d'environnement n'affecte que le wgetprocessus. Vous pouvez bien sûr l' export HOSTALIASESappliquer à tous les sous-processus du shell actuel.)


1
vraiment cela devrait être comme + 10k, malheureusement, je ne peux que vous donner +1
xenoterracide

Je suis d'accord! + 10k !!
Anders Hansson

3
Merci beaucoup! L'exemple doit préfixer exportdans la plupart des cas: export HOSTALIASES=~/.hosts.
ezequiel-garzon

8
il semble que seuls les hôtes à alias hôtes, pas IP et hôtes ne peuvent pas contenir ".".
netawater

Existe-t-il la même solution pour Windows?
Akceptor

10

Vous pouvez écrire un wrapper autour de la fonction libc pour résoudre les noms d’hôte et les rechercher dans un fichier différent de celui de / etc / hosts. Puis lancez toutes les applications avec lesquelles vous souhaitez utiliser votre fichier hosts

LD_PRELOAD=wrapper.so firefox

4
Plus utilement, faites en sorte que votre wrapper redirige l'ouverture de /etc/nsswitch.confto ~/.nsswitch.confet crée une ~/.nsswitch.confrequête qui interroge vos bases de données DNS.
Gilles 'SO- arrête d'être méchant'

6

Je pense que le meilleur moyen de le faire serait de configurer un proxy SOCKS5 et d'indiquer à Firefox d'envoyer les requêtes DNS via le proxy SOCKS5 (network.proxy.socks_remote_dns). Vous pouvez configurer assez facilement un proxy socks5 avec openssh (option -D) et faire en sorte qu'un hôte distant s'exécute avec un fichier / etc / hosts personnalisé, ou quelque chose comme DNSMasq pour des paramètres DNS plus complexes. En réalité, cependant, cela pousse la configuration des paramètres DNS vers un système sur lequel vous pouvez apporter des modifications globales.


plus facile à dire qu'à faire, vu le grand pare-feu qui a été érigé pour nous empêcher de ssh-ing ...
xenoterracide

5

Consultez la question suivante chez le superutilisateur:

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

Si les options discutées et le lien SO ne sont pas des solutions viables, vérifiez:

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

Surtout vérifier:

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

Il semble que cet addon pourrait aider - mais je dépend de sa mise en œuvre réelle.


Malheureusement, cela ressemble beaucoup à l'op dans cette question, aucune d'entre elles ne semble viable.
xenoterracide

@xenoterracide - J'ai mis à jour ma réponse - le complément de redirecteur est peut-être une option?
maxschlepzig

Je ne pense pas, de la manière dont il est libellé ... ce que j'ai vraiment besoin de faire, c'est de modifier les en-têtes HTTP qui sont envoyés ... comme alternative au piratage à l'aide d'hôtes
xenoterracide

J'ai fouillé dans la solution SO (TamperData), mais je ne voyais pas comment modifier l'hôte à cet égard. Je me demande si les en-têtes HTTP en direct me permettent vraiment de modifier les en-têtes, il est dit que c'est un spectateur.
Xenoterracide

Je pense que l'extension Modify Headers listée un peu dans le SO on marche ... si vous utilisez Host hostname ... dans celui-ci ... pas encore testé ... en dehors des sites de rupture qui l'utilisent.
Xenoterracide

2

Pour tester vhosts, vous pouvez définir le serveur Apache en tant que proxy dans Firefox. Le nom que vous avez entré sera transmis à Apache. Cela interrompra la navigation sur d’autres sites. Réglez donc le proxy lorsque vous avez terminé.


0

J'avais besoin de quelque chose de similaire pour ssh, scp etc. pour un serveur qui ne cesse de changer d'adresse IP toutes les deux semaines (et notre service informatique a quelques semaines de retard pour configurer l'hôte). Je l'ai résolu en utilisant une variable spéciale pour ce serveur: export FOO='131.227.aaa.bbbet alors je peux le faire simplement ssh bar@$FOOet je change l'adresse IP à ~/.bashrcchaque changement ...


-2

Pas malchanceux, vous ne pouvez pas, sauf que vous écrivez votre propre navigateur Internet.

Si vous devez effectuer des tests, vous avez besoin d'une machine de test, qu'il s'agisse d'une machine virtuelle ou réelle, vous devez donc demander à votre administrateur Unix (ou fournisseur d'hébergement) comment vous pouvez mettre en place un environnement de développement.

Vous pouvez également installer une machine virtuelle sur votre PC, une distribution Linux, Apache et tester vos modifications (ce n'est pas aussi difficile que ça en a l'air)

Mise à jour

Pour mieux expliquer, chaque application est écrite à l'aide des bibliothèques standard. Ainsi, personne ne doit réécrire la bibliothèque de bas niveau et des fonctions telles que gethostbyname ().

Ces fonctions sont normalement configurées pour utiliser le fichier (/ etc / hosts) et le DNS. Si vous avez besoin que votre navigateur résolve un nom différent de celui défini dans le fichier / etc / hosts, vous ne disposez pas de beaucoup d'alternatives. .

  1. Vous pouvez configurer votre propre serveur DNS et demander à qui a les droits root de changer le fichier /etc/resolve.conf
  2. Vous pouvez installer un serveur proxy tel que DeleGate et définir des règles pour votre VirtualHost
  3. Demander les droits sudo sur cet hôte client
  4. Changez le comportement de l'application que vous utilisez pour tester la connexion (je suppose le navigateur), par exemple https://addons.mozilla.org/en-US/firefox/addon/switchhosts/

4
-1 mal libellé et condescendant. Je suis le fournisseur d’hébergement, et c’est le site de maudits clients sur notre serveur que je dois tester. Nous avons un linux de démarrage réseau auquel je n'ai pas accès administrateur, et je ne crois pas pouvoir démarrer une machine virtuelle dessus.
xenoterracide

@xenoterracide il n'y a pas trop à dire. Ce que vous demandez n’est vraiment pas réalisable, sauf que vous modifiez la façon dont une DOUILLE est créée.
tmow

1
@ xenoterracide BTW, il n'y avait aucune intention d'offenser.
tmow

ainsi que le fournisseur d’hébergement ... j’ai "des droits sudo" en fait, j’ai une vraie racine sur chaque boîte et un accès complet à tout ... sauf mon ordinateur de bureau (eyeroll) mais s’ils n’ont pas encore voulu changer de serveur de noms .. Je ne peux pas aider ça ...
xenoterracide

1
Avec LD_PRELOAD, vous pouvez "écraser" des fonctions "de bas niveau" spécifiques et faire ce que vous voulez, par exemple. informer le programme de votre propre '/ etc / hosts' open()et de tout autre appel de bas niveau .. tant que le chargement dynamique du code est activé (.so)
akira
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.