obtendo o mesmo desempenho http com endereço visível do mundo versus endereço IP local

1

Eu tenho um servidor web sentado atrás de um NAT. O servidor web, portanto, tem dois endereços IP: um que é visível ao mundo e outro que é visível apenas na LAN.

Para efeitos de dispositivos móveis, gostaria de poder consultar as páginas no servidor a partir de um único endereço, por ex. www.myhost.com em ambos os casos, em vez de usar o endereço IP local, como 192.168.1.x quando o dispositivo está na LAN e www.myhost.com quando o dispositivo está fora da LAN. Há duas razões para isso: primeiro, é bastante inconveniente ter que alternar manualmente entre endereços com base em onde se está. Em segundo lugar, não existe um certificado SSL separado para o endereço IP da LAN, o que resulta em avisos irritantes do navegador que devem ser clicados.

No entanto, presumivelmente devido ao fato de que o tráfego através do endereço www.myhost.com tem que passar pelo NAT e 192.168.1.x o tráfego não, há uma diferença substancial de desempenho - as taxas de transferência na LAN são 6x mais rápidas.

Existe alguma maneira de sempre usar o nome visível do mundo e ainda obter o desempenho da LAN quando estiver na LAN?

Eu não tenho acesso ao servidor DNS em nenhum dos casos, mas algo como o DNS multicast (também conhecido como Bonjour) funciona?

Para tornar as coisas um pouco mais complicadas, eu também gostaria que funcionasse para um segundo site. Tem um domínio diferente, por ex. www.myhost2.com que replica o primeiro host. Idealmente www.myhost.com para resolver o IP para www.myhost2.com na LAN do segundo site.

    
por Michael 11.01.2014 / 23:31

1 resposta

2

Suposições

  • O FW encaminha 80 / tcp e 443 / tcp para 192.168.1.5 (httpd verde)
  • O FW emite a Opção 6 do DHCP, que atualmente aponta para um servidor de nomes externo na Internet (DNS público vermelho)
  • O público DNS Um registro para www.myhost.com é 198.51.100.20

Solução

Por que seu servidor da Web está lento agora

Alguns firewalls não sabem como o NAT para 198.51.100.20 da interface interna, então eles enviam todo o tráfego para o ISP (que envia tráfego para www.myhost.com de volta para 198.51.100.20). Esta ida e volta em direção ao roteador do ISP e de volta é o que te atrasa.

Referência do Diagrama:

Suaredepodeparecerdiferente,masasúnicascoisasquerealmenteimportamsãooservidordaWebeoservidordenomesinterno.

Exemplodeconfiguraçãodoresolvedorbindparaestarede

ParecequevocêestáexecutandooOSX,entãoeudareiasconfiguraçõesdo*nix,masvocêpodeconfigurarumservidordenomesderesoluçãosemelhantecomoWindows.

Eutenhoquefazeralgoparecidoemcasa;estaéumaversãotranscritadomeubindconfigs.Lembre-sedequebindadoraasguias.Quandovocêobtiverbindemexecução,será possível integrar bind com bonjour , mas isso não é realmente necessário.

Tecnicamente, é possível recolher seu servidor de nomes e httpd na mesma máquina, mas eu os manteria separados por questões de segurança. Outro FYI, é um pouco arriscado hospedar um servidor da Web sem uma DMZ real, mas estamos saindo do escopo de sua pergunta agora.

Arquivo /etc/bind/named.conf :
include "/etc/bind/named.conf.options";

// prime the server with knowledge of the root servers
zone "." {
    type hint;
    file "/etc/bind/db.root";
};

// be authoritative for the localhost forward and reverse zones, and for
// broadcast zones as per RFC 1912

zone "localhost" {
    type master;
    file "/etc/bind/db.local";
};

zone "127.in-addr.arpa" {
    type master;
    file "/etc/bind/db.127";
};

zone "0.in-addr.arpa" {
    type master;
    file "/etc/bind/db.0";
};

zone "255.in-addr.arpa" {
    type master;
    file "/etc/bind/db.255";
};

include "/etc/bind/named.conf.local";
Arquivo /etc/bind/named.conf.options :
acl kill_clients {
        192.168.1.32;  // Black hole requests here (I have a cheap webcam)
};
acl valid_clients {
        192.168.1.0/24;
        127.0.0.0/8;
};

options {
    directory "/var/cache/bind";

    // If there is a firewall between you and nameservers you want
    // to talk to, you may need to fix the firewall to allow multiple
    // ports to talk.  See http://www.kb.cert.org/vuls/id/800113

    // If your ISP provided one or more IP addresses for stable 
    // nameservers, you probably want to use them as forwarders.  
    // Uncomment the following block, and insert the addresses replacing 
    // the all-0's placeholder.

    // forwarders {
    //  0.0.0.0;
    // };

    auth-nxdomain no;    # conform to RFC1035
    listen-on-v6 { any; };
    listen-on { any; };
    blackhole { kill_clients; };
    forwarders {4.2.2.2; 8.8.8.8; };  // Replace with your ISP DNS servers
};
// Configure the communication channel for Administrative BIND9 with rndc
// By default, they key is in the rndc.key file and is used by rndc and bind9 
// on the localhost
controls {
        inet 127.0.0.1 port 953 allow { 127.0.0.1; };
};
Arquivo /etc/bind/named.conf.local :
//
// Do any local configuration here
//

// Consider adding the 1918 zones here, if they are not used in your
// organization
//include "/etc/bind/zones.rfc1918";

zone "myhost.com" {
        type master;
        file "/etc/bind/db.myhost";
};

zone "1.168.192.in-addr.arpa" {
    type master;
    file "/etc/bind/db.192.168.1.0";
};
Arquivo /etc/bind/db.myhost :
;
; BIND data file for local loopback interface
;
$TTL    3600
myhost.com. IN  SOA ns.myhost.com. hostmaster.myhost.com. (
           201301091350     ; Serial
               3600     ; Refresh
              86400     ; Retry
            2419200     ; Expire
               3600 )   ; Negative Cache TTL
;
myhost.com. IN  NS  ns.myhost.com.

www IN  A   192.168.1.5
www-public  IN  A   198.51.100.20
ns  IN  A   192.168.1.10
fw  IN  A   192.168.1.254
Arquivo /etc/bind/db.192.168.1.0 :
@   IN  SOA ns.myhost.com. root..     (
2013010901  ;serial
14400   ;refresh
3600    ;retry
604800  ;expire
10800   ;minimum
)

1.168.192.in-addr.arpa. IN  NS  ns.myhost.com.

10  IN  PTR ns.myhost.com.
5   IN  PTR www.myhost.com.
254 IN  PTR fw.myhost.com.
    
por 12.01.2014 / 06:26