ACCEPT
내 iptables 방화벽에 이상한 문제가 있습니다. 두 개의 연속된 동일한 규칙(첫 번째는 이고 두 번째는 ) 을 설정하면 DENY
들어오는 패킷이 거부되고 기록됩니다.
들어오는 패킷이 첫 번째 규칙에 의해 무시되고 두 번째 규칙에 의해 포착되는 것이 어떻게 가능합니까?
fwbuilder 보기는 다음과 같습니다.
덤프 는 다음과 같습니다 iptables
.
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
In_RULE_0 all -- 0.0.0.0/0 0.0.0.0/0 state NEW
In_RULE_1 all -- 0.0.0.0/0 0.0.0.0/0
Chain FORWARD (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
In_RULE_0 all -- 0.0.0.0/0 0.0.0.0/0 state NEW
In_RULE_1 all -- 0.0.0.0/0 0.0.0.0/0
Chain OUTPUT (policy DROP)
target prot opt source destination
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
Chain In_RULE_0 (2 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "FW RULE 0 -- ACCEPT "
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
Chain In_RULE_1 (2 references)
target prot opt source destination
LOG all -- 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "FW RULE 1 -- DENY "
DROP all -- 0.0.0.0/0 0.0.0.0/0
나는 또한 ACCEPT
규칙만으로 시도했지만 잡히지 않습니다.
내가 본 유일한 차이점은 DENY
규칙이 가 아니라는 것입니다 state NEW
. 그러나 이미 구성했고 제대로 작동하고 있는 수십 개의 방화벽에 대해서도 동일합니다.
답변1
다음 사항을 알아야 합니다. -I
iptables 옵션이 있는 규칙은 목록의 시작 부분에 규칙을 배치합니다. 옵션 이 있는 규칙은 -A
목록 끝에 규칙을 추가합니다.
귀하의 경우: (거의 동일한) iptables 규칙 모두에서 "-I"를 사용한 것 같습니다. 두 번째 규칙은 첫 번째 규칙보다 먼저 목록의 시작 부분에 삽입되므로 규칙 목록을 생성했습니다. 규칙은 다음과 같습니다.
match -s x.x.x.x action DROP
match -s x.x.x.x action ACCEPT
패킷이 두 규칙 모두와 일치하기 때문에 DROP
실제 작동 테이블(RAM에 있는) 순서의 첫 번째 규칙( )이 적용됩니다. 순서는 iptable 구성 파일의 순서와 관련이 없습니다.
순서를 바꾸면 결과가 달라집니다.
답변2
알았어 찾았어. 내 FW는 완벽하게 좋았지만 가상 호스트가 잘못 구성되었습니다. 오류는 없었지만 iptables는 허용되지 않았습니다. 허용했더니 FW가 작동하게 되었어요... 왜 iptables 수준에서 오류를 못찾는지 모르겠네요... 도움주신 모든 분들께 감사드립니다 :)
답변3
iptables 는 In_RULE_0
.state NEW
또한 INPUT 체인(서버로의 패킷)이 아닌 FORWARD 체인(서버를 통한 패킷)에도 설정됩니다.
어떻게 테스트하고 있나요? 서버의 특정 인터페이스를 ping하고 있습니까?
다음의 전체 출력을 게시할 수 있습니까?
iptables -vnL
INPUT 체인의 트래픽을 기록하려면 다음 규칙을 사용해 보십시오(서버 인터페이스에 대한 핑).
iptables -I INPUT 1 -j In_RULE_0