我正在尝试在 aws ec2 amazon linux 机器上创建一个网关,以便无法访问互联网的工作机器可以通过网关获得访问权限。然后,我将在其上安装一个服务器,并在网关机器上安装 apache2 负载均衡器,以将 http 请求重定向到工作机器。我通常在 debian 和本地虚拟环境中执行此操作的方式是:
在网关机器上:
- 启用 ipv4 转发
- 添加用于后路由伪装的 iptable 规则
- 重启网络
在工作机器上:
- 将默认网关添加到 /etc/network/interfaces
- 重启网络
就是这样。在 amazon linux 机器上,作为基于 redhat 的发行版,我按以下方式执行:
- 启用 ipv4 转发
add iptable rule for postrouting masquerading
- 重启网络
在工作机器上:
ip route add default via GATEWAY_MACHINE_IP
然后它就挂了,因为我失去了 ssh 连接。我还尝试修改 /etc/sysconfig/network-scripts/ 中的接口文件,但在重新启动网络时,我失去了 ssh 连接。
网关机器位于安全组中,该安全组允许来自所有来源的所有 IPv4 传入连接和来自我的本地计算机的 ssh,并允许到任何目的地的所有传出流量。
工作机器位于不同的安全组中,该组允许来自和到网关机器的所有流量以及来自我的本地计算机的 ssh。
我注意到 AWS 仅使用一个接口进行公共和私有连接,所以这可能与正在发生的事情有关?
我希望有人能告诉我我做错了什么,以及是否有可能在 AWS 中完成我尝试做的事情
答案1
同一台机器上有正向代理(一种互联网网关)和反向代理(负载均衡器)?这在 AWS 中通常行不通。
在 AWS 中,正向代理(私有子网到互联网)需要禁用源/目标检查。反向代理需要启用它。
您应该使用两个不同的服务器。或者,您可以使用 AWS 托管服务、NAT 网关(托管正向代理)和应用程序负载均衡器(反向代理)。