빈 VPN 테이블은 그 자체로 아무것도 차단하지 않는다
일치하는 경로가 없는 정책 테이블은 패킷을 버리지 않습니다. 조회는 계속 진행됩니다. 종단 작업을 추가한 다음 두 가지 실패 상태를 모두 테스트하세요.
정책 규칙은 표시된 패킷을 전용 테이블로 보내며, VPN 경로를 잃으면 차단될 것이라고 기대하기 쉽습니다. 그러나 메커니즘은 다른 일을 합니다. 테이블에 일치하는 경로가 없으면 조회는 다음 규칙으로 계속 진행됩니다 멈추는 대신, main 테이블에는 여전히 uplink용 일반 기본 경로가 남아 있습니다. 결과는 fail-closed처럼 보이지만 fail-open으로 동작하는 구성입니다.
무엇도 고장 나지 않았으며, 정책 라우팅은 그렇게 규정되어 있습니다.
테이블에 아무것도 없으면 조회는 계속된다
100: from all fwmark 0x36 lookup 42 110: from all fwmark 0x36 lookup default 32766: from all lookup main
그 규칙 집합에서는 표시된 조회가 테이블 42로 가고, 이후 규칙은 같은 표시를 default라는 이름의 테이블로 보냅니다. 테이블 42에 쓸 만한 기본 경로가 있는 동안에는 첫 조회가 경로를 제공합니다. 그 경로가 사라지고 테이블 42에서 다른 무엇도 일치하지 않으면, 조회는 버림이 되지 않고 처리는 다음 규칙으로 넘어가며, 그 규칙도 아무것도 찾지 못하면 main 테이블에 도달합니다. 그 순서 어디에서도 어느 규칙이 최종 답을 냈는지 보고하지 않으므로, 동작하는 연결은 동작하는 정책처럼 보입니다.
관례적으로 default라고 불리는 테이블 253은 평범한 라우팅 테이블이며 보통 비어 있습니다. 그 이름은 패킷을 버리라는 지시가 아니고, 테이블 내부의 기본 목적지 경로와 같은 것도 아닙니다.
종단 작업은 조회를 끝낸다
100: from all fwmark 0x36 lookup 42 110: from all fwmark 0x36 prohibit 32766: from all lookup main
빈 테이블 조회 대신 VPN 조회 뒤에 종단 규칙을 둘 수 있습니다. 같은 표시로, 테이블 42 규칙 뒤에 놓인 prohibit 작업은 그 테이블이 아무것도 내놓지 않을 때 조회를 끝내고, main 테이블에 또 한 번의 기회를 주는 대신 관리적 거부를 반환합니다. unreachable과 blackhole도 종단이며, 발신자에 대한 오류 동작이 다릅니다.
throw 유형의 경로는 다르며, 그 테이블 안에서는 아무것도 일치하지 않은 것처럼 동작하므로 이후 규칙이 여전히 자기 차례를 얻습니다. 그래서 throw는 의도적 폴백에는 유용하고 최종 차단으로는 틀렸습니다.
실제 표시와 인터페이스로 검증한다
ip -4 rule show ip -4 route show table 42 ip -4 route get 198.51.100.20 from 10.44.0.2 iif lan0 mark 0x36
다이어그램이 아니라 실제 규칙과 테이블을 살펴본 다음, 그 흐름이 실제로 가진 출발지, 표시, 입력 컨텍스트로 질의하십시오. 목적지를 향한 읽기 전용 조회에 출발지 주소, 인터페이스, 표시를 주면 패킷이 나가지 않고 커널이 고를 경로를 보고합니다. 질의에 표시를 준다고 방화벽이 실제 트래픽에 표시를 한다는 증거는 아니며, 표시 규칙에 대한 별도 확인입니다. 질의에서 결론을 내리기 전에 카운터나 로그로 값을 확인하십시오.
로컬에서 생성된 요청은 그 표시 경로가 전달되는 트래픽의 경로와 자주 다르기 때문에 자체 컨텍스트가 필요합니다. 애플리케이션이 실제로 사용할 출력 인터페이스로 확인하십시오.
두 가지 실패 상태, 하나가 아니다
한 실패 상태는 VPN 경로가 사라지고 트래픽이 uplink로 떨어지는 것입니다. 경로가 설치된 채 남아 있는 죽은 터널은 또 다른 상태로, 패킷은 떨어지는 대신 쓸 수 없는 경로로 계속 향하고, 증상은 눈에 보이는 직접 연결이 아니라 조용한 손실입니다. 둘 다 테스트하고, 시작, 재연결, 서비스 중지 동작도 테스트하십시오.
그런 규칙은 그것이 존재하고 패킷이 여전히 그것을 선택하는 표시를 지니는 동안에만 도움이 됩니다. 규칙을 삭제하는 종료 스크립트나 표시를 벗겨내는 경로는 열린 동작을 되살립니다. 그런 전환은 연습해 볼 가치가 있습니다.
정책은 IPv6에 별도로 적용하고, 승인된 엔드포인트 예외는 암묵적이 아니라 명시적으로 유지하십시오.