Predefinito di iptables basato sul nome DNS della destinazione?

Ho una domanda riguardante la prerouting iptable. Non ho familiarità con i networking / routing / iptables, quindi spero che non sia affatto una questione stupida. Quindi chiedo la tua comprensione e indulgenza.

Quello che faccio è: utilizzo LXC per separare applicazioni in contenitori. Per accedere a un servizio (forse apache2) in un contenitore, devo fare prerouting come questo:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 20080 -j DNAT --to <container-ip>:80 

Finora così buono, funziona come dovrebbe.

Immagina che il sistema host ospita anche un apache2 (port 80). Ha assegnato 1 NIC e 2 nomi DNS: DNS1 (HostRecord) e DNS2 (Alias ​​a DNS1 ) Quello che voglio fare è PREROUTE non utilizzare la dport, ma utilizzando il DNS-Name, in modo che:

 http://DNS1:80 #ends up at the host apache2 http://DNS2:80 #ends up at lxc-container's apache2 (at the the same host) 

È ansible e se sì, come configurare iptables?

  • Configurare il server per instradare tutto il traffico tramite OpenVPN
  • come posso accedere a un server web in esecuzione sul mio ospite NATed VMware Fusion dal resto della substring?
  • Come accedere a host virtuale Apache in guest di VMware tramite NAT?
  • Spostare traffico specifico di networking su un altro server
  • NAT come firewall
  • sonicwall vpn e NAT
  • Trovare un IP di un privato (NAT) utilizzando i dati di destinazione storici
  • NAT: Se due host iniziano una connessione allo stesso IP: PORT, con la stessa sorgente PORT, come gestisce il router?
  • One Solution collect form web for “Predefinito di iptables basato sul nome DNS della destinazione?”

    I pacchetti TCP / IP vengono indirizzati a indirizzi IP e alle porte di networking, non a hostnames.

    Pertanto, il filter di pacchetti iptables funziona anche su indirizzi IP, porte di networking e protocolli e non su DNS / hostnames.


    Le tue opzioni sono:

    1. configurare il ponte in modo che il contenitore ottiene un indirizzo IP pubblico piuttosto che una gamma privata limitata all'host e configurare DNS in base a questo.
    2. utilizzare la funzionalità proxy inversa apache (o simile) che funziona a livello di hostname DNS e indirizza le richieste HTTP a livello di applicazione:

    per esempio:

      NameVirtualHost *:80 <VirtualHost *:80> # The DNS1 site is hosted locally ServerName DNS1 DocumentRoot /var/www./... </VirtualHost> <VirtualHost *:80> ServerName DNS2 # Forward all requests to container: Proxypass / http://<container-ip> ProxypassReverse / http://<container-ip> </VirtualHost> 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.