포트 80을 통과하는 트래픽을 검사하기 위해 2 개의 네트워크 카드로 구성된 Linux 상자가 있습니다. 한 카드는 인터넷으로 나가는 데 사용되고 다른 카드는 네트워킹 스위치에 연결됩니다. 요점은 디버깅 목적으로 해당 스위치에 연결된 장치의 모든 HTTP 및 HTTPS 트래픽을 검사 할 수 있다는 것입니다.
iptables에 대해 다음 규칙을 작성했습니다.
nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1337
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
192.168.2.1:1337에서 Charles ( http://www.charlesproxy.com/ )를 사용하여 녹음 하는 투명한 http 프록시가 있습니다.
포트 80에는 문제가 없지만 포트 1337을 가리키는 포트 443 (SSL)에 유사한 규칙을 추가하면 Charles를 통해 잘못된 메시지에 대한 오류가 발생합니다.
Charles ( http://www.charlesproxy.com/documentation/proxying/ssl-proxying/ ) 와 동일한 컴퓨터에서 SSL 프록시를 사용 했지만 어떤 이유로 투명하게 수행하지 못했습니다. 내가 봤던 일부 리소스는 불가능하다고 말합니다. 누군가가 이유를 설명 할 수 있다면 대답으로 기꺼이 받아들입니다.
참고로, 서브넷에 연결된 모든 클라이언트를 포함하여 설명 된 설정에 완전히 액세스 할 수 있으므로 Charles가 자체 서명 한 인증서를 수락 할 수 있습니다. 이론적으로 투명한 프록시가 수행하기 때문에 솔루션은 찰스에만 국한되지 않아도됩니다.
감사!
편집 : 조금 가지고 놀다가 특정 호스트에서 작동하도록 할 수있었습니다. 내 iptables를 다음과 같이 수정하면 (그리고 찰스에서 1338을 열어 리버스 프록시) :
nat
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.2.1:1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 1337
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j DNAT --to-destination 192.168.2.1:1338
-A PREROUTING -i eth1 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 1338
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE
응답을받을 수 있지만 대상 호스트가 없습니다. 리버스 프록시에서 1338의 모든 항목이 적중하려는 특정 호스트로 이동하도록 지정하면 핸드 쉐이크가 올바르게 수행되고 SSL 프록시를 켜서 통신을 검사 할 수 있습니다.
1338에서 모든 호스트가 해당 호스트로 이동한다고 가정하지 않기 때문에 설정이 이상적이지 않습니다. 대상 호스트가 제거되는 이유를 알고 있습니까?
다시 감사합니다