FreeBSD의 방화벽 ipfw

FreeBSD의 방화벽 ipfw

FreeBSD의 IPFW 방화벽 기능에 대해 질문이 있습니다. 내 시나리오는 다음과 같습니다. 여기에 이미지 설명을 입력하세요.

이들 머신은 모두 FreeBSD를 실행하며 가상 머신입니다. 문제는 내가 한 가지를 이해하지 못한다는 것입니다. 방화벽 시스템의 IPFW에 규칙을 추가하여 시스템 2에서 시스템 1로의 ping을 차단하는 경우 차단이 양방향인 이유를 모르겠습니다. 내 말은, 나는 다음과 같은 규칙을 만들었다는 것입니다.

ipfw add 02000 deny icmp from 10.0.2.2 to 10.0.1.2

내가 아는 한, 방화벽은 10.0.2.2(그림 오른쪽 머신) 에서 10.0.1.2(그림 왼쪽 머신)까지 모든 ICMP 패킷을 차단하지만, 실제로는 머신 2가 머신 1을 ping할 수 없지만, 기계 1도 기계 2를 ping할 수 없습니다! 왜 그런 겁니까? IPFW의 규칙은 다음과 같습니다. 여기에 이미지 설명을 입력하세요.

핑 사진: 여기에 이미지 설명을 입력하세요. 여기에 이미지 설명을 입력하세요.

답변1

10.0.2.1에서 10.0.2.2로 ping을 하면 ping 응답(10.0.2.2에서 10.0.2.1로)도 icmp 패킷이므로 규칙과 일치하여 차단됩니다.

원하는 동작을 얻으려면 규칙을 다음과 같이 변경하세요.

ipfw add 02000 deny icmp from 10.0.2.2 to 10.0.1.2 icmptypes 8

그 중 타입 8은 "echo-rerequest"이고, 타입 0은 "echo-reply"이다.

또는 응답만 허용하고 다른 모든 ICMP 패킷을 계속 차단하려면 2000 이전에 규칙을 추가하세요. ipfw add 01999 allow icmp from 10.0.2.2 to 10.0.1.2 icmptypes 0 ipfw add 02000 deny icmp from 10.0.2.2 to 10.0.1.2

답변2

tcpdump예를 들어 다음을 사용하여 머신 2가 ICMP 패킷을 수신하고 응답하는지 확인할 수 있습니다 .

sudo tcpdump -i eth0 icmp

설명하는 경우에는 ping머신 2의 반환 패킷이 머신 1의 방화벽에 의해 차단되므로 성공하지 못합니다.

관련 정보