👉点击这里申请火山引擎VIP帐号,立即体验火山引擎产品>>>
本文为您展示如何自建SNAT服务器,实现多台服务器通过一台指定的云服务器访问公网。
背景信息
某企业自建一台SNAT服务器,使所有的未绑定公网IP的云服务器通过该云服务器访问公网。
说明
除了自建SNAT服务器外,您也可以使用公网NAT网关,公网NAT网关具有跨可用区容灾、可视化、便于管理等等优势,更多详情请参见 什么是公网NAT网关 。
前提条件
已创建一个VPC,并为其创建两个子网,每个子网中分别创建一台Linux系统的云服务器,VPC、子网和云服务器的信息与上图保持一致。
说明
请勿为ECS-A的主网卡开启源/目的地址检查,若开启,则其无法为ECS-B转发流量。更多详情请参考 配置源/目的地址检查 。
操作步骤
配置VPC路由
登录 路由表控制台 。
在顶部导航栏,选择目标地域和项目,本文示例“华北2(北京)”和“default”。
在路由表列表,单击目标系统路由表名称,进入路由表详情页面。
选择“路由条目 > 自定义路由”页签,单击“添加路由条目”按钮,弹出添加路由条目窗口。
添加目标网段为0.0.0.0/0,下一跳为ECS-A的自定义路由。
单击“确定”按钮,完成配置。
配置SNAT服务器
配置IP转发
远程登录云服务器ECS-A,详细请参见 登录实例 。
执行以下命令,打开配置文件sysctl.conf。
vi /etc/sysctl.conf
按i键进入编辑模式,新增以下内容,开启IP转发功能。
net.ipv4.ip_forward = 1
按esc键退出编辑模式,然后按:wq保存修改并退出。
执行以下命令,使配置生效。
sysctl -p /etc/sysctl.conf
配置SNAT规则
在ECS-A的命令行,执行以下命令,打开配置文件rc.local。
vi /etc/rc.local
按i键进入编辑模式,新增以下内容,配置SNAT规则。
iptables -t nat -A POSTROUTING -o <网卡接口> -s <SNAT规则的网段> -j SNAT --to <SNAT服务器的主私网IP>
文本示例:
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.2.0/24 -j SNAT --to 192.168.1.11
按esc键退出编辑模式,然后按:wq保存修改并退出。
执行以下命令,为rc.local文件授予执行权限。
chmod +x /etc/rc.local
执行reboot命令,重启云服务器。
执行以下命令,查看SNAT配置成功。
iptables -t nat --list
回显中包含SNAT相关信息,则表示SNAT配置成功,如下图所示。
验证
远程登录云服务器ECS-B,详细请参见 登录实例 。
执行以下命令,测试是否可以访问公网。
ping 8.8.8.8
回显如下图。表示ECS-B可以通过ECS-A部署的SNAT服务访问公网。
若配置后,网络仍不通,请检查您的安全组、网络ACL是否放通了对应流量。