在使用容器服务的过程中。出于业务的需要,用户需要创建VPC集群,但是又不希望每台ECS都绑定公网EIP,一方面是出于业务私密性的保护,另外一方面是出于节约成本的考虑。
基于以上场景,我们可以让集群内的机器,通过一台有EIP的机器来上网。在这个过程中主要使用到了SNAT相关的知识。先找一台同区域内的VPC机器,为该机器配置EIP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15# iptables添加SNAT转换 其中172.16.0.0/12是内网网段, --to-source是绑定了EIP的这台机器的内网IP
sysctl net.ipv4.ip_forward=1
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p
iptables -t nat -I POSTROUTING -s 172.16.0.0/12 -j SNAT --to-source $(ifconfig eth0 | grep inet | awk '{print $2}')
iptables-save
# 查看nat表
iptables -t nat -vnL POSTROUTING --line-number
# 删除nat表中postrouting的第一条规则
iptables -t nat -D POSTROUTING 1
# 清除规则
iptables -t nat -F POSTROUTING去VPC控制台,添加VPC路由器,其中的下一跳ECS是绑定了公网EIP的那台ECS