Mi piacerebbe accedere a un server web sia all'interno che all'esterno della mia rete domestica. Poi ho il mio firewall (pfSense) chiamato example.com . Dalla mia rete, posso accedere a ogni macchina tramite il suo nome host completamente risolto ( webserver.example.com , jenkins.example.com , nas.example.com , ecc.). Funziona perfettamente su tutte le mie macchine.
Il problema entra in gioco quando provo ad aggiungere un accesso esterno, in particolare al mio server gitlab. Possiedo un dominio e utilizzo il DNS dinamico per aggiornarlo in modo da puntare sempre al mio indirizzo IP residenziale. Ho quindi aperto la porta 443 per puntare al mio IP gitlab interno e ho aggiunto una voce CNAME per gitlab.example.com per fare riferimento a example.com . Funziona come previsto, ora posso accedere a gitlab.example.com sia all'interno che all'esterno della mia rete.
Il problema è che OS X ora ha un problema nel risolvere l'indirizzo IP corretto. gitlab ora risolve entrambi i 192.168.1.XXX e qualunque sia il mio indirizzo IP esterno. OS X sceglie in modo incoerente l'IP sbagliato a cui accedere. Quando I ping gitlab.example.com
, a volte vedrò il mio IP interno, a volte il mio esterno. nslookup
sembra sempre mostrare l'IP interno, mentre la funzione di ricerca di Network Utility sembra mostrare entrambi gli IP (76.xx.xxx.xxx, 192.168.1.xxx) o solo l'IP esterno. Questo sembra essere un problema solo quando accedi al mio server dalla riga di comando tramite git
. La connessione scade perché non sembra possibile trovare il server.
Utilizzando Chrome, mi sembra di essere sempre in grado di accedere al client web, indipendentemente da quale IP get viene risolto. Safari può accedere al server solo se l'IP interno è stato risolto. Quando viene utilizzato l'IP esterno, Safari mi informa che non è possibile aprire la pagina "perché il server su cui si trova questa pagina non risponde". Posso "forzare" il sistema operativo a dimenticare l'IP esterno svuotando la cache DNS ( sudo killall -HUP mDNSResponder
), che funziona per alcuni minuti, ma poi torna direttamente all'IP esterno.
Sono confuso sul motivo per cui questo problema sta accadendo. Idealmente, mi piacerebbe che OS X usasse sempre l'IP interno se ha l'opzione. Ma anche se sta usando l'IP esterno, perché non sarebbe in grado di accedere al server? Il mio ISP blocca il traffico di loopback dal mio IP al mio IP?
Il motivo per cui sto postando questa domanda qui, è perché solo OS X sembra avere questo problema, e posso riprodurlo in modo affidabile con più Mac. Né Linux né Windows sembrano avere questo problema. Ognuno di quelli risolve sempre l'IP interno quando si trova all'interno della rete e l'IP esterno al di fuori della rete. Questo è anche su più macchine. Non sono esattamente un esperto di networking o DNS, quindi qualsiasi aiuto sarebbe apprezzato. È abbastanza probabile che io abbia un'impostazione sbagliata da qualche parte, ma non ho idea di dove cominciare a cercare.