我有一个带有两个子网(子网 A 和子网 B)的 VPC。
我的团队希望将多个 IP 分配给实例,每个 IP 来自一个子网。当我启动实例时,
该实例已经有一个私有 IP(来自主要实例),然后我通过控制台选项SubnetA
附加了另一个私有 IP 。 我可以在控制台的选项下看到这两个 IP 。 我重新启动了实例,我希望在重新启动时看到两个 IP ,但我只能看到主 IP。SubnetB
Attach network Interface
Managed IP Address
ifconfig
为了交叉检查私有 IP 是否确实连接到实例,我使用以下命令查询实例元数据:
curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:14:46:91:bc:34/local-ipv4s
curl -s http://169.254.169.254/latest/meta-data/network/interfaces/macs/02:1d:2a:75:ax:04/local-ipv4s
我可以分别在上述两个命令的输出中看到两个 IP。
我检查了 NETWORKMANAGER 的状态systemctl status NetworkManager
它已停止
我使用以下命令启动了服务并在启动时自动启用 NetworkManager:
systemctl start NetworkManager
systemctl enable NetworkManager
然后我检查了输出ifconfig
这次它向我显示了两个 MAC 地址,唯一的区别是第二个我看不到 IP 地址。所以基本上接口已经启动了,所以底层设备也找到了。没有与此接口关联的 IP 地址。
所以我尝试了两个关联IP的选项:
手动分配 IP 地址:
sudo ifconfig ens6 w.x.y.z
或者联系 DHCP 服务器(如果存在),并让它为接口提供 IP 地址:
sudo dhclient -v ens6
它们都有效,我可以看到 下的两个 IP inet
。
最后一个问题是我每次重新启动实例时都必须执行此操作。所以我尝试使用以下命令添加永久路由:
sudo /sbin/route add default gw 1xx.xx.2xx.193
这里的 IP 是来自 的第二个 IP SubnetB
,但我收到错误:
SIOCADDRT: Network is unreachable
为了解决上述问题,我所做的是,我已经有了一个包含
/etc/sysconfig/network-scripts/ifcfg-ens5
主要 IP 详细信息的文件,我又添加了一个
/etc/sysconfig/network-scripts/ifcfg-ens6
包含辅助 IP 必要详细信息的文件
这这是我提到的。
重新启动并且它正在工作。
但我无法 ping 通辅助 IP。我想我必须Gateway
从第二个子网再添加一个,但对此不确定。
还需要做什么才能使用辅助 IP 路由流量、ping、ssh。
请参考我的VPC子网CIDRS:
子网 A:1.7.2.128/26
子网 B:1.7.2.192/26
更新:
今天,当我启动服务器时,我能够从我的测试实例之一 ping 到辅助 IP (200),但无法 ping 到主 IP (136)。此外,也是ssh
使用主 IP 完成的。
答案1
ip route add default via 1XX.XX.XXX.X9X dev ens6 table 2000;
ip route add 1XX.7X.2XX.X9X dev ens6 table 2000;
ip rule add from 1XX.7X.2XX.1XX lookup 2000;
上面的命令帮助我解决了这个问题,并且我能够 ping 通我的辅助 IP。为了使此配置在重新启动后仍然存在,我已将相同的命令添加到rc.local
第一行中的IP是网关IP(子网范围中的第二个IP)命令中第二行和第三行中提到的IP是我的服务器的实际辅助IP。