EIP 默认以 NAT 方式映射到 ECS 实例的私网 IP,操作系统内仅可见私网地址。在部分业务场景中,应用程序要求公网 IP 直接配置在网卡上,即 EIP 网卡可见。
网络协议要求:FTP 主动模式等协议需要在报文负载中携带本机公网 IP,携带私网 IP 会导致通信失败。
源地址校验:部分服务端要求发起请求的网卡 IP 与公网出口 IP 一致。
IPsec VPN:部分 VPN 软件需要直接绑定公网 IP 以建立隧道。
使用 VPC 附加网段,创建弹性网卡并为其配置与 EIP 一致的主私网 IP,操作系统内即可见公网 IP。且支持为同一网卡配置 IPv6 地址,实现单网卡 IPv4/IPv6 双栈。
工作原理
VPC 的附加网段功能支持添加任意 CIDR (包括公网 IP 段)作为用户网段,从而可实现:
将 EIP 所在的公网网段(如
118.XX.XX.0/24)添加为 VPC 附加网段。在附加网段下创建交换机和弹性网卡,配置弹性网卡的主私网 IP 与 EIP 地址一致。
将 EIP 以普通模式绑定到该弹性网卡,在操作系统内即可见公网地址。
在此基础上,为同一网卡分配 IPv6 地址并开通公网带宽,即可实现单网卡 IPv4 + IPv6 双栈通信。
适用范围
配置 IPv4 网卡可见
控制台
创建 EIP:登录EIP 控制台,单击创建弹性公网IP。具体配置可参考EIP选型指引。
付费模式:建议选择按量付费。
地域:与 ECS 实例所在地域保持一致。
其余配置可保持默认。
EIP 地址决定了后续配置的附加网段和交换机网段。
为 VPC 添加 IPv4 附加网段,并创建交换机和弹性网卡:
添加附加网段:
登录VPC 控制台,单击 ECS 实例所属专有网络 ID 进入详情页。
选择网段管理页签,单击添加附加IPv4网段。选择高级配置网段,并输入包含 EIP 地址的地址段。
例如, EIP 地址为
118.XX.XX.230,可设置为118.XX.XX.0/24。
前往创建交换机页面,在附加网段下创建交换机:
专有网络:选择 ECS 实例所属的 VPC。
IPv4网段:选择已添加的附加网段。
交换机的可用区:选择 ECS 实例所在的可用区。
交换机的IPv4网段:输入包含 EIP 地址的地址段。例如, EIP 地址为
118.XX.XX.230,可设置为118.XX.XX.128/25。
创建弹性网卡:
单击创建弹性网卡:
专有网络、交换机、安全组:选择 ECS 实例所属的 VPC 和安全组,以及附加网段下创建的交换机。
主私网 IP:输入 EIP 的 IP 地址(如
118.XX.XX.230)。
绑定资源
将 EIP 与弹性网卡绑定:前往EIP 控制台,单击目标 EIP 操作列的绑定资源。
实例类型:选择弹性网卡。
绑定模式:选择普通模式。
选择要绑定的实例:选择步骤3创建的弹性网卡。
将弹性网卡与 ECS 实例绑定:
前往ECS控制台 - 弹性网卡页面,单击目标实例操作列的绑定实例,选择目标 ECS。部分实例规格不支持热插拔,需要先停止 ECS 实例后再绑定弹性网卡。
确认弹性网卡生效:登录 ECS 实例,执行
ip addr show确认辅助弹性网卡 IP 与 EIP 一致。若弹性网卡未启动,需配置Linux操作系统识别网卡。
配置策略路由:ECS 的默认路由指向主网卡 eth0。为保证通过辅助弹性网卡 eth1 进入的请求能原路返回(即源进源出),需要配置策略路由。
临时配置(重启后失效):
ip route add default via <子网网关> dev eth1 table 1001 ip rule add from <主私网 IP> lookup 1001永久配置:配置开机时自动更新路由,使配置永久生效。
结果验证:登录 ECS 实例,执行
curl -4 --interface eth1 ifconfig.me,验证出口 IP 为主私网 IP。
API
调用AllocateEipAddress创建EIP。
调用AssociateVpcCidrBlock添加附加网段。
调用CreateVSwitch创建交换机。
调用CreateNetworkInterface创建弹性网卡。
调用AssociateEipAddress绑定EIP与弹性网卡。
调用AttachNetworkInterface为已有 ECS 实例绑定弹性网卡。
配置 IPv6 双栈
在配置 IPv4 网卡可见的基础上,为辅助弹性网卡分配 IPv6 地址,即可实现单网卡 IPv4/IPv6 双栈。
控制台
为 VPC 开启 IPv6:
目标 VPC 未开启 IPv6 时,单击目标 VPC IPv6网段列的开通IPv6,选择系统分配的 IPv6 地址段,并勾选自动开启专有网络内所有交换机IPv6功能;系统将自动创建IPv6网关并分配IPv6网段。
目标 VPC 及交换机已开启 IPv6 时,可跳过此步骤。
为弹性网卡分配 IPv6 地址:
前往ECS控制台 - 弹性网卡页面,单击目标弹性网卡操作列的管理弹性网卡 IP,添加 IPv6 地址。
配置操作系统识别 IPv6 地址:登录 ECS 实例,执行
sudo acs-plugin-manager --exec --plugin=ecs-utils-ipv6;完成后,执行ip -6 addr show dev eth1确认已正确识别。
开通 IPv6 公网带宽:IPv6 地址默认仅支持 VPC 内部通信,需要单独开通公网带宽才能访问公网。
登录IPv6 网关控制台。
单击目标 VPC 的 IPv6 网关,单击目标 IPv6 地址操作列的开通公网带宽,配置公网带宽。
结果验证:登录 ECS 实例,执行
curl -6 ifconfig.me,验证 IPv6 公网出口。
API
针对已创建的专有网络和交换机,调整ModifyVpcAttribute与ModifyVSwitchAttribute的
EnableIPv6参数开启/关闭IPv6。控制台逻辑不同的是,调用API为专有网络和交换机开启IPv6后,将不会自动创建IPv6网关,需调用CreateIpv6Gateway自行创建。
调用AssignIpv6Addresses为弹性网卡分配IPv6地址。
调用AllocateIpv6InternetBandwidth为IPv6地址购买公网带宽。
常见问题
问题 | 可能原因 | 解决方法 |
弹性网卡的主私网 IP 配置不合法 | 主私网 IP 未包含于交换机网段 | 重新创建交换机,确保交换机网段包含 EIP 地址。 |
弹性网卡绑定 ECS 时无法选择到目标 ECS | 可用区不一致 | 确认弹性网卡和 ECS 实例位于同一可用区。 |
弹性网卡绑定 ECS 时报错 | 实例规格不支持热插拔 | 先停止实例,完成绑定后再启动实例。 |
弹性网卡未启用 | 操作系统未识别新网卡 | |
ECS 实例无法访问公网 | 默认路由指向主网卡 | 调整路由优先级,确保优先使用辅助弹性网卡访问公网;或使用 |
存在非对称路由 | 配置策略路由确保源进源出。 | |
安全组未放行 | 检查安全组是否放通了相关访问来源的流量。 |