GNU/Linux >> Linux Esercitazione >  >> Linux

Configurare un server DNS per interfaccia nic (eth0 / eth1)?

Non puoi facilmente fare quello che vuoi.

O come posso configurare un server dei nomi DNS diverso per eth0 rispetto a eth1?

La ricerca del nome di un nome host avviene tramite librerie di sistema standard e non è associata in alcun modo a una particolare "connessione". Infatti, nel momento in cui avviene la query DNS, c'è nessuna connessione, perché la tua applicazione non ha nemmeno capito l'indirizzo a cui si connetterà (motivo per cui utilizza il DNS in primo luogo).

Come posso far sì che rispetti le impostazioni DNS in ifcfg piuttosto che un valore predefinito per resolv.conf?

Il resolver Linux ha una sola configurazione globale (/etc/resolv.conf ). Non esiste alcuna impostazione per interfaccia, per dominio o per connessione di alcun tipo. Le impostazioni in /etc/sysconfig/network-scripts/... sono usati solo per popolare /etc/resolv.conf , e generalmente se specifichi DNS1 e DNS2 in questi file, l'ultima interfaccia che apparirà sarà quella che vedi in /etc/resolv.conf .

C'è un modo migliore per gestirlo?

Puoi dirci cosa stai effettivamente cercando di realizzare? Potremmo essere in grado di suggerirti soluzioni migliori se puoi dirci di più sulla tua situazione specifica.


Una richiesta DNS è fondamentalmente o

  1. "qual è l'indirizzo IP di host1.domain1.com" o
  2. "qual è il nome host di 192.168.0.5."

Quindi non si sa al momento della "richiesta" quale scheda Ethernet sarà coinvolta. Quello che potresti chiedere ragionevolmente sarebbe "tutte le richieste che terminano con 'domain1.com' dovrebbero andare a 192.168.0.2, e tutte le altre richieste dovrebbero andare a 10.0.0.2."

E allo stesso modo, "Tutte le richieste DNS inverse corrispondenti a 192.168.0.0/24 dovrebbero andare a 192.168.0.2 e il resto dovrebbe andare a 10.0.0.2."

Come ha detto Larsks, Linux non supporta tale configurazione. Tuttavia, puoi eseguire il tuo server DNS minimo che implementa la logica di cui sopra e inoltra le richieste al server DNS "reale" appropriato.

Credo che dnsmasq possa farlo (vedi Come configurare dnsmasq per inoltrare più server DNS?). Ma prima di scoprirlo, ho lanciato il mio in Twisted:

from twisted.internet import reactor
from twisted.names import dns
from twisted.names import client, server

class Resolver(client.Resolver):
  def queryUDP(self, queries, timeout=None):
    if len(queries) > 0 and (str(queries[0].name).endswith('.domain1.com'):
      self.servers = [('192.168.0.2', 53)]
    else:
      self.servers = [('10.0.0.2', 53)]
    return client.Resolver.queryUDP(self, queries, timeout)

resolver = Resolver(servers=[('10.0', 53)])
factory = server.DNSServerFactory(clients=[resolver])
protocol = dns.DNSDatagramProtocol(factory)

reactor.listenUDP(53, protocol, interface='127.0.0.1')
reactor.listenTCP(53, factory, interface='127.0.0.1')
reactor.run()

Linux
  1. Come configurare il server DNS su CentOS 5 / RHEL 5

  2. Configura i client OpenVPN per utilizzare un server DNS specifico

  3. Configura Active Directory con DNS integrato

  4. Configura il server MariaDB su CentOS

  5. Centos 7 :Configura il server DNS

Come configurare il server DNS su Ubuntu 18.04 / Ubuntu 16.04

Come installare e configurare il server DNS su Ubuntu 16.04 LTS

Come configurare il DNS in Windows Server 2012

Come installare e configurare il server DNS in Linux

Ubuntu 19.04:Configura il server NTP

Centos 7 :Configura il server NTP