iptables OUTPUT 체인에서 REJECT 정책을 사용할 수 없는 이유는 무엇입니까?

iptables OUTPUT 체인에서 REJECT 정책을 사용할 수 없는 이유는 무엇입니까?

현재 OUTPUT 체인이 DROP으로 설정되어 있습니다. 액세스하려는 서비스에 문제가 있는 것이 아니라(시간 초과가 아닌 즉시 거부) 방화벽이 나를 차단하고 있다는 것을 알 수 있도록 REJECT로 변경하고 싶습니다. 그러나 iptables는 이에 대해 신경 쓰지 않는 것 같습니다. 저장된 규칙 파일을 수동으로 편집하고 복원하려고 하면 iptables-restore v1.4.15: Can't set policy 'REJECT' on 'OUTPUT' line 22: Bad policy name규칙 로드가 거부됩니다. 수동으로 설정하려고 하면( iptables -P OUTPUT REJECT) iptables: Bad policy name. Run 'dmesg' for more information.dmesg에 출력이 표시되지 않습니다.

적절한 규칙이 커널에 컴파일되었는지 확인하고 재부팅하여 로드되었는지 확인했습니다.

# CONFIG_IP_NF_MATCH_TTL is not set
CONFIG_IP_NF_FILTER=y
***
CONFIG_IP_NF_TARGET_REJECT=y
***
CONFIG_IP_NF_TARGET_LOG=y
CONFIG_IP_NF_TARGET_ULOG=y

(해당 규칙을 강조하려면 별표를 추가하세요)

내가 찾을 수 있는 모든 것은 REJECT가 유효한 전략/목표(일반적으로)라고 말하지만 INPUT, FORWARD 또는 OUTPUT 체인에 유효하지 않다는 것을 찾을 수 없습니다. 내 Google-fu가 도움이 되지 않았습니다. 저는 Gentoo를 사용하고 있습니다. 차이가 있다면요. 여기 통찰력 있는 사람 있나요?

답변1

REJECT목표 연장, 체인 정책은 다음과 같아야 합니다.표적. 매뉴얼 페이지에는 그렇게 나와 있지만(비록 명확하지는 않지만) 일부는 명백히 잘못된 것입니다.

전략은 온체인에서만 가능 ACCEPT하거나 DROP내장될 수 있습니다. 이전 규칙과 일치하지 않는 모든 패킷을 거부하는 효과를 원할 경우 마지막 규칙이 모든 항목과 일치하는지 확인하고 REJECT대상 확장이 포함된 규칙을 추가하면 됩니다. 즉, 해당 규칙을 모두 추가한 후 을 실행합니다 iptables -t filter -A OUTPUT -j REJECT.

보다주제 “가능한 체인 정책은 무엇입니까?”자세한 내용은 넷필터 목록을 참조하세요.

답변2

기록은 못찾았지만 참고해주세요여기허용되는 유일한 정책은 ACCEPT 또는 DROP임을 나타냅니다. 이는 다음을 보면 확인할 수 있다.원천of libiptc(규칙 조작 담당)은 2429행 부근에 있으며, 여기서 코드는 다음과 같습니다.

2429         if (strcmp(policy, LABEL_ACCEPT) == 0)
2430                 c->verdict = -NF_ACCEPT - 1;
2431         else if (strcmp(policy, LABEL_DROP) == 0)
2432                 c->verdict = -NF_DROP - 1;
2433         else {
2434                 errno = EINVAL;
2435                 return 0;
2436         }

원래의철사가장 좋은 방법은 체인 끝에 REJECT를 추가하는 것입니다 iptables -A OUTPUT -j REJECT.

이 이전의 코드는 다음과 같습니다.

2423         if (!iptcc_is_builtin(c)) {
2424                 DEBUGP("cannot set policy of userdefinedchain `%s'\n", chain);
2425                 errno = ENOENT;
2426                 return 0;
2427         }
2428 

따라서 사용자 정의 체인에 대한 정책을 전혀 설정할 수 없습니다.

답변3

REJECTOUTPUT말이 안 돼요 REJECT.ICMP 패킷이를 위해서는 네트워크를 통과해야 합니다.

체인에 무엇이 있는지 확인하려면 새 규칙을 -j LOG마지막 규칙(정책 앞에)으로 추가하세요 .DROPOUTPUT

관련 정보