我在 Amazon EC2 服务器上运行 Ubuntu。我有一个公共 IP 地址 ( 52.38.20.76
)。
我无法将公网 IP 地址绑定到 UDP 端口:
udp listen 52.38.20.76:3478: Cannot assign requested address
因此,我尝试更改 ifconfig 以显示公共 IP 地址而不是私有 IP 地址。但是,我尝试过的网络更改没有起作用。
编辑/etc/network/interfaces.d/eth0.cfg
# The primary network interface
auto eth0
#iface eth0 inet dhcp
iface eth0 inet static
address 52.38.20.76
netmask 255.255.255.0
gateway 172.31.32.1
dns-nameservers 8.8.8.8 8.8.4.4
在Gateway中,我根据一个route -n
命令的结果:
目标网关 Genmask 标志 指标参考使用 Iface 0.0.0.0 172.31.32.1 0.0.0.0 UG 0 0 0 eth0 172.31.32.0 0.0.0.0 255.255.240.0 U 0 0 0 eth0
当前 ifconfig 设置:
eth0 链路封装:以太网 HWaddr 06:01:36:ee:0f:0d inet 地址:172.31.47.199 Bcast:172.31.47.255 掩码:255.255.240.0 inet6 地址:fe80::401:36ff:feee:f0d/64 范围:链接 上行广播运行多播 MTU:9001 度量:1 RX 数据包:8169768 错误:0 丢弃:0 超限:0 帧:0 TX 数据包:8126026 错误:0 丢弃:0 超限:0 载波:0 碰撞:0 txqueuelen:1000 RX字节:6143591550(6.1 GB)TX字节:6277418496(6.2 GB)
仅供参考,静态 IP 地址(52.38.20.76
)是使用 Amazon 的弹性 IP 地址完成的。
有人对如何更改并向接口添加公共 IP 地址有什么建议吗?
答案1
这不是 EC2 的工作方式。
全部EC2 实例位于 Amazon 的 NAT 基础设施后面。无法直接将 EIP 或其他公共 IP 分配给 EC2 实例。
答案2
您的 AWS 主机无法直接获知其公共 IP、EIP 或其他信息。AWS 会为您处理这些。这意味着您的应用程序无法区分连接到内部 IP 和外部 IP 的内容。
从您的应用程序角度来看,您将绑定到 0.0.0.0:3478,AWS 会将外部地址转换为您的内部地址。