[TOC]
1 背景
客户买了一批服务器,有些买了公网IP。而有些ECS没有购买公网IP,但是又想要上互联网怎么办?这个时候就需要借用iptables的路由转发功能,让没有公网IP的ECS经过有公网IP的ECS来出网。
这种需求,更加合理的转发应该是购买NAT网关。但是还真的有这样的场景。
2 解决方案
2.1 华为云
参考文档1:https://support.huaweicloud.com/usermanual-ecs/ecs_03_0705.html
参考文档2: https://blog.csdn.net/catoop/article/details/122291776
2.1.1 场景
假设存在两台服务器,分别是
- 无公网IP的ECS01:10.10.0.213
- 有公网IP的ECS02:10.10.0.214
这时候要执行的操作一共有两步,首先是在ECS02上打开路由转发功能并配置SNAT规则,然后在ECS01上增加对应的路由规则即可。
2.1.2 步骤
- 在ECS02上打开路由转发功能并配置SNAT规则
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
sysctl -p
iptables -t nat -I POSTROUTING -s 10.10.0.0/24 -j SNAT --to-source 10.10.0.214
- 在ECS01上配置路由规则
我这里的配置方法就比较暴力了,直接修改网卡的配置文件,把网关的地址修改为10.10.0.214,如下
IPADDR=10.10.0.213
PREFIX=24
GATEWAY=10.10.0.214
DNS1=223.5.5.5
- 华为云的话还需要额外进行一个操作,就是在ECS02上,关闭
源/目的检查
的功能,该功能在弹性网卡的菜单下。
参考文档上要求还需要配置VPC路由信息,但是我发现不配置也是可以直接访问互联网。
2.2 天翼云
操作方法同华为云
2.3 阿里云
操作方法类似华为云,不同的点有两个:
- 阿里云的弹性网卡没有
源/目的检查
的功能 -
阿里云上需要配置VPC路由也就是,在路由表上新增一条类似这样的路由条目: