我正在尝试在 Amazon AWS 中配置 NAT。
因此我有两个具有私有IP的EC2:10.0.0.49和10.0.0.48。 (10.0.0.0/24网络)一个 VPC 中的节点。我可以从 10.0.0.48 ping 10.0.0.49。
弹性 IP52.88.240.171指向10.0.0.49。
据我所知,我无法将 Elastic IP 直接指向节点。因此,我尝试使用手动方式https://serverfault.com/a/568478/192282
在 10.0.0.49 上:
sudo sysctl -q -w net.ipv4.ip_forward=1 net.ipv4.conf.eth0.send_redirects=0
sudo iptables -t nat -A POSTROUTING -o eth0 -s 10.0.0.0/24 -j MASQUERADE
sudo iptables -L -n -v -x -t nat
Chain PREROUTING (policy ACCEPT 6 packets, 457 bytes)
pkts bytes target prot opt in out source destination
Chain INPUT (policy ACCEPT 6 packets, 457 bytes)
pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 32 packets, 2732 bytes)
pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
32 2732 MASQUERADE all -- * eth0 10.0.0.0/24 0.0.0.0/0
[root@ip-10-0-0-49 ~]#
在 10.0.0.48 上:
sudo route del default
sudo route add default gw 10.0.0.49
sudo route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.49 0.0.0.0 UG 0 0 0 eth0
10.0.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
169.254.169.254 0.0.0.0 255.255.255.255 UH 0 0 0 eth0
在 Amazon AWS 控制台的“安全组”中,为每个 EC2 启用所有入站和出站流量。
但我仍然无法在 10.0.0.48(无弹性 IP 的节点)上访问 Internet。也许我在 aws 控制台中遗漏了什么?可能出了什么问题?
更新。每个 EC2 主机的 resolv.conf:
[root@ip-10-0-0-49 ~]# cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search us-west-2.compute.internal
nameserver 10.0.0.2
[ec2-user@ip-10-0-0-48 ~]$ cat /etc/resolv.conf
; generated by /sbin/dhclient-script
search us-west-2.compute.internal
nameserver 10.0.0.2