TCP 포트를 양방향으로 로컬로 전달하는 방법을 알고 싶습니다. 즉, 포트 25에서 로컬 시스템을 떠나는 모든 패킷(물론 포트는 실제로 동적으로 할당됨)을 소스 포트 500(예: 500의 일부)으로 다시 작성해야 합니다. 내가 하고 있는 일을 어떻게 해야 할지 모르겠습니다) 그리고 포트 500에서 들어오는 모든 포트는 포트 25로 전달되어야 합니다(이 작업을 수행하는 방법을 알고 있습니다).
따라서 포트 25에서 수신 대기하는 데몬은 만족할 것이며 모든 대상은 데몬이 포트 500에서 수신 대기하고 있다고 생각할 것입니다. 내가 틀렸다면 정정해주세요.
답변1
포트 25를 포트 500으로 리디렉션한 후에는 포트 500을 포트 25로 다시 리디렉션할 필요가 없습니다. NAT는 연결과 함께 작동하며 반환 패킷을 처리합니다.
예를 들어 포트 23을 SSH가 수신하는 포트 22로 리디렉션해 보십시오.
iptables -t nat -A PREROUTING -p tcp --dport 23 -j REDIRECT --to-port 22
이제 포트 23을 통해 장치를 연결할 수 있습니다
ssh foo@mysshserver -p 23
귀하의 경우에는 이 규칙을 추가해야 합니다
iptables -t nat -A PREROUTING -p tcp --dport 500 -j REDIRECT --to-port 25
이제 모든 클라이언트는 포트 500을 통해 포트 25에서 수신 대기 중인 데몬에 연결할 수 있습니다.