IPTABLES 코드 문제

IPTABLES 코드 문제

iptables를 사용하여 모든 포트를 차단하고 있습니다. 하지만 www.google.com 핑을 허용하려면 다음 코드를 사용합니다.

filter -A INPUT -p tcp --dport 53 -j ACCEPT
filter -A OUTPUT -p tcp --sport 53  -j ACCEPT
filter -A INPUT -p udp --dport 53 -j ACCEPT
filter -A OUTPUT -p udp --sport 53 -j ACCEPT

이것은 잘 작동하지만 시작 시 필터를 사용하는 것이 올바른 방법이 아니기 때문에 저장하면 오류가 발생합니다. 그러나 필터라는 단어 없이 코드를 사용하면 www.google.com에 대한 ping이 작동하지 않습니다. PS /etc/sysconfig 아래의 iptables 파일에 직접 저장합니다.

편집: 글쎄, 필터가 전체 코드를 깨뜨리는 것 같고 iptables가 전체 규칙을 제거하고 있습니다. 문제는 DNS 포트를 열었음에도 불구하고 www.google.com을 핑할 수 없다는 것입니다.

답변1

ping유틸리티는ICMP(인터넷 메시지 제어 프로토콜), 아니요UDP(사용자 데이터그램 프로토콜)또는TCP(전송 제어 프로토콜). ping방화벽을 통해 나가는 요청을 허용하려면 다음과 같은 규칙을 추가하면 됩니다.

iptables -A OUTPUT -p icmp --icmp-type echo-request -j ALLOW

반환 트래픽을 허용하기 위해 다음과 같은 규칙을 추가할 수도 있습니다.

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

답변2

iptables 규칙의 순서가 중요합니다.첫 번째-j ACCEPT, -j DROP또는 와 일치하는 규칙이 -j REJECT패킷의 운명을 결정합니다. "모든 항목 삭제" 규칙 뒤에 새 규칙을 추가하면 일치하는 패킷이 해당 규칙에 도달하지 않으므로 아무런 효과가 없습니다.

답변3

좋습니다. 올바른 규칙은 다음과 같습니다. 포럼에서 얻은 문제가 해결되었습니다.

-A INPUT -p udp --sport 53 -j ACCEPT
-A INPUT -p udp --dport 53 -j ACCEPT
-A OUTPUT -p udp --sport 53 -j ACCEPT
-A OUTPUT -p udp --dport 53 -j ACCEPT

관련 정보