모든 규칙으로 iptables 체인 삭제


31

다음과 같은 많은 규칙이 추가 된 체인이 있습니다.

> :i_XXXXX_i - [0:0]
> -A INPUT -s 282.202.203.83/32 -j i_XXXXX_i 
> -A INPUT -s 222.202.62.253/32 -j i_XXXXX_i 
> -A INPUT -s 222.202.60.62/32 -j i_XXXXX_i 
> -A INPUT -s 224.93.27.235/32 -j i_XXXXX_i 
> -A OUTPUT -d 282.202.203.83/32 -j i_XXXXX_i 
> -A OUTPUT -d 222.202.62.253/32 -j i_XXXXX_i 
> -A OUTPUT -d 222.202.60.62/32 -j i_XXXXX_i 
> -A OUTPUT -d 224.93.27.235/32 -j i_XXXXX_i

이 체인을 삭제하려고하면 :

iptables -X XXXX

그러나 (IPtables -F XXXXX 전에 시도)와 같은 오류가 발생했습니다.

iptables : 링크가 너무 많습니다.

한 번의 명령으로 체인을 삭제하는 쉬운 방법이 있습니까?


2
플러시하려고 할 때 iptables barf를 보지 못했습니다.
Tom O'Connor

그냥 궁금해서 ... 어떻게 "많은"많은 규칙인가?
Ladadadada

1
2 많은 것이 많습니다 :) 먼저 규칙을 삭제하려고하면 여러 번 입력하는 것이 좋습니다. iptables -D OUTPUT -d XXX / 32 -j i_XXXXX_i
timy

3
iptables-save | grep -v i_XXXXX_i | iptables-restore
Steven 월요일

@StevenMonday는 답변으로 쓰지 않는 것이 가장 유용한 방법입니다 (파일 및 파일 편집을 통해이 작업을 수행). 그것이 제거하지 않는 것은 완전한 테이블 ( "raw")입니다.
nhed

답변:


38

'-j CHAINTODELETE'가있는 규칙이 참조 할 때 체인을 삭제할 수 없습니다. 체인을 참조하는 것이 무엇인지 파악하고 제거하십시오. 또한 플러시 한 다음 죽입니다.

-F,-플러시 [체인]

선택한 체인을 플러시합니다 (제공되지 않은 경우 테이블의 모든 체인). 이는 모든 규칙을 하나씩 삭제하는 것과 같습니다.

-X, --delete-chain [체인]

지정된 선택적 사용자 정의 체인을 삭제하십시오. 체인에 대한 참조가 없어야합니다. 가있는 경우, 당신은 삭제해야하거나 참조하는 규칙을 대체 체인 삭제하기 전에. 체인은 비어 있어야합니다. 즉, 규칙이 포함되어 있지 않아야합니다. 인수가 제공되지 않으면 테이블에서 내장되지 않은 모든 체인을 삭제하려고 시도합니다.


나는 체인을 직접 삭제하는 방법을 찾고 싶습니다 (많은 '-j CHAINTODELETE'참조 규칙이 있음). 그러나 대답에서 불가능한 것 같습니다 :(
timy

1
@timy StevenMonday의 의견은 단일 패스가 체인에 대한 참조를 제거합니다. 아마도 이상적이지는 않지만 가까이 감히 dar습니다.
Jeff Ferland

12

이것은 잠재적으로 주제에 맞지 않지만이 게시물을 찾은 후 내가 한 일입니다! 일부 사용 사례의 경우 iptables -D 옵션이 유용 할 수 있습니다. -A를 사용하여 프로그래밍 방식으로 추가 된 참조 규칙을 지울 수 있기 때문에 (정확히 추가 한 방법을 알고있는 경우)

예 :

    iptables -N MYCHAIN
    iptables -A INPUT -i interface -j MYCHAIN
    iptables -A MYCHAIN -j ACCEPT

로 되돌릴 수 있습니다

   iptables -D INPUT -i interface -j MYCHAIN
   iptables --flush MYCHAIN
   iptables -X MYCHAIN

8

두 단계가 필요하지만 하나의 명령으로 수행됩니다.

파일을 작성하여 파일에 넣으십시오.

# Empty the entire filter table
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT

파일을 "모든 규칙 지우기"로 저장하십시오. 이제이 명령을 수행하십시오.

iptables-restore < clear-all-rules

이제 하나의 명령으로 언제든지 지울 수 있습니다.


1
+1 이것은 실제로 깨끗한 fw 구성으로 시작하는 가장 빠른 방법입니다.
dr01

6

대체 계획이 있습니다. 하나가 아니라 세 가지 명령이 관련되어 있지만 운이 좋으면 작동합니다.

iptables규칙 세트를 파일로 덤프하십시오 .

iptables-save > /tmp/iptables.txt

문제가되는 체인의 모든 사용 및 참조를 제거하십시오.

sed -i '/i_XXXXX_i/d' /tmp/iptables.txt

그런 다음 규칙 세트를 다시로드하십시오.

iptables-restore < /tmp/iptables.txt && rm /tmp/iptables.txt

0

이 줄을 따라 뭔가가 iptables를 어떤 식 으로든 쓰지 않고 한 줄로 모든 것을 얻을 수 있습니다.

for chain in `iptables -L |grep i_XXXXX_i|awk '{ print $2 }'`; do iptables -X $chain; done

0

iptables man 파일에는 옵션이 있습니다 -S

S, --list-rules [chain] 선택한 체인의 모든 규칙을 인쇄합니다. 체인을 선택하지 않으면 모든 체인이 iptables-save와 같이 인쇄됩니다. 다른 모든 iptables 명령과 마찬가지로 지정된 테이블에 적용됩니다 (필터가 기본값 임).

를 사용하여 iptables -S | grep <CHAINNAMEHERE>. 예를 들어:

root @ root : ~ # iptables -S | grep TRAFFICLOG

-N 교통

-전진 -i eth0 -j 교통 정보

그런 다음 테이블에서 체인 삭제를 차단하는 규칙을 확인할 수 있습니다. 옵션 iptables -N <CHAINNAMEHERE>을 사용하여 규칙을 삭제 하고 각 규칙 을 수행하십시오.-D

-D, --delete chain rulenum 선택한 체인에서 하나 이상의 규칙을 삭제합니다. 이 명령에는 두 가지 버전이 있습니다. 규칙은 체인의 숫자 (첫 번째 규칙의 경우 1부터 시작) 또는 일치하는 규칙으로 지정할 수 있습니다.

예를 들면 iptables -D FORWARD -i eth0 -j TRAFFICLOG. 체인에 대한 각 규칙을 삭제 한 후 -F옵션으로 체인을 세척하십시오 iptables -F <CHAINNAMEHERE>.

-F, --flush [chain] 선택한 체인을 플러시합니다 (제공되지 않은 경우 테이블의 모든 체인). 이는 모든 규칙을 하나씩 삭제하는 것과 같습니다.

그런 다음 -X옵션으로 체인을 삭제하십시오 .iptables -X <CHAINNAMEHERE>

-X, --delete-chain [chain] 지정된 선택적 사용자 정의 체인을 삭제합니다. 체인에 대한 참조가 없어야합니다. 체인이 삭제되기 전에 참조 규칙을 삭제하거나 교체해야합니다. 체인은 비어 있어야합니다. 즉, 규칙이 포함되어 있지 않아야합니다. 인수가 제공되지 않으면 테이블에서 내장되지 않은 모든 체인을 삭제하려고 시도합니다.

IPtables는 복잡한 도구 세트이므로 이상적인 자습서가 필요합니다. www.iptables.info 에서 시도해 볼 수 있습니다


0

체인을 뱉어 내고 삭제합니다

for i in $(iptables -S | awk '{print $2}' | uniq ); do iptables -F $i && iptables -Z $i && iptables -X $i  ; done

0

/etc/iptables/rules.v4에서 rules 파일을 편집하여 규칙과 체인을 제거 할 수 있음을 발견했습니다. 이 파일에서 원치 않는 체인을 삭제 한 다음 iptables를 다시로드하면 iptables -L을 수행 할 때 더 이상 체인이 표시되지 않습니다.


이 파일은 특정 Linux 배포판과 특정 버전 의 특정 Linux 배포판 에만 있습니다.
Michael Hampton
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.