macOS, launchctl e dnsmasq per lo spoofing del dominio localhost

2

Di solito sono un utente Linux, ma vorrei testare la mia app mojolicious su un sistema macOS. quindi, vorrei *.test *.*.test e *.*.*.test tutto da risolvere in 127.0.0.1, dove la mia webapp ascolta con impazienza la porta 80.

Capisco che sia meglio farlo installando dnsmasq. Per macOS,

# brew install dnsmasq

e poi

# echo "address=/test/127.0.0.1" >> /usr/local/dnsmasq.conf
# launchctl start dnsmasq
# launchctl list | grep dns
89254   0   homebrew.mxcl.dnsmasq

quindi, se ho capito bene, ping abc.test dovrebbe ora eseguire il ping localhost. ahimè, non è così. (o, c'è un modo migliore per testare?)

Inoltre non capisco come chiudere e riavviare dnsmasq. launchctl restart dnsmasq , launchctl kill dnsmasq.mxcl.dnsmasq e launchctl disable 89254 (e molte delle relative permutazioni) sembrano tutti suscitare disprezzo ma nessun risultato.

    
posta ivo Welch 13.07.2017 - 10:32
fonte

1 risposta

6

Non hai detto quale versione di MacOS sei; la mia risposta qui è da macOS Sierra versione 10.12.5. (Lo sto usando per eseguire test su un'installazione VMCare di ADCS ...)

Prima , i comandi per arrestare e avviare dnsmasq sono:

sudo launchctl stop homebrew.mxcl.dnsmasq
sudo launchctl start homebrew.mxcl.dnsmasq

ETA se launchctl stop non lo ferma, è probabile che il file .plist (presumibilmente /Library/LaunchDaemons/homebrew.mxcl.dnsmasq.plist contenga le righe

<key>KeepAlive</key>
<true/>

Se non vuoi che sia sempre attivo, cambiala in

<key>KeepAlive</key>
<false/>

, invece. Oppure puoi disabilitarlo con

sudo launchctl disable homebrew.mxcl.dnsmasq

La prossima volta che vuoi accenderlo, esegui

sudo launchctl enable homebrew.mxcl.dnsmasq

Secondo , dovresti controllare gli altri valori del tuo file dnsmasq.conf. Ecco il mio:

[jenny@temeraire ~] $ grep -v ^# /usr/local/etc/dnsmasq.conf | grep -v ^$
domain-needed
bogus-priv
resolv-file=/usr/local/etc/resolv.conf
server=/ad.dybedahl.se/192.168.226.10
server=/226.168.192.in-addr.arpa/192.168.226.10
listen-address=127.0.0.1
no-negcache

Nota la riga resolv-file . Indica a dnsmasq quali server dei nomi utilizzare per gli host che non sono nella configurazione dnsmasq. Nel mio caso, assomiglia a questo:

[jenny@temeraire ~] $ more /usr/local/etc/resolv.conf 
nameserver 8.8.8.8
nameserver 8.8.8.4

Quindi tutte le ricerche DNS che non ricevono risposta dal mio server AD virtuale verranno gestite dai server dei nomi di Google, il che significa che posso ancora connettermi a host che non sono nella mia configurazione.

Terzo , per eseguire il debug se dnsmasq funziona correttamente, non utilizzare ping. Invece, usa dig, in questo modo:

dig @127.0.0.1 abc.test

Per verificare se il tuo sistema sta usando dnsmasq come suo resolver, usa nuovamente dig:

dig abc.test

Ti dirà quale server dei nomi sta usando, tra le altre cose.

Dig ti fornirà informazioni su come la ricerca è effettivamente fatta.

Quarto , per usare dnsmasq come risolutore, devi anche cambiare /etc/resolv.conf in modo che punti a 127.0.0.1 invece di qualsiasi cosa a cui ora punta. Dovresti iniziare copiando il tuo attuale /etc/resolv.conf in /usr/local/etc/resolv.conf , in modo che dnsmasq sappia quali server dei nomi utilizzare. Quindi cambia /etc/resolv.conf per leggere

nameserver 127.0.0.1

Sul mio portatile, lo faccio in Preferenze di Sistema - > Rete - > DNS. Non sono sicuro di come lo si fa su un server; forse semplicemente la modifica del file funzionerà.

    
risposta data 13.07.2017 - 11:00
fonte

Leggi altre domande sui tag