iptables를 사용하는 중간의 남자

iptables를 사용하는 중간의 남자

tcp를 통해 다른 하위 시스템과 통신하는 하위 시스템을 테스트하고 싶습니다. 나는 다음을 사용했습니다 :

"iptables -A OUTPUT -p tcp --dport "+port_number" -j DROP"

스크립트를 통해 테스트 중인 시스템에 내 데이터를 보낼 수 있도록 포트의 트래픽을 중지합니다. 이것은 정말 잘 작동했습니다.

그러나 이제 트래픽을 단순히 삭제하는 대신 내 스크립트로 전달하고 싶습니다. 그런 다음 테스트 중인 하위 시스템에 데이터를 전달하기 전에 스크립트의 데이터를 조작하고 싶습니다.

iptables를 사용하여 이 작업을 수행할 수 있나요? 더 나은 접근 방식이 있습니까?

답변1

다음을 시도해 볼 수 있습니다(포트로 들어오는 트래픽은 스크립트를 수신할 수 있는 로컬 호스트 1234로 리디렉션됩니다 ).4321

iptables -I INPUT -p tcp --dport 1234 -j ACCEPT
iptables -I INPUT -p tcp --dport 4321 -j ACCEPT
iptables -t nat -I PREROUTING -p tcp --dport 1234 -j REDIRECT --to-ports 4321

1234동일한 시스템에서도 포트에 액세스하려면 루프백 인터페이스에서 사용되지 않는 OUTPUT규칙 을 추가해야 합니다.PREROUTING

iptables -t nat -I OUTPUT -p tcp -o lo --dport 1234  -j REDIRECT --to-ports 4321

이제 서버에서 듣기를 시도해 볼 수 있습니다 nc -l 4321(여기서는 자신만의 스크립트를 사용할 수 있습니다). 클라이언트에서는 nc server_host_name_or_ip 1234서버가 리디렉션을 올바르게 수행하고 있는지 확인하기 위해 무엇이든 작성해 보십시오.

구성 을 저장하는 것을 잊지 마세요 iptables!

관련 정보