我正在尝试通过“NAT网关”为几个EC2实例configuration传出的Internet访问权限,以便feconfig curl ifconfig.co为所有实例及其连接的外部统计信息服务器返回相同的IP以显示相同的IP。
同时,这些实例仍然可以通过其公有IP访问(每个EC2实例都有自己的公共IP),可以访问ssh,提供Web内容,并且可以在私有IP上互相访问。
实例只有eth0接口,其上有10.0.1.0/24子网地址(www1)。 我无法看到与ifconfig公共ip的接口,但我想这是ec2实例的预期行为。 他们都在Elastic Load Balancer后面。
我创build了CIDR块= 10.0.3.0/24的第二个子网www2。
我创build了一个NAT网关,并为其分配了一个Elastic ip并select了子网www2。 NAT网关的私有IP正确显示为10.0.3.132。
我在EC2->networking接口中创build了一个networking接口,其中一个实例的子网select了10.0.3.0 +私有IP自动分配+安全组,与其他具有SSH TCP 22 0.0.0.0/0的入站相同规则和所有stream量0-65535 0.0.0.0/0出站stream量。
实例在获得了自动分配的正确ip = 10.0.3.31之后,确实获得了第二个eth1接口。 以下是该实例的ip route show:
ip route show default via 10.0.1.1 dev eth0 default via 10.0.3.1 dev eth1 metric 10001 10.0.1.0/24 dev eth0 proto kernel scope link src 10.0.1.69 10.0.3.0/24 dev eth1 proto kernel scope link src 10.0.3.31 169.254.169.254 dev eth0
这是ifconfig:
ifconfig eth0 Link encap:Ethernet HWaddr 0A:65:1C:28:80:7E inet addr:10.0.1.69 Bcast:10.0.1.255 Mask:255.255.255.0 inet6 addr: fe80::865:1cff:fe28:807e/64 Scope:Link inet6 addr: 2600:1f18:4328:e200:4f10:db4d:6a56:d900/64 Scope:Global UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1 RX packets:10978429 errors:0 dropped:0 overruns:0 frame:0 TX packets:8536463 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:26095196998 (24.3 GiB) TX bytes:2202490320 (2.0 GiB) eth1 Link encap:Ethernet HWaddr 0A:9D:28:92:38:0E inet addr:10.0.3.31 Bcast:10.0.3.255 Mask:255.255.255.0 inet6 addr: fe80::89d:28ff:fe92:380e/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:9001 Metric:1 RX packets:262217 errors:0 dropped:0 overruns:0 frame:0 TX packets:197708 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:237017161 (226.0 MiB) TX bytes:50706247 (48.3 MiB) lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:65536 Metric:1 RX packets:420172 errors:0 dropped:0 overruns:0 frame:0 TX packets:420172 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1 RX bytes:1399654528 (1.3 GiB) TX bytes:1399654528 (1.3 GiB)
之后,如果我去VPC仪表板 – >路由表 – >编辑路由为我的所有实例适当的路由表和设置“nat-06931899c65346b40”而不是igw-fd92cc9a为目的地0.0.0.0/0我断开连接在实例上托pipe的ssh会话和网站变得不可用。 我猜这是因为它现在在NAT后面。
顺便说一句,对我来说EC2->networking接口中的NAT网关的安全组是空的,但是当我尝试将其设置为与其他实例(或任何其他实例)相同的“更改安全组“我得到”您没有访问指定资源的权限。
所以我希望我的实例可以通过http和ssh的公共ips来访问,但是要用curl ifconfig.co报告相同的IP。
我们的目标不是在每个实例上手动编辑路由表,因为我们准备自动扩展和使用aws Web控制台提供的选项。
但即使我手动执行,我如何编辑路线来实现我的目标?
添加NAT网关之前的一般networkingscheme是:VPC Internet网关< – > ELB < – > ec2实例(公共IP可访问)。 来自实例的Web内容通过ELB提供,但是实例本身可以直接用于ssh。
提前致谢!
我没有办法做到这一点,而不改变你的路由表。
您需要两个路由表(RT1和RT2):
与Destination: 0.0.0.0/0, Target igw-fd92cc9a子网关联的RT1: Destination: 0.0.0.0/0, Target igw-fd92cc9a
与10.0.3.0/24子网关联的RT2: Destination: 0.0.0.0/0, Target nat-06931899c65346b4
更改实例的路由表,以通过10.0.3.1给出默认路由更低(更优选)的度量标准。