我有一个很久以前在 NAT 网关出现之前创建的 VPC。像许多设置一样,我创建了一个 NAT 实例来路由出站流量。昨天我的 NAT 实例崩溃了。我可以重新启动,但这确实带来了一些麻烦,所以我决定尝试迁移到 NAT 网关。
我不在乎出站 IP 是否相同。作为测试,我创建了一个带有实例的新 VPC,以确保设置正确。然后我在现有 VPC 中创建了网关。然后我交换了主路由表以将其用作网关而不是实例。
我的设置是两个子网,一个指向互联网网关的公共子网,一个指向 NAT 网关的私有子网。我在实例上使用 OpenVPN 来访问我的私有实例。
但是,当我切换到 NAT 网关时,我无法再在现有实例上路由出站,但当我创建新实例时,它可以正常工作。反过来,问题是一样的。如果我将与 NAT 网关配合使用的新实例的子网设置为使用 NAT 实例,它将无法再看到外部世界。
我不会更改实例本身上的路由表,只会更改 Web 控制台中的路由。
我也尝试(使用我的测试实例)重新启动网络,然后重新启动,但都没有帮助。
我读过几份迁移指南,似乎表明这应该可行,显然路由会发生变化,但之后就无法正常工作。这有什么诀窍吗,还是我必须重新创建实例才能使用 NAT 网关?
编辑:这又是一个难题。我一时兴起,更改了测试实例的安全组(创建时我使用了默认安全组)。使用现有安全组使用相同的出站规则使实例能够连接但将其交换回原始组,并且无法连接。
编辑 2:更改我现有实例之一的安全组似乎不起作用。更改安全组似乎只对我设置为测试的新实例有效。
正如建议的那样,这是我的设置的一些屏幕:
这是我的路由表。我添加的命名路由表用于测试,它会路由到 nat 网关。我只有一个子网,其中有一个实例用于测试。列表中的第二个路由表是默认路由,所有其他子网都会使用 NAT 实例路由到该路由表。
以下是我private-subnet-1e
到 NAT 网关的路由的验证:
并验证我的一个生产服务器子网是否使用主网关通过 NAT 实例进行路由:
测试实例的安全组出站规则:(所有内容)
如果我更改表,生产实例的安全组将无法路由。同样,一切都被允许