Help us improve the AWS re:Post Knowledge Center by sharing your feedback in a brief survey. Your input can influence how we create and update our content to better support your AWS journey.
如何使用 iptables 测试以 Amazon EC2 实例为目标的网关负载均衡器?
我想使用 iptables 来测试我的网关负载均衡器,它以 Amazon Elastic Compute Cloud (Amazon EC2) 实例为目标。该实例运行 Amazon Linux 2023。
简短描述
在运行 Amazon Linux 2023 的 Amazon EC2 实例上配置 iptables 规则,以测试网关负载均衡器在您的环境中的工作情况。Iptables 规则还可以帮助您确定防火墙的连接问题。如果网关负载均衡器成功地通过实例路由流量,则表明连接问题与防火墙有关。
仅使用 iptables 来测试您的网关负载均衡器。
解决方法
记下网关负载均衡器 IP 地址
要配置 iptables 规则中的变量,您需要网关负载均衡器的弹性网络接口的 IP 地址及其可用区。
要查找 IP 地址,请完成以下步骤:
- 打开 Amazon EC2 控制台。
- 在导航窗格中选择 Network Interfaces(网络接口)。
- 选择 Search(搜索),然后从下拉列表中选择 Description(描述)。
- 在 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 IP 和 EC2 实例的 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
- 语言
- 中文 (简体)
