私有子网中的 Apache 实例未返回数据包

私有子网中的 Apache 实例未返回数据包

我们如何让私有子网中的 Apache 实例正常工作?

配置
具有 1 个 NAT 实例的公共子网
具有 1 个 App 实例的私有子网

细节
1. 通过 NAT 开启伪装

    iptables -t nat -A POSTROUTING -j MASQUERADE

2. 通过 3 启用 PREROUTING。4 .
iptables -t nat -A PREROUTING -p tcp --port 80 -j DNAT --to-destination 10.0.10.102:80
启用端口转发/proc/sys/net/ipv4/ip_forward
。NAT 和 App 的安全组(在生产中永远不会保留这些,而仅仅是为了显示所有端口都是开放的)

    Inbound All Traffic 0.0.0.0/0
    Outbound All Traffic 0.0.0.0/0

5. 网络 ACL

    Inbound All Ports 0.0.0.0/0
    Outbound All Ports 0.0.0.0/0

6. Ping 和 wget 处理外部请求

    ping google.com
    wget google.com

7. Apache 正在监听私有子网中的 App 实例。

    netstat -tulpn
    Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
    tcp6       0      0 :::80                   :::*                    LISTEN      -

Apache 流量
对私有子网上的 Apache 服务器的公共请求不起作用。

wget http://127.0.0.0.1/index.html   => success
# public IP requests
wget http://xxx.x.x.x/index.html   => failure
Connecting to xxx.x.x.x:80...      => hangs

从 NAT 主机终端

sudo tcpdump -i any -n port 80
sudo: unable to resolve host ip-10-0-0-71
15:22:17.668089 IP 10.0.10.102.54033 > X.X.X.X.80: Flags [S], seq 848018267, win 26883, options [mss 8961,sackOK,TS val 19553465 ecr 0,nop,wscale 7], length 0
15:22:17.668111 IP 10.0.0.71.54033 > X.X.X.X.80: Flags [S], seq 848018267, win 26883, options [mss 8961,sackOK,TS val 19553465 ecr 0,nop,wscale 7], length 0

我们需要做什么才能使 Apache 能够在私有子网中工作?

相关内容