如果这个问题不属于这个社区,请原谅我;我无法找到更合适的一个,StackOverflow在我需要的时候总能通过!
我正在尝试使用Amazon EC2设置堡垒主机。我希望从这个堡垒实例连接到我的任何实例的唯一方法是SSH。包含堡垒的公有子网使用CIDR块10.0.128.0/17,包含其他实例的子网使用CIDR块10.0.0.0/17。我有网络ACL和安全组规则,允许SSH从堡垒到另一个子网的出口,并允许SSH从堡垒进入另一个子网。一切都应该有效。不幸的是,我的堡垒是尝试使用他们的公共IP与其他实例进行通信,这当然不在10.0.0.0/17块中,因此流量被阻止。如何确保我的堡垒在与私有子网中的其他实例通信时使用私有IP地址?这似乎应该是VPC中本地流量的默认行为,但显然不是!
修改
我遗漏了一些关键信息。 "私人"给我带来麻烦的实际上是公开的;它是一个Wordpress网络服务器,具有公共IP 52.14.20.167
(请不要垃圾邮件lol)和自定义www
DNS名称。但是,虽然我希望我的堡垒能够使用该DNS名称连接到它,但我仍然希望所有SSH流量都是本地的,这样我的安全组和网络ACL可能会非常严格。根据{{3}}:
我们将公共DNS主机名解析为。的公共IPv4地址 实例网络外的实例,以及私有IPv4 实例网络中实例的地址。
但是,我认为此规则仅适用于AWS提供的(类似IP的)公有DNS名称。我的自定义 DNS始终解析为公共IP,而不是私有IP,如下面我的堡垒子网的流日志中所示。 10.0.128.6
是堡垒,52.14.20.167
是Web服务器。 Idk 190.
和14.
地址是什么。所以我更有教育意义的问题是,如何将自定义DNS名称解析为堡垒主机的私有IP和同一VPC中的第二个实例?
10.0.128.6 52.14.20.167 56008 22 6 7 420 1485465879 1485465996 REJECT OK
190.173.143.165 10.0.128.6 27754 22 6 1 40 1485466241 1485466296 REJECT OK
10.0.128.6 52.14.20.167 56012 22 6 7 420 1485466903 1485467016 REJECT OK
190.13.10.206 10.0.128.6 28583 22 6 1 40 1485467140 1485467197 REJECT OK
10.0.128.6 52.14.20.167 56014 22 6 7 420 1485467437 1485467557 REJECT OK
14.158.51.244 10.0.128.6 55532 22 6 1 44 1485467500 1485467557 REJECT OK
答案 0 :(得分:2)
在与OP来回回答一些问题后,我们确定问题的根本原因之一是使用自定义DNS名称。
用户将访问堡垒主机,并从那里将自定义 DNS名称解析为有关EC2实例的公共IP地址。这就是来自堡垒主机的流量未使用EC2实例的私有IP地址的原因。使用EC2实例的私有 IP地址的关键是从在 AWS中解析该实例的AWS分配的公有DNS主机名。正如OP文档中提到的那样,AWS分配的公共DNS主机名将从AWS的外部解析为公共IP地址,但将解析为私有 IP地址来自AWS的内部。因此,关键是让用户使用AWS分配的公共DNS主机名。
保持使用自定义DNS主机名和仍然从堡垒主机解析为EC2实例的私有IP地址的一种方法是使自定义DNS名称为{ {1}}记录(而不是CNAME
记录),它指向AWS分配的公有DNS名称。是的,这需要在出现新的/不同的EC2实例时更新该DNS记录,但无论如何都需要进行此类更新,以使A
记录指向新的公共IP地址。通过使用A
,事情应该按照需要运作。
希望这有帮助!