使用AWS re:Post即您表示您同意 AWS re:Post 使用条款

如何使用 iptables 测试以 Amazon EC2 实例为目标的网关负载均衡器?

2 分钟阅读
0

我想使用 iptables 来测试我的网关负载均衡器,它以 Amazon Elastic Compute Cloud (Amazon EC2) 实例为目标。该实例运行 Amazon Linux 2023。

简短描述

在运行 Amazon Linux 2023 的 Amazon EC2 实例上配置 iptables 规则,以测试网关负载均衡器在您的环境中的工作情况。Iptables 规则还可以帮助您确定防火墙的连接问题。如果网关负载均衡器成功地通过实例路由流量,则表明连接问题与防火墙有关。

仅使用 iptables 来测试您的网关负载均衡器。

解决方法

记下网关负载均衡器 IP 地址

要配置 iptables 规则中的变量,您需要网关负载均衡器的弹性网络接口的 IP 地址及其可用区。

要查找 IP 地址,请完成以下步骤:

  1. 打开 Amazon EC2 控制台
  2. 在导航窗格中选择 Network Interfaces(网络接口)。
  3. 选择 Search(搜索),然后从下拉列表中选择 Description(描述)。
  4. Description =(描述 =)字段中,输入您的网关负载均衡器的名称,然后选择您的网关负载均衡器。

您会收到网关负载均衡器中每个已激活的子网的网络接口列表。每个网络接口都有一个 IP 地址和与之关联的可用区。

配置 iptables 规则

使用 SSH 来访问您将在网关负载均衡器后面用作目标或防火墙的 EC2 实例。在以下示例命令中,可用区 A 是源区,源区将流量发送到可用区 B 和 C。

为网关负载均衡器和 EC2 实例设置 IP 地址

输入网关负载均衡器和实例的 IP 地址:

export GWLB_IP_A=<GLWB ENI IP from Availability Zone A>  
export INSTANCE_IP=<EC2 instance's IP>

注意:可用区 A 中的 GLWB IPEC2 实例的 IP 替换为您的值。

(可选)为跨区流量配置其他表

如果您激活了跨区流量,请运行以下命令:

export GWLB_IP_B=<GLWB ENI IP from Availability Zone B>  
export GWLB_IP_C=<GLWB ENI IP from Availability Zone C>

注意:可用区 B 中的 GLWB ENI IP可用区 C 中的 GLWB ENI IP 替换为您的值。对于每个目标 EC2 实例上的每个可用区,您都必须为它们设置网关负载均衡器的网络接口的 iptables 规则。

设置 iptables

要安装和激活 iptables,请运行以下命令:

sudo sysctl -w net.ipv4.ip_forward=1  
sudo yum install -y iptables-services  
sudo systemctl enable iptables  
sudo systemctl start iptables

将每个内置链的默认策略设置为 ACCEPT

要设置默认策略,请运行以下命令:

sudo iptables -P INPUT ACCEPT  
sudo iptables -P FORWARD ACCEPT  
sudo iptables -P OUTPUT ACCEPT

刷新 NAT 和 mangle 表、链 (-F) 和删除设置

要刷新 NAT 和 mangle 表、链接和删除设置,请运行以下命令:

sudo iptables -t nat -F  
sudo iptables -t mangle -F  
sudo iptables -F  
sudo iptables -X

配置 NAT 表,将流量重新路由回网关负载均衡器

要重新路由流量,请运行以下命令:

sudo iptables -t nat -A PREROUTING -p udp -s $GWLB_IP_A -d $INSTANCE_IP -i enX0 -j DNAT --to-destination $GWLB_IP_A:6081  
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s $GWLB_IP_A -d $GWLB_IP_A -o enX0 -j MASQUERADE,/code>

(可选)添加 NAT 规则以管理跨区流量

要为跨区流量添加 NAT 规则,请运行以下命令:

sudo iptables -t nat -A PREROUTING -p udp -s $GWLB_IP_B -d $INSTANCE_IP -i enX0 -j DNAT --to-destination $GWLB_IP_B:6081  
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s $GWLB_IP_B -d $GWLB_IP_B -o enX0 -j MASQUERADE  

sudo iptables -t nat -A PREROUTING -p udp -s $GWLB_IP_C -d $INSTANCE_IP -i enX0 -j DNAT --to-destination $GWLB_IP_C:6081  
sudo iptables -t nat -A POSTROUTING -p udp --dport 6081 -s $GWLB_IP_C -d $GWLB_IP_C -o enX0 -j MASQUERADE

保存 iptables

要保存 iptables,请运行以下命令:

sudo service iptables save

检查状态

要验证所配置的 iptables 规则是否正确,请运行以下命令:

sudo service iptables status

进行网关负载均衡器运行状况检查

要检查网关负载均衡器的运行状况,请运行以下命令:

sudo su  
yum install -y httpd  
service httpd start  
chkconfig httpd on  
echo "Health check page" >>/var/www/html/index.html  
exit
AWS 官方
AWS 官方已更新 6 个月前