모든 iptables 규칙에 대한 결정론적 전체 덤프를 어떻게 얻을 수 있나요?
Complete는 iptables의 모든 테이블을 나타냅니다.
결정론은 iptables를 수정하지 않고 명령이 여러 번 실행될 때 항상 동일한 결과를 출력해야 함을 의미합니다.
사용 사례: 방화벽 스크립트 리팩터링. 예를 들어, 명령과 같은 것을 여러 번 작성하는 대신 for 루프를 사용하십시오. 리팩토링 전후에 iptables-dump 명령을 실행하여 리팩토링으로 인해 실제 iptables 규칙이 변경되었는지 확인하세요.
~에 따르면답변통과자일스, 완전한 출력을 얻으려면 -v
사용해야 합니다.
iptables
filter
, 및 5개의 서로 다른 테이블을 제어nat
합니다 . 주어진 호출에서 옵션 인수에 의해 지정된 테이블 중 하나만 표시되거나 수정됩니다 (기본값은 ). 방화벽의 전체 상태를 보려면 각 테이블을 차례로 호출해야 합니다.mangle
raw
security
iptables
-t
filter
iptables
또한 규칙을 정확하게 표현하려면 options 를 전달해야 합니다
-v
. 그렇지 않으면 필터링 규칙의 인터페이스와 같은 일부 중요한 기준이 출력에서 생략됩니다(예: "모든 항목 허용" 규칙과 "루프백 인터페이스의 모든 항목 허용" 규칙은 구별하는 데에만 사용할 수 있음-v
).따라서 필요한 netfilter 규칙의 완전한 데모를 얻으려면
iptables -vL -t filter iptables -vL -t nat iptables -vL -t mangle iptables -vL -t raw iptables -vL -t security
또는
iptables-save
모든 테이블의 모든 규칙을 구문 분석 가능한 형식으로 표시하는 프로그램을 호출할 수 있습니다iptables-restore
. 이 형식은 사람이 읽을 수도 있습니다(iptables
테이블을 작성하는 명령에 대한 일련의 호출 과 매우 유사함 ).
그러나 사용하면 -v
패킷 및 바이트 카운터가 추가됩니다. 이로 인해 출력이 불확실해집니다.
두 세계의 장점을 모두 활용하는 방법은 무엇입니까? 모든 iptables 규칙에 대한 결정론적 전체 덤프를 어떻게 얻을 수 있나요?
답변1
이 iptables-save
명령의 출력은 매우 간단합니다. 다른 부분은 규칙 뒤의 대괄호 안에 있거나 주석에 있습니다.
# Generated by iptables-save v1.4.21 on Sun Jan 10 16:02:30 2016
: INPUT ACCEPT [38:2132]
그런 다음 이러한 엔터티를 취소하거나 삭제하는 연습이 되어 다음을 사용하여 다시 읽을 수 있는 완전히 결정적인 출력이 생성됩니다 iptables-restore
.
iptables-save | sed -e 's/\[[0-9:]*\]/[0,0]/' -e '/^#/d'
*filter
:INPUT ACCEPT [0,0]
....