iptables를 사용하여 네트워크의 특정 IP에서 내 컴퓨터로 전송된 패킷을 거부한다고 가정해 보겠습니다. 명령에서 패킷의 대상을 정의해야 합니까, 아니면 소스만 포함하면 충분합니까?
예를 들어, 126.184.25.25에서 작업 중이고 126.184.25.101의 모든 TCP 패킷을 거부하고 싶다고 가정하면 다음을 사용해야 합니다.
sudo iptables -t filter -A INPUT -p tcp -s 126.184.25.101 -d 126.184.25.25 -j REJECT
아니면 대상 주소를 제거하고 다음을 사용하는 것으로 충분합니까?
sudo iptables -t filter -A INPUT -p tcp -s 126.184.25.101 -j REJECT
내 네트워크에서 위의 두 방법을 모두 테스트할 때 전자는 작동하지 않는 것 같습니다. 둘 다 의미가 있는 것처럼 보이지만 전자가 왜 올바르지 않을 수 있는지 잘 모르겠습니다.
답변1
명령에서 패킷의 대상을 정의해야 합니까, 아니면 소스만 포함하면 충분합니까?
아니요, 그렇습니다. 설정을 생략하면 기본값이 적용됩니다. 프로토콜을 지정하지 않으면 기본적으로 모든 프로토콜이 차단되고, 테이블(-t)을 지정하지 않으면 기본적으로 필터링이 수행됩니다.
매뉴얼 페이지에서는 일반적으로 기본 설정(있는 경우)을 설명합니다.
답변2
소스 주소의 모든 TCP 패킷을 거부합니다.
sudo iptables -I 입력 -p tcp -s 126.184.25.101 -j 거부
대상을 지정할 필요가 없으며 일부 경우(예: 브로드캐스트 패킷)에는 작동하지 않습니다.
이는 맨 위에 이 규칙을 삽입하는 (-I)와 함께 INPUT 체인을 나타냅니다. (-s) 소스 주소에서 오는 트래픽의 경우, (-j) DROP 규칙으로의 대상 트래픽입니다.
DROP은 아마도 REJECT보다 더 나을 것입니다. 왜냐하면 거절은 응답을 다시 보내는 반면, drop은 응답 없이 패킷을 삭제하기 때문입니다.
또한 모든 프로토콜(tcp, udp, icmp 등)을 제거하려면 다음과 같이 "-p tcp"를 제거하십시오.
sudo iptables -I 입력 -s ipaddress -j 삭제
이는 DROP이 문제를 일으키고 REJECT가 더 나은 선택이 될 수 있는 네트워크 상황에 영향을 미칠 수 있습니다.
또한 이는 현재 운영 체제의 작동 수명을 초과하지 않습니다. 영구적인 것을 원한다면 더 많은 조사를 해야 합니다.