我有三个 EC2 实例。我想将所有 http 请求路由到一台机器,将标准端口上的所有 ssh 流量路由到另一台机器。第三台机器将用于路由,但只有一个接口:eth0。这个想法是用户为 http 和 ssh 请求获得一个端点 URL。现在我必须为 ssh 框使用子域,这会使命令变得相当长。
有没有办法用 IPTables 来设置它?我尝试用转发规则来设置它,但是当尝试通过外部网络 ssh 时,连接超时。
答案1
端口转发通常用于隐藏在防火墙后面且无法直接访问的机器。为了正常工作,它需要某种形式的 NAT,而听起来您的情况不会有这种 NAT。这会使这样的设置非常尴尬。
实际上,您需要使路由器成为唯一使用的公共 IP 地址,而其他两台机器尽管具有完全可用的公共 IP 地址,但从逻辑上讲却位于路由器后面。这可以通过将其默认网关设置为路由器的 IP(即所有传出流量都经过路由器)来实现。然后定义指向路由器的 DNS 条目,并设置路由器以执行必要的流量转发,并完成 NAT。
只要您的路由器配置不正确,我就会非常小心地设置其他两台机器的默认网关,因为一旦您这样做并且路由器尚未配置为正确转发流量,您将失去所有连接,并且获得工作连接的唯一方法是 ssh 进入路由器,然后从那里 ssh 进入任何其他机器。