通过EIP和第三方防火墙实现公网访问流量清洗
应用场景
虚拟私有云支持用户自主配置和管理虚拟网络环境,您可以在VPC中使用安全组及网络ACL来进行网络访问控制,也可以使用第三方防火墙软件,对云上的业务进行灵活的安全控制。
本文将重点介绍如何通过第三方防火墙软件,对VPC与公网之间的互访流量进行过滤与清洗,帮助您构建安全、合规的网络边界,实现VPC与公网的安全互通。
方案架构
- 业务出网流量:Subnet-WEB子网内的业务流量通过自定义路由,全部引入ECS-FW(防火墙)进行安全清洗,经SNAT规则(源地址转换)完成地址转换后,最终通过ECS-FW绑定的EIP访问公网。
- 外网访问流量:外部公网请求通过ECS-FW绑定的EIP进入,并经ECS-FW(防火墙)清洗,由DNAT规则(目的地址转换)转发至Subnet-WEB子网内的业务ECS-WEB。
资源规划说明
本示例中需要创建虚拟私有云VPC、弹性云服务器ECS以及弹性公网IP,资源规划总体说明请参见表1。
以下资源规划详情仅为示例,供您参考,您需要根据实际业务情况规划资源。
|
资源 |
说明 |
|---|---|
|
虚拟私有云VPC |
本示例有1个VPC,VPC的资源规划详情如表2所示。 VPC-X有两个路由表,一个系统自带的默认路由表,一个用户创建的自定义路由表,其中防火墙子网Subnet-FW关联默认路由表,业务子网Subnet-WEB关联自定义路由表。 默认路由表控制Subnet-FW的入方向流量,自定义路由表控制Subnet-WEB的出方向流量。 |
|
弹性云服务器ECS |
本示例中共有2个ECS,ECS的资源规划详情如表3所示。 假如您的ECS位于不同的安全组,需要在安全组中添加规则放通对端安全组的网络。 |
|
弹性公网IP |
本示例有1个EIP,并且EIP需要绑定至部署防火墙的ECS-FW。 |
操作步骤
- 创建VPC及其子网。
具体方法请参见创建虚拟私有云和子网。
本示例中的VPC和子网资源规划详情请参见表2。
- 创建ECS。
具体方法请参见自定义购买ECS。
本示例中的ECS资源规划详情请参见表3。
- 配置ECS-FW的网卡,并安装第三方防火墙软件。
- 创建EIP,并为ECS-FW绑定EIP。
- 创建VPC-X内的自定义路由表,并将Subnet-WEB关联至自定义路由表。
- 在VPC-X内,创建自定义路由表。
具体方法请参见创建自定义路由表。
- 将子网Subnet-WEB的关联至创建的自定义路由表。
子网创建完成后,自动关联VPC默认路由表,因此当前子网Subnet-WEB关联的是VPC-X的默认路由表,需要更换为自定义路由表。
具体方法请参见更换子网关联的路由表。
- 在VPC-X内,创建自定义路由表。
- (可选)为云服务器配置虚拟IP。
此步骤为可选:您可以在VPC-X中创建主备服务器,并绑定同一虚拟IP,当主服务器发生故障无法对外提供服务时,动态将虚拟IP切换到备服务器,继续对外提供服务。如果部署第三方防火墙的弹性云服务器不需要主备,此步骤不需要执行。
- 在防火墙所在子网Subnet-FW内,创建虚拟IP。
具体方法请参见申请虚拟IP地址。
- 将虚拟IP绑定到部署防火墙的主备ECS上。
具体方法请参见虚拟IP绑定云服务器。
- 为虚拟IP绑定EIP。
具体方法请参见将虚拟IP绑定至实例或者EIP。
- 在防火墙所在子网Subnet-FW内,创建虚拟IP。
- 在自定义路由表中,添加路由。
具体方法请参见添加自定义路由。
路由规划说明如表4所示。
- 登录ECS-FW,配置SNAT和DNAT规则等。
在本示例中,由于未部署第三方防火墙,将通过配置iptables规则来模拟防火墙的SNAT与DNAT功能:基于SNAT规则,可实现ECS-WEB借助ECS-FW绑定的EIP访问公网;而基于DNAT规则,能通过ECS-FW将外部公网流量转发至ECS-WEB。
ECS有多种登录方法,具体请参见登录弹性云服务器。
- 打开ECS-FW的IP转发功能。
- 执行以下命令,切换root用户。
- 执行以下命令,查看IP转发功能是否已开启。
cat /proc/sys/net/ipv4/ip_forward
回显结果:1为开启,0为关闭。
- 回显为1,任务结束。
- 回显为0,继续执行以下操作。
- 执行以下配置,打开IP转发功能。
- 执行以下命令,打开“/etc/sysctl.conf”文件。
vim /etc/sysctl.conf
- 按i进入编辑模式。
- 修改或者添加以下内容。
net.ipv4.ip_forward = 1 # 开启IPv4转发 net.ipv6.conf.all.forwarding = 1 # 若需要支持IPv6,开启IPv6转发
- 按ESC退出,并输入:wq!保存配置。
- 执行以下命令,打开“/etc/sysctl.conf”文件。
- 执行以下命令,使修改生效。
以上配置为永久生效,重启后不会失效。
- 执行以下命令,清空NAT规则。
- 执行以下命令,配置DNAT规则。
iptables -t nat -A PREROUTING -d 192.168.1.100 -p icmp --icmp-type echo-request -j DNAT --to-destination 192.168.2.229
其中,192.168.1.100为Subnet-FW的私有IP地址,192.168.2.229为Subnet-WEB的私有IP地址。本命令仅为参考,请您根据实际情况配置。
- 执行以下命令,配置SNAT规则。
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -j SNAT --to-source 192.168.1.100
其中,192.168.2.0/24为子网Subnet-WEB的IPv4网段,192.168.1.100为Subnet-FW的私有IP地址。本命令仅为参考,请您根据实际情况配置。
- 执行以下命令,保存NAT规则配置。
systemctl restart iptables
以上NAT规则仅为本次验证的临时配置,重启ECS后会失效。
- 执行以下命令,查看NAT规则配置详情。
回显类似如下信息,表示NAT规则配置完成。
[root@ecs-fw ~]# iptables -t nat -L -n -v Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 DNAT icmp -- * * 0.0.0.0/0 192.168.1.100 icmptype 8 to:192.168.2.229 Chain INPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain OUTPUT (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt in out source destination 0 0 SNAT all -- * * 192.168.2.0/24 0.0.0.0/0 to:192.168.1.100
- 打开ECS-FW的IP转发功能。
- 登录ECS-WEB,验证ECS-WEB和公网通信情况。
ping 公网地址
命令示例:
ping support.huaweicloud.com
回显类似如下信息,表示ECS-WEB可以借助ECS-FW绑定的EIP和公网通信。PING support.huaweicloud.com.eo.dnse1.com (119.36.225.121) 56(84) bytes of data. 64 bytes from 119.36.225.121 (119.36.225.121): icmp_seq=1 ttl=47 time=16.5 ms 64 bytes from 119.36.225.121 (119.36.225.121): icmp_seq=2 ttl=47 time=16.5 ms 64 bytes from 119.36.225.121 (119.36.225.121): icmp_seq=3 ttl=47 time=16.4 ms ... --- support.huaweicloud.com.eo.dnse1.com ping statistics --- 3 packets transmitted, 3 received, 0% packet loss, time 2002ms rtt min/avg/max/mdev = 16.420/16.458/16.497/0.031 ms


