操作场景
为保证安全和节省公网IP资源,通常只为特定的弹性云主机配置公网IP,可直接访问Internet,其他弹性云主机只配置私网IP,无法直接访问Internet。因此,当只配置了私网IP的弹性云主机需要访问Internet,执行软件升级、给系统打补丁或者其它需求时,可选择一台绑定了公网IP的弹性云主机作为代理弹性云主机,为其他无公网IP的云主机提供访问通道,正常访问Internet。
说明优先推荐您使用NAT(NAT Gateway)网关服务。NAT网关能够为VPC内的弹性云主机提供SNAT和DNAT功能,通过灵活简易的配置,即可轻松构建VPC的公网出入口。
前提条件
- 已拥有一台绑定了公网IP的弹性云主机作为代理弹性云主机。
- 代理弹性云主机和其他需要访问Internet的弹性云主机均处于同一网段,并且在同一安全组内。
Linux操作系统的代理主机
本节操作中,以代理弹性云主机的操作系统是CentOS 6.5为例。
-
登录管理控制台。
-
单击管理控制台左上角的,选择区域和项目。
-
选择“计算 > 弹性云主机”。
-
在弹性云主机列表中的右上角,输入代理云主机名称进行搜索。
-
单击代理弹性云主机的名称,查看详情。
-
在代理弹性云主机详情页面,选择“网卡”页签,并展开,将“源/目的检查”选项设置为“OFF”。
默认情况下,“源/目的检查”状态为“启用”,系统会检查弹性云主机发送的报文中源IP地址是否正确,否则不允许弹性云主机发送该报文。这有助于防止伪装报文攻击,提升安全性。但在该场景中,这种保护机制会导致报文的发送者无法接收到返回的报文。因此,需设置“源/目的检查”状态为禁用。 -
登录代理弹性云主机。
详细操作方法请参见Linux弹性云主机登录方式概述。 -
执行以下命令,检测代理弹性云主机是否可以正常连接Internet。
ping www.baidu.com
回显包含类似如下信息时,表示代理弹性云主机可正常连接Internet。
检测是否可以正常连接Internet
-
执行以下命令,查看代理弹性云主机的IP转发功能是否开启。
cat /proc/sys/net/ipv4/ip_forward
− 回显为“0”表示关闭,请执行10。
− 回显为“1”表示开启,请执行16。 -
执行以下命令,打开IP转发功能配置文件。
vi /etc/sysctl.conf
-
按“i”,进入编辑模式。
-
修改如下参数的值。
将参数“net.ipv4.ip_forward ”的值修改为“1”。
说明如果“sysctl.conf”文件中不存在参数“net.ipv4.ip_forward ”,执行以下命令进行添加:
echo net.ipv4.ip_forward=1 >> /etc/sysctl.conf
按“Esc”,输入:wq,按“Enter”。
保存设置并退出vi编辑器。执行以下命令,使配置文件修改生效。
sysctl -p /etc/sysctl.conf
执行以下命令,配置默认的iptables规则。
iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
注意执行iptables -P INPUT ACCEPT,表示设置默认的INPUT策略为接受,存在一定的安全风险。建议您通过设置合适的安全组规则限制入方向的访问。
执行以下命令,配置SNAT,使代理弹性云主机所在的网段内其他弹性云主机可通过代理弹性云主机访问Internet。
iptables -t nat -A POSTROUTING -o eth0 -s subnet/netmask-bits -j SNAT --to nat-instance-ip
假设代理弹性云主机所在的网段为192.168.125.0,子网掩码为24位,私网IP地址为192.168.125.4,则执行如下命令。
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.125.0/24 -j SNAT --to 192.168.125.4
执行以下命令,保存iptables的配置并设置开机自启动。
service iptables save chkconfig iptables on
执行以下命令,查看SNAT配置是否成功。
iptables -t nat --list
回显类似如下图所示时,表示SNAT配置成功。
SNAT配置成功
添加自定义路由。
a. 登录管理控制台。
b. 单击管理控制台左上角的,选择区域和项目。
c. 选择“网络 > 虚拟私有云”。
d. 选择需要添加路由表的虚拟私有云,在“路由表”页面,单击“添加路由信息”。
e. 根据界面提示,填写路由信息。目的地址:是目的网段,默认是0.0.0.0/0。
下一跳地址:是SNAT弹性云主机的私有IP地址。
您可以在弹性云主机页面,查看该弹性云主机的私有IP地址。如需删除添加的iptables规则,需执行以下命令:
iptables -t nat -D POSTROUTING -o eth0 -s subnet/netmask-bits -j SNAT --to nat-instance-ip
假设代理弹性云主机所在的网段为192.168.125.0,子网掩码为24位,私网IP地址为192.168.125.4,则执行如下命令。
iptables -t nat -D POSTROUTING -o eth0 -s 192.168.125.0/24 -j SNAT --to 192.168.125.4