阿里雲CentOS 7無外網IP的ECS訪問外網(配置閘道器伺服器)
阿新 • • 發佈:2019-01-02
說明:
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這個地址。
4、吐槽一下第3點的缺點,如果從物理機房遷移到實體機房時,不清楚VPC的特定會踩很多坑,比如OpenVPN,由於預設優先轉到了VPC網路,此時會造成虛擬的OpenVPN網絡卡得不到轉發到子網地址,此時解決的方法只能是有子網ping一下這臺ECS的OpenVPN服務端,讓其先識別才可以轉發到子網。
下面是具體的配置:
環境:
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