Domanda

Fondamentalmente il mio problema è che sto correndo un VM per lo sviluppo di siti web su.

La macchina host ha relative DNS che punta a Vm che esegue dnsmasq che risolve gli indirizzi dei vari siti dev, cioè test.mysite.vm etc.

Il problema è quando vado dal mio lavoro di rete a casa mia rete si scatena perché l'IP dei cambiamenti VM. E 'possibile per servire diversi indirizzi IP in base alle quali l'interfaccia richiesta è venuto da? O dovrei essere cercando di affrontare questo in un modo completamente diverso?

Grazie per il vostro aiuto!


Abbiamo scoperto che c'era un approccio molto più semplice a questo, dopo tutto ...

Ora configurazione 2 interfacce sul VM e non hanno bisogno di utilizzare dnsmasq.

La prima è solo un ponte / un'interfaccia condivisa che permette la VM di utilizzare ciò che mai la connessione internet è disponibile per l'host con un riavvio della rete ogni volta che mi muovo ufficio.

Il secondo è una connessione privata al mio ospite VM che ha un indirizzo IP statico. Questa è l'interfaccia che uso per collegare e associare qualsiasi servizi come nginx, mysql ecc.

È stato utile?

Soluzione

È possibile eseguire due istanze di dnsmasq, ciascuno con un'interfaccia differente è in ascolto su. È possibile utilizzare le opzioni --interface=X e --bind-interfaces per questo. Per impostazione predefinita, si lega anche la lo dispositivo di loopback e fallirà se due processi cercano di legarlo. Utilizzare --except-interface=lo per evitare questo.

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

Assicurati che il tuo file di configurazione è vuota quando si prova questo poichè esclude sempre la riga di comando. È inoltre possibile utilizzare --conf-file=/dev/null.

Come ho accennato nel commento, io non sono troppo sicuro di come questo aiuta la vostra situazione, ma potrebbe aiutare qualcun altro che cerca di ottenere due diversi intervalli di indirizzi su due diverse interfacce.

Altri suggerimenti

L'aggiunta dell'interfaccia all'inizio di ogni parametro funziona bene per me. Esempio (in 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

Sto usando il rilascio:

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

Mentre @ di Kichik risposta potrebbe lavoro, un modo più elegante per ottenere lo stesso potrebbe essere quella di utilizzare la direttiva localise-queries e una singola istanza del server dnsmasq.

darò per scontato che hai già configurato le gamme di DHCP per le diverse interfacce, e hanno dnsmasq legati a quelli.

Aggiungi il (parzialmente documentato) opzione localise-queries al file dnsmasq.conf.

# /etc/dnsmasq.conf
localise-queries

Quindi, assicurarsi che uno dei file che dnsmasq legge per i padroni di casa (come /etc/hosts) contiene le voci con gli indirizzi IP per entrambe le reti, in questo modo:

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

Un'alternativa a modificare il file /etc/hosts è quello di specificare gli indirizzi nel file dnsmasq.conf invece:

# /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

Il risultato in entrambi i casi, dnsmasq servirà solo l'IP corrispondente dell'interfaccia IP e la maschera di rete per le query ricevute su quel particolare interfaccia.

Secondo il uomo pagina , questo fa la seguente :

-y, --localise-query

Ritorna risponde alle query DNS da / etc / hosts che dipendono l'interfaccia su cui è stata ricevuta la query. Se un nome in / etc / hosts ha più di un indirizzo ad esso associato, e almeno uno di questi indirizzi è sulla stessa sottorete l'interfaccia a cui è stato inviato la query, per poi tornare solo l'indirizzo (es) su quella sottorete . Questo permette per un server di avere più indirizzi in / etc / hosts corrispondenti a ciascuna delle sue interfacce, e ospita otterrà l'indirizzo corretto in base a quale rete sono collegati a. Attualmente questa possibilità è limitata a IPv4.

In alternativa è anche possibile creare file configurazione multipla sotto /etc/dnsmasq.d/, una per ogni interfaccia si vuole servire DHCP.

Per esempio, se si dispone di due interfacce wireless di nome wlan0 e wlan1, e si vuole servire DHCP su di loro grazie a dnsmasq, è possibile creare due file sotto /etc/dnsmasq.d/ per configurare ciascuna interfaccia:

/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

Per me che è un modo molto pulito per configurare il sistema, e avere la configurazione persistono tra riavvii.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top