說明:html
一、必需要有一臺機器具備外網IP的ECS。tcp
二、若是不想配置具備外網IP的ECS時,能夠購買NAT網關,但須要錢,貴。下面會說明NAT網關的配置。阿里雲
三、最後吐槽一下阿里雲VPC網關致使不能按照配置普通網關同樣配置(參考:http://www.javashuo.com/article/p-klavowym-hp.html),必須結合VPC配置0.0.0.0/0來進行下一跳,否則你在ECS怎麼設置都沒法成功。其實這個問題是因爲VPC自己最上層作了NAT,並經過route查看會發現253這個地址有VPC佔用,不管怎麼配置0.0.0.0的下一跳都會先轉到253這個地址。spa
下面是具體的配置:code
環境:htm
ECS1(沒外網IP):172.18.6.247blog
ECS2(有外網IP,實際上是VPC作了NAT):172.18.6.248ip
一、具備外網IP的ECS2配置網關:get
# 開啓轉發 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
二、在VPC增長0.0.0.0/0的下一跳爲ECS2實例table
那麼此時在登陸ECS1時,不用設置網關或者設置了網關均可以訪問外網。
三、若是要作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:端口
四、若是想要換成夠買NAT網關來實現時,上面的配置基本不用,直接在VPC上這樣配置便可實現上面SNAT和DNAT的所有功能。
參考: