현재 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
REJECT
OUTPUT
말이 안 돼요 REJECT
.ICMP 패킷이를 위해서는 네트워크를 통과해야 합니다.
체인에 무엇이 있는지 확인하려면 새 규칙을 -j LOG
마지막 규칙(정책 앞에)으로 추가하세요 .DROP
OUTPUT