阿里云使用弹性公网IP,VPC集群可以正常访问公网

在使用容器服务的过程中。出于业务的需要,用户需要创建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

参考地址

setzero wechat