gpt4 book ai didi

amazon-web-services - 如何在同一子网上使用第二个弹性网络接口(interface)

转载 作者:行者123 更新时间:2023-12-05 00:54:49 25 4
gpt4 key购买 nike

当我在可用区 us-east-1a 中启动 Amazon EC2 CentOS 7 服务器时,会自动为服务器分配 eth0 上的主要私有(private) IP 地址,例如 172.31.8.244/20 和网关 172.31.0.1。如果我在 eth1 上附加第二个接口(interface),我可以指定地址,该地址需要在 172.31.0.0/20 子网内(或者将在该子网内自动分配给我)。 Eth1 将具有与 eth0 相同的网关。假设我被分配了 172.31.12.121/20。我在 eth0 和 eth1 上使用相同的安全组,它只允许 SSH 进出所有内容。

问题是当我尝试从不同的服务器通过 SSH 连接到 eth0 时,它工作正常。但是当我尝试通过 SSH 连接到 eth1 时,我遇到了超时。 ip addrip route显示两个接口(interface)都已启动并具有正确的路由。我什至可以在本地通过 SSH 连接到 eth1,并且/var/log/secure 日志显示正确的条目,就像我通过 SSH 连接到绑定(bind)到 eth1 的 eth0 时一样。我需要做什么才能从不同的服务器通过 SSH 连接到任一接口(interface)?

最佳答案

问题是非对称路由。对 eth1 的请求进入 eth1 并从 eth0 发出。来自 eth0 的回复与请求中的 IP 地址不同,因此它在客户端被丢弃。解决方案是设置允许响应通过 eth1 路由的规则。

首先,确保您已创建服务器的 AMI,因为如果您在以下步骤中输入错误的内容,您可能会失去与服务器的所有连接,并且无法执行任何操作,只能从 Amazon 控制台网页重新启动它。

首先在单独的表中为每个接口(interface)设置默认路由:

ip route add default via 172.31.0.1 dev eth0 tab 1
ip route add default via 172.31.0.1 dev eth1 tab 2

要检查这些是否正确添加,请使用:
ip route show table 1
ip route show table 2

现在您需要添加规则,根据源 IP 地址使用不同的表:
ip rule add from 172.31.8.244/32 tab 1
ip rule add from 172.31.12.121/32 tab 2

您可以通过以下方式检查所有规则:
ip rule

您现在应该能够从客户端计算机连接到任一 IP 地址。您也可以使用 bind SSH 选项,用于从该服务器上的任一接口(interface)连接到客户端计算机:
ssh centos@client_ip_address -i mykey.pem  (uses the default, eth0)
ssh -b 172.31.12.121 centos@client_ip_address -i mykey.pem (uses eth1)
ssh -b 172.31.8.244 centos@client_ip_address -i mykey.pem (uses eth0)

您可以使用这两个接口(interface)连接到同一可用区中的其他 EC2 服务器,并且对于分配有公共(public) IP 的任何接口(interface),您可以连接到外部世界或同一 VPC 中的其他 EC2 服务器,即使它们是在不同的可用区。

但是,如果您想连接到位于同一 VPC 但不同可用区的其他 EC2 服务器怎么办?换句话说,同一个数据中心的服务器。问题是私有(private) IP 地址被屏蔽为 20 位,这将您限制在一个可用区。所以对于数据中心 us-east-1 你有:
us-east-1a:  172.31.0.0/20
us-east-1b: 172.31.16.0/20
us-east-1d: 172.31.48.0/20
us-east-1e: 172.31.32.0/20

要在一个 VPC 和一个数据中心中跨可用区进行连接,您需要一个 16 位掩码。 ip addr将会呈现:
inet 172.31.12.121/20 brd 172.31.31.255 scope dynamic eth1

如果 losf -n | egrep 172.31.12.121显示此地址未使用,您可以添加新掩码并删除旧掩码。请注意,广播地址必须在掩码更改的同时更改:
ip addr add 172.31.12.121/16 dev eth1 brd 172.31.255.255
ip addr del 172.31.12.121/20 dev eth1

现在,您应该能够从可用区 A 中的 EC2 服务器连接到可用区 B 中的另一台主机,只要它们位于同一 VPC 中,即使它们没有公共(public) IP 地址。

疑难解答:

如果您遇到问题,请尝试重置两个界面,这将删除您所做的任何手动操作。第一份 /etc/sysconfig/network-scripts/ifcfg-eth0/etc/sysconfig/network-scripts/ifcfg-eth1 ,编辑第二个文件以更改 DEVICE来自 eth0eth1 .然后在 /etc/sysconfig/network 中添加一行上面写着 GATEWAYDEV=eth0 .最后,运行 /etc/init.d/network restart (不,它不应该断开您的连接)。然后用上面的命令重新开始。

关于amazon-web-services - 如何在同一子网上使用第二个弹性网络接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39298905/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com