로컬에서 iptables를 사용하여 아웃바운드 트래픽을 포트 80으로 리디렉션하는 방법은 무엇입니까?

로컬에서 iptables를 사용하여 아웃바운드 트래픽을 포트 80으로 리디렉션하는 방법은 무엇입니까?

내 Ubuntu 컴퓨터에서 포트의 로컬 리디렉션을 사용하려고 합니다 iptables. 투명 프록시와 유사합니다. 내 시스템을 포트 80에 두고 원격 호스트와 포트로 리디렉션하려는 모든 것을 캡처하고 싶습니다.

이를 달성하기 위해 NAT 및 사전 라우팅 기능을 사용할 수 있습니까 iptables?

답변1

다음 iptables규칙을 시도해 보세요.

$ sudo iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination IP:80

위에서 말하는 내용은 다음과 같습니다.

  • NAT 테이블( )에 다음 규칙을 추가합니다 -t nat.
  • -A이 규칙은 아웃바운드 트래픽( )에 추가됩니다( ) OUTPUT.
  • 우리는 TCP 트래픽( )에만 관심이 있습니다 -p tcp.
  • 우리는 대상 포트 80()의 트래픽에만 관심이 있습니다 --dport 80.
  • 일치하면 DNAT( -j DNAT)로 점프합니다.
  • 이 트래픽을 다른 서버의 IP @ 포트 80( --to-destination IP:80)으로 라우팅합니다.

DNAT란 무엇인가요?

DNAT
    This target is only valid in the nat table, in the PREROUTING and OUTPUT 
    chains, and user-defined chains which are only called from those chains.
    It specifies that the destination address of the packet should be modified 
    (and all future packets in  this  connection will also be mangled), and
     rules should cease being examined.

인용하다

답변2

특정 대상 호스트에 대한 트래픽만 처리되도록 이를 더욱 구체적으로 만들 수 있습니다. 예를 들어 postfix 오류가 발생하고 대기열의 메시지를 이전 IP 주소로 보내려는 경우입니다.

iptables -t nat -A OUTPUT -p tcp -d {ONLY_TO_THIS_DESTINATION} --dport 25 -j DNAT --to-destination {NEW_IP}:25

답변3

이를 통해 포트를 모든 IP 주소로 변환할 수 있습니다. 여기서 가장 큰 차이점은 이 필드에 IP 주소가 없다는 것입니다 --to-destination.

iptables -t nat -A OUTPUT -p tcp --dport 80 -j DNAT --to-destination :80

관련 정보