Question

En gros mon problème est que je suis une machine virtuelle en cours d'exécution pour le développement de sites Web sur.

La machine hôte a ses dns pointant à l'Vm qui est en cours d'exécution dnsmasq qui résout les adresses des différents sites de dev, à savoir test.mysite.vm etc.

La question est quand je vais de mon réseau de travail à mon réseau domestique, il toutes les pauses parce que la propriété intellectuelle des changements vm. Est-il possible de servir différentes adresses IP à partir de quelle interface la demande est venue? Ou devrais-je essayer de lutter contre cela d'une manière complètement différente?

Merci pour votre aide!


Turns qu'il y avait beaucoup plus facile approche à ce après tout ...

I maintenant 2Le interfaces sur la machine virtuelle et ne pas avoir besoin d'utiliser Dnsmasq.

La première est juste une interface pont / partagée qui permet à la machine virtuelle d'utiliser ce que jamais une connexion Internet est disponible à l'hôte avec un redémarrage du réseau chaque fois que je me déplace bureau.

Le 2e est une connexion privée à mon hôte VM qui a une adresse IP statique. Ceci est l'interface que j'utilise pour se connecter et de lier des services tels que nginx, MySQL, etc.

Était-ce utile?

La solution

Vous pouvez exécuter deux instances de dnsmasq, chacun avec une interface différente, il écoute. Vous pouvez utiliser les options de --interface=X et --bind-interfaces pour cela. Par défaut, il se lie également le dispositif de réalimentation lo et échouera si deux processus tentent de le lier. Utilisez --except-interface=lo pour éviter cela.

dnsmasq --interface=eth0 --except-interface=lo --bind-interfaces --dhcp-range=192.168.0.2,192.168.0.10,12h
dnsmasq --interface=eth1 --except-interface=lo --bind-interfaces --dhcp-range=10.0.0.2,10.0.0.10,12h

Assurez-vous que votre fichier de configuration est vide lorsque vous testez cela comme il l'emporte toujours la ligne de commande. Vous pouvez également utiliser --conf-file=/dev/null.

Comme je l'ai mentionné dans le commentaire, je ne suis pas trop sûr comment cela aide votre situation, mais cela pourrait aider quelqu'un d'autre qui essaie d'obtenir deux plages d'adresses différentes sur deux interfaces différentes.

Autres conseils

Ajout de l'interface au début de chaque paramètre fonctionne bien pour moi. Exemple (en dnsmasq.conf):

dhcp-host=eth0,00:22:43:4b:18:43,192.168.0.7
dhcp-host=eth1,00:22:43:4b:18:43,192.168.1.7

J'utilise la sortie:

$ dnsmasq --version
Version de Dnsmasq 2.68  Copyright (c) 2000-2013 Simon Kelley

Alors que la réponse de @ Kichik peut bien fonctionner, une plus élégante façon d'atteindre le même peut-être utiliser la directive localise-queries et une seule instance de serveur dnsmasq.

Je suppose que vous avez déjà configuré vos gammes DHCP pour les différentes interfaces, et ont dnsmasq lié à ceux-ci.

Ajoutez l'option localise-queries (partiellement documenté) à votre fichier dnsmasq.conf.

# /etc/dnsmasq.conf
localise-queries

Ensuite, assurez-vous que l'un des fichiers qui lit dnsmasq pour vos hôtes (comme /etc/hosts) contient des entrées avec les adresses IP pour les réseaux, comme ceci:

# /etc/hosts
127.0.0.1      dev-vm
192.168.1.1    dev-vm
10.0.0.1       dev-vm

Une alternative à la modification du fichier /etc/hosts est de spécifier les adresses dans votre fichier dnsmasq.conf à la place:

# /etc/dnsmasq.conf
localise-queries
host-record=dev-vm,127.0.0.1
host-record=dev-vm,192.168.1.1
host-record=dev-vm,10.0.0.1

En conséquence dans les deux cas, dnsmasq ne servira qu'à l'adresse IP qui correspond à IP et le masque de réseau de l'interface pour les requêtes reçues sur cette interface particulière.

Selon la page man , cela ne suit :

-y, --localise-requêtes

Retour répond aux requêtes DNS de / etc / hosts qui dépendent de l'interface sur laquelle la requête a été reçue. Si un nom dans / etc / hosts a plus d'une adresse qui lui est associée, et au moins l'une de ces adresses est sur le même sous-réseau que l'interface à laquelle a été envoyée la requête, alors ne retourne que l'adresse (s) sur ce sous-réseau . Cela permet au serveur d'avoir plusieurs adresses dans / etc / hosts correspondant à chacune de ses interfaces, et de fournir aux hôtes l'adresse correcte basée sur quel réseau ils sont attachés. Cette possibilité est actuellement limitée à IPv4.

Sinon, vous pouvez également créer plusieurs fichiers de configuration sous /etc/dnsmasq.d/, un pour chaque interface que vous voulez servir dhcp.

Par exemple, si vous avez deux interfaces sans fil nommées wlan0 et wlan1, et vous voulez servir dhcp sur eux grâce à Dnsmasq, vous pouvez créer deux fichiers sous /etc/dnsmasq.d/ pour configurer chaque interface:

/etc/dnsmasq.d/dnsmasq-wlan0.conf:

interface=wlan0         # Use interface wlan0
listen-address=10.0.0.1 # Explicitly specify the address to listen on
bind-interfaces         # Bind to the interface to make sure we aren't sending things elsewhere
server=8.8.8.8          # Forward DNS requests to Google DNS
domain-needed           # Don't forward short names
bogus-priv              # Never forward addresses in the non-routed address spaces.
dhcp-range=10.0.0.50,10.0.0.150,12h # Assign IP addresses between 10.0.0.50 and 10.0.0.150 with a 12 hour lease time

/etc/dnsmasq.d/dnsmasq-wlan1.conf:

interface=wlan1         # Use interface wlan0
listen-address=20.0.0.1 # Explicitly specify the address to listen on
bind-interfaces         # Bind to the interface to make sure we aren't sending things elsewhere
server=8.8.8.8          # Forward DNS requests to Google DNS
domain-needed           # Don't forward short names
bogus-priv              # Never forward addresses in the non-routed address spaces.
dhcp-range=20.0.0.50,20.0.0.150,12h # Assign IP addresses between 20.0.0.50 and 20.0.0.150 with a 12 hour lease time

Pour moi, c'est un moyen très propre pour configurer votre système, et avoir la configuration persistent entre les redémarrages.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top