Ho esaminato personalmente il problema.
quello che succede è che quando si crea uno spazio dei nomi di rete, si vede /etc/resolv.conf
della macchina host a meno che non si crea esplicitamente /etc/netns/<namespace_name>/resolv.conf
, che legherà monte automaticamente /etc/resolv.conf
quando alzò gli occhi all'interno lo spazio dei nomi di rete. Pertanto, semplicemente creando tale percorso, lo resolv.conf
dell'host non sarà più visibile sul namespace della rete, che avrà il proprio resolv.conf
.
La manual page di ip netns
spiega questo:
Per le applicazioni che sono a conoscenza di spazi dei nomi di rete, la convenzione è quello di cercare i file di configurazione di rete a livello mondiale prima in /etc/netns/NOME/poi/eccetera/. Ad esempio, se si desidera una diversa versione di /etc/resolv.conf per uno spazio dei nomi di rete utilizzato per isolare il proprio VPN, lo si chiamerebbe /etc/netns/myvpn/resolv.conf.
Ip netns exec automatizza la gestione di questa configurazione, il file convenzione per le applicazioni di rete ignari dello spazio dei nomi, con la creazione di un monte namespace e rilegare il montaggio tutti i file di configurazione per rete namespace nella loro posizione tradizionale in/etc.
quanto riguarda l'aggiornamento resolv.conf
, dhclient
non funziona nei namespace rete fuori della scatola quando /etc/netns/<namespace_name>/resolv.conf
esiste (d'altra parte, quando non esiste, verrà sovrascritta la resolv.conf
della macchina host , poiché è l'unico disponibile, ma non è davvero desiderabile). Come mostra l'errore nella domanda precedente, ciò che accade è che dhclient
prepara un file temporaneo con i nuovi dettagli del server dei nomi in /etc/resolv.conf.dhclient-new.2740
e prova a rinominarlo come /etc/resolv.conf
. Genera un errore perché /etc/resolv.conf
è già montato su bind e apparentemente mv
non è autorizzato a fare questo trucco.
Per fare in modo che dhclient
funzioni negli spazi dei nomi di rete, è necessario modificare /sbin/dhclient-script
. Ho rimosso questo:
mv -f $new_resolv_conf /etc/resolv.conf
e lo ha sostituito con:
cat $new_resolv_conf > /etc/resolv.conf
rm -f $new_resolv_conf
In caso contrario, dhcpcd
sembra fare questo lavoro in modo corretto.
Questa è una soluzione alternativa. Nota che ci sono due sezioni in cui devi cambiare mv in cat. Mi chiedo cosa stia facendo intermentalmente. Rimuove prima il file? – 0xAffe