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