LAN 인터페이스에서 규칙을 비활성화해도 프레임은 여전히 사라지고, 결론은 pfSense가 자기 방화벽을 무시한다는 것입니다. 보통은 다른 소유자가 결정을 내린 경우로, 브리지 자체, 구성원 인터페이스, 또는 게스트 밖의 가상 스위치입니다. 각각 고유한 제어와 고유한 로그가 있습니다.

아래 세 경계는 설정을 바꾸기 전에 분리해 볼 가치가 있습니다, 하나를 비활성화해도 다른 하나를 보상할 수는 없기 때문입니다.

하나의 프레임, 세 명의 정책 소유자

TAP 클라이언트의 프레임은 터널 장치로 들어와 pfSense 브리지를 지나고, LAN 구성원으로 나간 뒤 무언가에 도달하기 전에 가상 스위치를 통과합니다. 게스트 내부에서는 필터링이 브리지에서 또는 구성원 인터페이스에서 일어날 수 있으며, 어느 쪽이 활성인지는 고정 속성이 아니라 구성 선택입니다. 게스트 외부에서는 하이퍼바이저가 해당 가상 어댑터가 자신의 것이 아닌 출발지 MAC으로 프레임을 보낼 수 있는지 결정합니다. 그 지점 중 어디서든 드롭은 클라이언트 입장에서 동일하게 보입니다.

조사하기 전에 의도한 경로를 적어 두세요: 터널 구성원, 브리지, LAN 구성원, 가상 스위치, 목적지입니다. 그다음 그 경로에서 어느 소유자가 프레임을 보았을지 물어보세요.

어느 pfSense 제어가 필터링하는가

pfSense는 이를 위해 두 개의 sysctl을 문서화하며, 하나는 브리지 구성원에서의 필터링, 다른 하나는 브리지 자체에서의 필터링을 위한 것이고, 둘 중 적어도 하나는 활성 상태로 남아 있어야 합니다. 브리지 수준 필터링은 브리지 구성원을 통해 들어오는 트래픽에 적용되므로 대칭이 아니라 방향상 인바운드입니다. 실제로 필터링하는 인터페이스의 규칙을 읽으세요, 필터링 역할이 없는 구성원에 설정한 규칙은 아무것도 하지 않습니다. 브리지 필터링 문서가 소유권을 설명합니다.

IP 주소가 없는 구성원 인터페이스에는 자체 주소나 서브넷 매크로가 없으므로, 그 매크로에 대해 작성한 규칙은 의도한 LAN이 아닌 다른 것을 설명할 수 있습니다. 편의 매크로 대신 의도적으로 할당된 네트워크 객체를 사용하세요.

프래그먼트는 프레임이 아니다

이더넷 프레임은 IP 패킷을 나르고, IP 패킷은 더 큰 데이터그램의 프래그먼트일 수 있으므로 두 단어는 서로 바꿔 쓸 수 없습니다. 터널 안쪽에는 내부 패킷이, 바깥쪽에는 외부 전송 패킷이 있으며, 실패는 둘 중 어디에도 속할 수 있습니다. 작은 ping은 그 스택을 지나는 한 경로만 시험하며 큰 전송에 대해 아무것도 증명하지 않습니다. 인접한 두 경계에서 실패한 교환을 비교하고 규칙을 탓하기 전에 드롭 이유를 읽으세요.

프래그먼트가 사라진다면 답은 범위를 좁힌 수정이나 패킷 크기 조사이지, 필터링을 전면 비활성화하는 결정이 아닙니다.

하이퍼바이저에는 자체적인 수용 결정이 있다

다른 머신을 위해 트래픽을 브리지하는 게스트는 출발지 MAC 주소가 자기 어댑터의 것이 아닌 프레임을 내보내며, 많은 가상 스위치는 포트 그룹이 허용하지 않으면 이를 스푸핑으로 봅니다. 그 전송을 허용하는 것과 어댑터가 모든 프레임을 수신하도록 허용하는 것은 별개의 제어이며, 둘 다 어디서나 활성화하는 것은 문제가 요구하는 것보다 훨씬 큰 변경입니다. 브리지가 수신해야 하고 송신해야 하는 프레임이 무엇인지 파악한 뒤, 그것을 소유한 경계에서 그 동작만 허용하세요. 원격으로 관리되는 브리지를 변경하기 전에 콘솔 접근을 유지하세요.

연결성을 복구하는 것은 시험의 절반이고, 나머지 절반은 차단된 채로 남아 있어야 할 흐름이 여전히 차단되어 있음을 확인하는 것입니다.

어느 소유자가 필터링했는지, 어느 제어가 바뀌었는지, 어떤 두 흐름을 검증했는지 기록하세요. 그 기록이 있으면 다음 사고가 pfSense가 자기 자신을 무시한다는 같은 추측으로 시작하지 않습니다.

관련 글