오늘은 nftables추천하다예를 들어 동적 IP별 블랙리스트를 생성할 때 미터 대신 컬렉션을 사용합니다(예:매뉴얼 페이지v0.98:
set blackhole {
type ipv4_addr
flags dynamic
timeout 30m
}
set flood {
type ipv4_addr
flags dynamic
timeout 1m
}
ip saddr @blacklist drop
ct state new \
add @flood { ip saddr limit rate over 10/minute } \
add @blacklist { ip saddr } \
drop
여기서 명령문의 실행 흐름은 무엇입니까
add
? 두 번째는add
첫 번째에 지정된 IP당 제한에 도달한 경우에만 실행되는데, 그 이유는 무엇입니까? 첫 번째 항목이 실제로 어떤 작업을 수행하는지(즉, 아직 테이블에 항목이 없는지) 여부와 관련이 있습니까add
?add
아니면 지금까지 생성된 연결의 집합과 개수를 보고 어떤 역할을 하는 걸까요?항상 실행되나요
drop
? 아니면add
두 번째 것을 평가한 후? 왜?조회 테이블은 한도를 추적하는 데 어떻게 도움이 됩니까? 실제 컬렉션 내용을 보면 막바지 신규 연결 등의 수치가 전혀 보이지 않습니다. 타임스탬프를 저장하고 실제 계산을 커널에 위임합니까?
왜 홍수 제한 간격을 두 번 지정해야 합니까(set
timeout
및limit
문에서와 같이)? 서로 다른 두 값을 사용하는 것이 적합한 사용 사례가 있나요?이것Red Hat 7 문서IP별 연결 제한기의 예는 다음과 같습니다.
nft add rule ip filter input ip protocol tcp ct state new, untracked limit rate over 10/minute add @denylist { ip saddr }
환율이 이렇기 때문에 제 생각에는 정확하지 않은 것 같습니다.앞으로즉, add
분당 10개의 새로운 연결에 도달하면 IP를 테이블에 추가한다는 의미입니다.어느지적 재산권?
언어의 실제 의미에 대한 문서에 대한 포인터를 제공해 주셔서 감사합니다.