Amazon ELB 네트워크 로드 밸런서 뒤에 여러 웹 서버가 있습니다. 로드 밸런서는 클라이언트 패킷의 소스 IP 주소를 자체 소스 IP 주소로 바꿉니다.
예를 들어 IP가 있는 클라이언트가 203.0.113.1
내 로드 밸런서에 연결되어 있습니다. 로드 밸런서는 소스 IP를 사용하여 클라이언트 트래픽을 웹 서버로 전달합니다 172.16.1.1
. 이로 인해 클라이언트 IP를 선택적으로 차단하기가 어렵습니다.
Amazon Network Load Balancer에는 두 가지 솔루션이 있습니다.
- IP 예약은 로드 밸런서를 통해 IPv4 IP를 투명하게 예약하지만 IPv6 주소는 여전히 변환되므로 기본적으로 IPv6를 지원하지 않습니다.
172.16.1.1
TCP DATA
주소 지정 정보가 포함된 필드 앞에 헤더를 추가하는 프록시 프로토콜 V2를 로드 밸런서에서 활성화할 수 있습니다 . IPv4 및 IPv6을 지원하며 Apache 웹 서버에서 지원됩니다. IP 패킷의 소스 IP 주소는172.16.1.1
여전히실제 소스 IPv4/6 주소는 프록시 프로토콜 V2 헤더 내의 TCP 데이터 필드에 있습니다..
일반적으로 내 서버의 방화벽 로그는 오작동하는 주소를 차단하는 Fail2Ban에서 읽습니다. 내 문제는 다음과 같은 프록시 프로토콜 V2를 사용하여 캡슐화된 오작동하는 트래픽을 차단하는 방법을 모른다는 것입니다.IPTables는 프록시 프로토콜 V2 헤더를 직접 검사할 수 없는 것 같습니다., 그렇지 않으면 이 목적으로 Fail2Ban 및 IPtables를 사용합니다.
다음 해결 방법은 IP 주소를 Lambda 스크립트로 전송하여 내 VPC의 네트워크 ACL 또는 라우팅 테이블에서 IP를 차단하는 것입니다. 그러나 이로 인해 Network Load Balancer에 대한 트래픽이 차단되는 것처럼 보이기 때문에 초기 복잡성이 추가됩니다. 트래픽을 얻는 유일한 방법 .
Apache, IPTables 또는 기타 도구가 프록시 프로토콜 V2 헤더에 있는 IP 값을 기반으로 트래픽을 동적으로 차단하는 쉬운 방법이 있습니까?