iptables -A와 -I 옵션의 차이점


20

DNS 서버에 대한 DNS 쿼리를 허용하도록 iptables를 구성하려고 (시간 동안) 노력했지만 방금 사용했던 규칙 추가 옵션으로 인해 iptables가 액세스를 계속 차단한다는 것을 알았습니다. 대부분의 포럼은 다음과 유사한 규칙을 제안합니다.

iptables -A INPUT -p udp -m udp --dport 53 -j ACCEPT

그러나 필자의 경우 규칙 insert이 작동 하도록 규칙을 유형 으로 변경 해야했습니다.

iptables -I INPUT -p udp -m udp --dport 53 -j ACCEPT

하나의 규칙을 추가하고 다른 규칙을 삽입하고 두 용어가 무엇을 의미하는지 알고 있지만 두 사람의 차이점과 언제 어떤 옵션을 사용해야하는지 설명해 줄 수 있습니까? 우분투의 iptables를 찾았지만 많은 정보를 보지 못했습니다.

답변:


24

iptables -A규칙 집합 끝에 규칙을 추가하는 반면, 규칙 집합 iptables -I의 특정 위치에 규칙을 삽입합니다.

iptables의 man 항목을 보면 다음과 같습니다.

-I, --chain [rulenum] 규칙 사양 삽입 지정된 규칙 번호로 선택한 체인에 하나 이상의 규칙을 삽입합니다. 따라서 규칙 번호가 1이면 해당 규칙이 체인 헤드에 삽입됩니다. 규칙 번호가 지정되지 않은 경우에도 기본값입니다.

그리고 여기 -I당신을 위해 일한 이유 -A가 있습니다. 규칙 번호를 제공하지 않으면 규칙이 첫 번째 위치에 삽입됩니다. 즉, iptables는 처음부터 끝까지 모든 규칙을 처리하고 첫 번째 일치 항목을 적용하고 중지하기 때문에 규칙 세트 어딘가에 규칙에 어딘가에 DNS 패킷을 금지하는 규칙이있을 수 있습니다 (일반적으로 UDP를 금지하는 규칙일까요?).
Btw, 그것은 또한 대부분의 패킷과 일치하는 규칙을 맨 위에 두어야하는 이유이기도합니다. 가장 많이 사용되는 규칙을 and에 배치하면 패킷이 각 규칙과 비교하여 많은 리소스를 소비 할 수 있습니다.

그리고 사용법 : -A끝에 규칙을 추가하거나 규칙의 위치가 중요하지 않은 경우 안전하게 사용할 수 있습니다. 특정 위치에서 규칙을 원하면 다음 -I과 같이 사용하십시오 . iptables -I INPUT 6 -p tcp -j DROP(입력 규칙 세트의 위치 6에서 호스트 자체로 주소 지정된 모든 tcp 패킷에 대한 DROP 문을 추가합니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.