포트 80에서 nginx를 실행하고 포트 8080에서 Apache를 실행하고 있습니다.
nginx와 Apache에 대한 모든 트래픽을 비동기식으로 갖고 싶습니다. 즉, 한 서버의 성능이 다른 서버에 의존하지 않습니다. 그 이유는 nginx가 내 웹사이트를 제공하고 Apache가 트래픽을 분석하는 데 사용되기 때문입니다.
아래 질문에 언급된 해결 방법을 시도했습니다.
sudo iptables -A PREROUTING -t mangle -p tcp ! -s 127.0.0.1/32 --dport 80 -j TEE --gateway 127.0.0.1
그리고
sudo iptables -A POSTROUTING -t nat -p tcp -s 127.0.0.1/32 --dport 8080 -j SNAT --to 127.0.0.1:8080
솔루션에서는 NAT 테이블에서 DNAT 및 POSTROUTING을 사용한다고 언급하지만 이는 허용되지 않습니다. DNAT는 PREROUTING/OUTPUT에서만 허용됩니다.
우분투 11.04에서 iptables v1.4.10을 사용하고 있습니다.
답변1
나는 이것이 실제로 어떻게 작동하는지 이해하려고 노력하고 있습니다. 포트 미러링의 일반적인 용도는 네트워크 프로토콜에 적극적으로 참여하지 않고 특정 인터페이스를 통과하는 패킷을 모니터링하는 것입니다.
포트 80 및 8080에 TCP 패킷을 전달하는 애플리케이션에는 단일 소스 TCP 엔드포인트와 통신하는 두 개의 대상 TCP 엔드포인트가 필요합니다. 이는 실패로만 끝날 수 있습니다. SYN, ACK 및 기타 값이 80과 8080의 TCP 스택 간에 동기화되도록 준비할 수 있더라도 애플리케이션은 여전히 출력을 생성하므로 요청자는 두 배의 데이터를 받게 됩니다.
포트 미러링을 실제로 사용하려면 낮은 수준의 패킷 분석을 수행하는 응용 프로그램을 사용해야 합니다. 또는 nginx에서 제공하는 트래픽을 분석하기 위해 일종의 웹 access.log 분석을 수행해야 할 수도 있습니다.