리디렉션을 위해 iptables 구성에 이 줄이 필요합니까?

리디렉션을 위해 iptables 구성에 이 줄이 필요합니까?

SNMP 트랩을 위해 포트 7162에서 수신 대기하는 애플리케이션이 있습니다. 트랩이 포트 162에 도착하므로 iptables에 다음 리디렉션이 있습니다.

-A PREROUTING -p udp -m udp --dport 162 -j REDIRECT --to-ports 7162

또한 포트 162로 들어오는 연결을 명시적으로 허용해야 합니까?

-A INPUT -p udp -m state --state NEW -m udp --dport 162 -j ACCEPT

때로는 첫 번째 줄에서만 작동하기도 하고 때로는 그렇지 않기 때문에 그 이유를 알아내려고 노력하고 있습니다.

답변1

첫 번째 규칙으로 충분합니다 - INPUT어떻게든 체인의 포트 7162에 대한 액세스를 제한하지 않는 한.

INPUT실제로 다음 다이어그램에 따르면 UDP 패킷은 대상 포트가 162로 설정된 체인을 통과해서는 안 됩니다 .https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

게다가 당신의 INPUT규칙은 너무 복잡해 보입니다. UDP는 상태 비저장 프로토콜이므로 넷필터 내부에서 어떤 형태의 상태를 처리하게 됩니다. UDP와 함께 사용될 때 해당 상태가 무엇을 의미하는지에 대한 적절한 문서도 찾지 못했습니다.

단서를 찾기 위해 프로그램을 사용하여 두 포트를 모두 모니터링해 보세요 tcpdump(참고:체인 에 패킷을 삭제하면 PREROUTINGtcpdump에서 해당 패킷을 볼 수 없습니다.포트 162에서 들어오는 패킷만 볼 수 있으며 루프백을 수신해도 리디렉션이 표시되지 않습니다.

편집하다:단일 시스템 내의 연결에 대한 규칙을 시도하고 있지 않습니까? PREROUTINGlocalhost 전용 연결에서는 통과되지 않습니다.

관련 정보