說明:
1、必須要有一台機器具有外網IP的ECS。
2、如果不想配置具有外網IP的ECS時,可以購買NAT網關,但需要錢,貴。下面會說明NAT網關的配置。
3、最后吐槽一下阿里雲VPC網關導致不能按照配置普通網關一樣配置(參考:https://www.cnblogs.com/EasonJim/p/10206728.html),必須結合VPC配置0.0.0.0/0來進行下一跳,不然你在ECS怎么設置都無法成功。其實這個問題是由於VPC本身最上層做了NAT,並通過route查看會發現253這個地址有VPC占用,無論怎么配置0.0.0.0的下一跳都會先轉到253這個地址。
下面是具體的配置:
環境:
ECS1(沒外網IP):172.18.6.247
ECS2(有外網IP,其實是VPC做了NAT):172.18.6.248
1、具有外網IP的ECS2配置網關:
# 開啟轉發 echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf # 生效 sysctl -p # 配置iptables做SNAT iptables -t nat -I POSTROUTING -s 172.18.6.0/24 -j SNAT --to-source 172.18.6.248
# 上述可以理解成:iptables -t nat -I POSTROUTING -s VPC的IP段 -j SNAT --to-source 有公網IP的ECS內網IP
2、在VPC增加0.0.0.0/0的下一跳為ECS2實例
那么此時在登錄ECS1時,不用設置網關或者設置了網關都可以訪問外網。
3、如果要做DNAT時,如下操作即可:
iptables -t nat -I PREROUTING -p tcp --dport 50022 -j DNAT --to 172.18.6.247:22
# 可以這樣理解: iptables -t nat -I PREROUTING -p tcp --dport 外網IP的ECS端口 -j DNAT --to 只有內網IP的ECS的IP:端口
4、如果想要換成夠買NAT網關來實現時,上面的配置基本不用,直接在VPC上這樣配置即可實現上面SNAT和DNAT的全部功能。
參考:
https://yq.aliyun.com/articles/607330