iptables 구성 파일에서 INPUT, FORWARD, OUTPUT 체인의 숫자는 무엇을 의미합니까?


34

다음 구성 파일을 발견했습니다.

# Generated by iptables-save v1.3.1 on Sun Apr 23 06:19:53 2006
*filter
:INPUT ACCEPT [368:102354]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [92952:20764374]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -i eth0 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -m limit --limit 5/min -j LOG --log-prefix "iptables denied: " --log-level 7
-A INPUT -j DROP
COMMIT
# Completed on Sun Apr 23 06:19:53 2006 

사람이 무엇을 알고 있나요 [368:102354], [0:0]그리고 [92952:20764374]평균을?


1
0구성을 파일로 저장하려는 경우로 변경할 수 있습니다 . 물론 복원 할 때 값을 재설정한다는 점을 제외하고는 아프지 않습니다.
Totor

@Totor는 구성 파일에서 숫자를 완전히 제거하면 차이가 있습니까? 구성이 아닌 보고서 인 것처럼 들리므로 구성 파일에있는 이유는 무엇입니까?
barlop

답변:


34

두 값은 해당 패킷 수바이트 수 체인의 기본 정책이 지금까지 적용되었는지 (볼 이 다른 대답 자세한 내용을).

소스 코드 iptables-save.c자체 에 따르면

/* Dump out chain names first,
 * thereby preventing dependency conflicts */
for (chain = iptc_first_chain(h);
     chain;
     chain = iptc_next_chain(h)) {

    printf(":%s ", chain);
    if (iptc_builtin(chain, h)) {
        struct xt_counters count;
        printf("%s ", iptc_get_policy(chain, &count, h));
        printf("[%llu:%llu]\n", 
               (unsigned long long)count.pcnt, 
               (unsigned long long)count.bcnt);
    } else {
        printf("- [0:0]\n");
    }
}

그리고 구조 xt_counters는 다음과 같이 정의됩니다 include/linux/netfilter/x_tables.h.

struct xt_counters {
    __u64 pcnt, bcnt; /* Packet and byte counters */
};

또한 내장되지 않은 체인에는 [0:0]어쨌든 표시되어 있습니다 (코드의 단점입니다).


1
나는 프로젝트 소스 코드의 통찰력으로 당신의 답변을 좋아합니다. 대단히 감사합니다.
Bodo Hugo Barwich

9

두 숫자는 각각 기본 정책이 적용된 패킷 수와 바이트 수입니다 (체인에서 볼 수있는 총 패킷 / 바이트 수는 아님). 그것들은 체인에 대한 기본 정책과 함께 지정됩니다-더 나은 장소가 없기 때문에 논리적으로 거기에 속하기 때문입니다.

기본 정책은 종료 대상이있는 규칙이 일치하지 않을 때 패킷에서 수행되는 작업입니다. 종료 대상은 현재 최상위 체인에서 규칙의 추가 처리를 중지하는 대상입니다. 예를 들어 ACCEPT 또는 DROP과 같은 대상은 종료되지만 LOG는 종료되지 않습니다.

이 질문의 구성 예에서 INPUT 체인의 마지막 규칙은 모든 항목을 삭제하는 것이므로 기본 정책은 적용되지 않으며 카운터는 일반적으로 0으로 유지되어야합니다. 0이 아닌 값 (368 패킷, 102354 바이트)을 설명 할 수 있습니다. "전체 삭제"규칙이 체인에 추가되기 전에 발생한 트래픽으로 인해

기본 조치는 항상 호출 된 체인으로 돌아 가기 때문에 기본이 아닌 체인은 정의에 따라 기본 정책을 가질 수 없으므로 카운터 값은 항상 0입니다.


iptables-save (맨 페이지)의 문서에 이것을 추가하는 것을 고려할 수 있습니다. :-)
perror

나는 사용하여 내 iptables에의 규칙을 저장 iptables-save하고 내가 가지고 : :INPUT DROP [0:0]:OUTPUT ACCEPT [249529:173953830]. 따라서 구성 파일을 만든 사람은 그 숫자에주의를 기울이지 않았다고 생각합니다. 그러나 이제는 모든 것이 분명합니다.
Mikhail Morfikov
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.