HTTP 트래픽을 다른 서버로 리디렉션

HTTP 트래픽을 다른 서버로 리디렉션

무선 플랫폼의 연구/역엔지니어링을 위한 테스트 환경을 설정하려고 합니다.

내가 조사 중인 하드웨어가 연결되는 네트워크를 브로드캐스팅하는 라우터 AP가 있고, 거기에서 AP는 분석을 위해 모든 트래픽을 서버로 리디렉션합니다.

트래픽 리디렉션을 위한 AP의 iptables nat 규칙은 다음과 같습니다.

iptables -t nat -A PREROUTING -p tcp --dport 80 -m conntrack --ctstate NEW -j DNAT --to x.x.x.x:8880
iptables -t nat -A PREROUTING -p tcp --dport 443 -m conntrack --ctstate NEW -j DNAT --to x.x.x.x:8443
iptables -t nat -A PREROUTING -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A POSTROUTING -t nat -j MASQUERADE

AP와 서버 모두 IP_FORWARD도 활성화되어 있습니다.

그리고 내 서버에는 sslsplit, mitmproxy 또는 트래픽을 가져와 분석할 수 있는 기타 소프트웨어가 있습니다.

문제는 이런 방식으로 트래픽을 리디렉션할 때 내 서버의 소프트웨어가 적절한 포트/도메인에 연결하지 않고 어떤 이유로든 계속 자체적으로 연결하려고 한다는 것입니다.

예를 들어 내 서버 IP가 1.1.1.1:8443인 경우; 내 AP에 연결된 하드웨어 192.168.0.100이 2.2.2.2:443으로 확인되는 웹 사이트에 액세스하면 iptables 규칙은 분석을 위해 2.2.2.2:443에서 1.1.1.1:8443으로 가는 모든 트래픽을 리디렉션합니다. 다 좋은데, 소프트웨어가 요청을 완료하거나 응답을 받기 위해 원격 http 서버에 연결을 전달하려고 하면 응답을 위해 트래픽을 2.2.2.2:443으로 전달하는 대신 1.1.1.1:8443으로 보냅니다. (일명 그 자체).

이것이 내 iptables 규칙의 결함인가요, 아니면 일종의 소프트웨어 문제인가요? 원격 처리 방식으로 사용될 때 소수의 소프트웨어에 대해 동일한 결과가 발생하므로 트래픽을 리디렉션하는 방법에 문제가 있다고 생각됩니다.

이와 같은 트래픽 리디렉션이 가능합니까, 아니면 다른 방법으로 수행해야 합니까?

설정은 클라이언트(192.168.0.100) -> AP -> 라우터 -> 인터넷 -> 데이터 처리 서버(1.1.1.1:8443) -> 인터넷 -> 웹 호스트(2.2.2.2:443) 입니다.

어떤 제안이라도 감사하겠습니다.

답변1

서버에서 2.2.2.2:443(원래 대상)으로의 트래픽이 AP를 통과합니까?

이 경우 변환이 적용되므로 서버에서 발생하는 트래픽이 DNAT 변환에서 제외되도록 DNAT 규칙을 변경하세요.

iptables -t nat -A PREROUTING -p tcp ! -s x.x.x.x --dport 80 -m conntrack --ctstate NEW -j DNAT --to x.x.x.x:8880

관련 정보