我们公司在aws EC2实例中有一个github设置。当然,这将具有私有/公共IP。
我在不同的区域设置了两个ec2实例。
但是,当我尝试从一个实例连接到我们公司的github时,它将使用github实例的公共ip。在这种情况下,连接成功,我可以克隆并进行操作。
但是另一个将使用github实例的私有IP。在这种情况下,它无法连接到github实例。
BTW,第二个(失败的)从设置github实例的区域迁移到另一个区域。保存了AMI并在新区域中重新启动了它。
这是一个描述我的症状的例子。
我会假设:
172.31.xx.xx
,公共IP为52.78.xx.xx
实例A
$ ping git.blahblah.com
PING git.blahblah.com (172.31.xx.xx) 56(84) bytes of data.
实例B
$ ping git.blahblah.com
PING git.blahblah.com (52.78.xx.xx) 56(84) bytes of data.
是什么原因引起的?解决这个问题有什么提示吗?
我已经通过`$ cat /etc/resolv.conf
检查了DNS设置。实例A
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 172.30.0.2
search us-west-2.compute.internal
实例B
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 172.30.0.2
search us-west-2.compute.internal
instanceA和instanceB的安全组相同。 VPC ID,instanceA和instanceB的子网ID相同。
答案 0 :(得分:1)
我真笨。
原因是在实例A(从不同区域迁移)中,/etc/hosts
文件中有一些配置,这些配置迫使git.blahblah.com
引用它的私有IP。
$ cat /etc/hosts
127.0.0.1 localhost
172.31.xx.xx git.blahblah.com
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
我从172.31.xx.xx git.blahblah.com
文件中删除了hosts
行之后,它起作用了。
对不起我的愚蠢人。
答案 1 :(得分:0)
由于您的实例与github实例位于不同的区域,因此它们不在同一网络上,因此它们无法连接到私有IP地址。
如果您希望他们通过相同的ip地址连接在一起,则它们需要位于同一VPC中,并且要到达那里,它们必须位于同一区域(但不在同一可用区域中)
私有IPv4地址是无法通过以下地址访问的IP地址: 互联网。您可以使用专用IPv4地址进行之间的通信 同一网络(EC2-Classic或VPC)中的实例。