使用全球可见地址与本地 IP 地址获得相同的 http 性能

使用全球可见地址与本地 IP 地址获得相同的 http 性能

我有一台位于 NAT 后面的 Web 服务器。因此,Web 服务器有两个 IP 地址:一个是全球可见的,另一个仅在 LAN 上可见。

对于移动设备,我希望能够从单个地址引用服务器上的页面,例如www.myhost.com在两种情况下,而不是使用本地 IP 地址(例如192.168.1.x当设备在 LAN 上时和www.myhost.com当设备在 LAN 外时)。这样做有两个原因:首先,必须根据所处位置手动切换地址非常不方便。其次,LAN IP 地址没有单独的 SSL 证书,导致必须点击烦人的浏览器警告。

然而,大概是由于通过www.myhost.com样式地址的流量必须经过 NAT 而192.168.1.x流量则不需要,因此存在很大的性能差异 - LAN 上的传输速率快 6 倍以上。

是否有某种方法可以始终使用世界可见的名称,但在 LAN 上仍能获得 LAN 性能?

在任何一种情况下,我都无法访问 DNS 服务器,但是类似多播 DNS(又名 Bonjour)的东西可以工作吗?

为了让事情变得更复杂一点,我还希望它能适用于第二个站点。它有一个不同的域,例如,www.myhost2.com它复制第一个主机。理想情况下, www.myhost.com解析www.myhost2.com第二个站点 LAN 中的 IP。

答案1

假设

  • FW 将 80/tcp 和 443/tcp 转发到 192.168.1.5(绿色 httpd)
  • FW 发布 DHCP 选项 6,当前指向互联网上的外部名称服务器(红色公共 DNS)
  • 公众DNS A 记录www.myhost.com198.51.100.20

解决方案

  • 建个DNS解析器192.168.1.10 为您的私人网络(深红色绑定/bonjour)
  • 在您的私有 DNS 上添加私有区域文件myhost.com(深红色绑定/bonjour)
  • 配置 DHCP 服务器的DHCP 选项 6(域名服务器)指向 192.168.1.10

为什么你的网络服务器现在很慢

有些防火墙不知道如何从内部接口对 198.51.100.20 进行 NAT,因此它们将所有流量发送到 ISP(ISP 随后将流量发送www.myhost.com回 198.51.100.20)。这种往返 ISP 路由器的过程会降低您的速度。

图表参考:

家庭网络

您的网络可能看起来不同,但真正重要的是您的 Web 服务器和内部名称服务器。

bind此网络的解析器配置示例

听起来您正在运行 OSX,因此我会提供 *nix 配置,但您可以使用 Windows 设置类似的解析名称服务器。

我必须在家里做类似的事情;这是我的bind配置的转录版本。请记住,bind喜欢标签。一旦您开始bind运行它可以将 bind 与 bonjour 集成,但这并不是真正需要的。

从技术上讲,可以将名称服务器和 httpd 合并到同一台机器上,但出于安全考虑,我会将它们分开。另外,在没有真正的 DMZ 的情况下托管网络服务器有点危险,但我们现在超出了您的问题范围。

文件/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";

文件/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; };
};

文件/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";
};

文件/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

文件/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.

相关内容