페일오버는 설정된 대로 정확히 작동했고, 그것이 문제였습니다. 기본 터널이 끊기자 라우터는 기본 라우트를 케이블 모뎀으로 옮겼고, 노트북은 계속 브라우징했으며, 아무도 전화하지 않았습니다. 이틀 뒤 누군가 재무 공유 폴더가 여섯 시간 동안 열린 인터넷 경로로 접근 가능했다는 것을 알아차렸습니다. 라우터의 VPN 페일오버 정책은 라우팅 요령이 아니라, 선호 경로가 사라졌을 때 트래픽이 무엇을 해야 하는지에 대한 결정이며, 그 결정은 경로가 사라지기 전에 존재해야 합니다.

탐지기를 고르기 전에 결과를 정하십시오

보통 세 가지 결과가 테이블 위에 있습니다: 영향을 받는 클라이언트를 백업 터널로 보내기, 일반 WAN을 쓰게 두기, 또는 완전히 차단하기. 어느 것이 어느 VLAN, SSID, 장치 등급에 적용되는지 적으십시오. 단일한 평면 “WAN으로 전환” 규칙이 위의 재무 폴더를 공용 경로로 보낸 원인입니다.

이 셋은 서로 바꿀 수 없습니다. WAN 폴백은 지원 데스크가 전화를 받게 유지하지만 내부 이름을 로컬 리졸버에 노출합니다. 백업 터널은 정책을 유지하지만 상대편이 받아들이지 않는 출구 주소에 도착할 수 있습니다. 차단은 급여 VLAN에는 옳고 터널을 한 번도 쓰지 않은 게스트 네트워크에는 틀립니다.

결과적합한 대상무엇이 깨지는가
백업 터널정책이 유지되어야 하고 원격 접근이 필요함새 출구 주소, 반환 라우트, 느린 키 갱신
일반 WAN게스트 또는 공용 전용 트래픽내부 이름, DNS 및 IPv6 노출
차단급여, 관리, VPN 전용 모든 것사용자는 모든 접근을 잃고 당신에게 전화한다

실제로 두려워하는 장애에 탐지기를 맞추십시오

핸드셰이크 상태, 인터페이스 상태, 사용 가능한 포워딩은 세 가지 다른 신호이며 사용자에게 중요한 것은 마지막 하나뿐입니다. WireGuard 피어가 최근 핸드셰이크를 보여 주는 동안 제공자의 업스트림이 패킷을 블랙홀로 버릴 수 있습니다. OpenVPN 클라이언트는 자신이 밀어 넣은 라우트가 더 이상 해석되지 않은 뒤에도 “연결됨” 상태에 머물 수 있습니다.

pfSense에서 실용적인 구성은 dpinger가 공급하는 게이트웨이 그룹이며, 모니터 주소를 검사하고 손실이나 지연이 임계값을 넘으면 게이트웨이를 다운으로 표시합니다. 그 모니터를 터널 너머의 무언가, 예를 들어 원격 LAN의 호스트나 그것을 통해 도달하는 공용 주소로 향하게 하십시오. 터널 자체의 피어 주소로 향하게 하면 이미 살아 있다고 아는 부분을 측정하는 셈입니다.

백업이 마지막 수단으로 남도록 그룹을 구성하십시오

평면 구성원 목록 대신 계층을 사용하십시오. 기본은 계층 1, 백업 터널은 계층 2, WAN은 계층 3에 정책이 허용하는 VLAN만. pfSense에서는 이것이 System > Routing > Gateway Groups 아래에 있으며, 두 게이트웨이를 추가하고 서로 다른 계층을 주고 Trigger Level을 member down plus packet loss로 설정하고 저장한 다음 그룹을 인터페이스 기본값으로 또는 필요한 방화벽 규칙의 Gateway 필드에 적용하십시오.

pfSense 2.5 이상의 OpenVPN 클라이언트 인스턴스에서는 인스턴스의 Default Gateway 설정이 터널이 시스템 기본 라우트를 대체하는지 결정합니다. 규칙 기반 정책 라우팅은 가정하는 라우트가 실제로 설치되어 있을 때만 기대대로 동작합니다. 변경 후 터널 상태 아이콘을 믿는 대신 Status > Gateways 을 확인하십시오.

두 가지 설정이 대부분의 플래핑을 일으킵니다. 하나는 제공자 자체의 재수렴보다 짧은 프로브 간격입니다. 다른 하나는 기본과 백업이 계층을 공유하는 그룹이라 둘 다 항상 자격을 유지합니다. 사용자가 당신 대신 전환을 느끼기 전에 손실과 지연 임계값으로 히스테리시스를 추가하십시오.

터널이 소유한 적 없는 경로를 닫으십시오

먼저 DNS 유출입니다. 리졸버는 WAN에서 계속 응답하고 그곳으로 전달하므로, 트래픽이 터널에 고정되어 있어도 이름은 ISP를 통해 계속 해석됩니다. 리졸버의 아웃바운드 인터페이스를 제한하고, 내부 리졸버를 클라이언트로 밀어 넣고, VPN 전용 VLAN의 나머지 모두에 대해 포트 53을 차단하십시오.

IPv6는 자체 결정이 필요합니다. 듀얼 스택 LAN은 터널을 잃어도 작동하는 전역 IPv6 기본 라우트를 유지할 수 있어, 브라우저는 IPv6를 선호하고 WAN으로 나가는데 IPv4는 완전히 갇힌 것처럼 보입니다. IPv6를 터널로 라우팅하거나 터널이 내려가 있는 동안 전역 프리픽스 광고를 중단하십시오. 절반의 정책은 작동하는 것처럼 보이기 때문에 아무것도 없는 것보다 나쁩니다.

다음은 반환 경로입니다. 백업 출구가 다른 소스 주소를 쓰면 상대편은 트래픽을 되돌려 보내는 방법을 알아야 하고, 옛 주소에 묶인 모든 상태는 이미 죽어 있습니다. 기본이 끊겼을 때 열려 있던 세션은 이전하지 않고, 시간이 만료될 때까지 멈춰 있으며 애플리케이션이 무엇을 할지 결정합니다.

끊김, 플래핑, 다시 들어오는 길을 테스트하십시오

무해한 트래픽이 흐르는 상태에서 기본을 뽑고, 네 가지를 읽으십시오: Status > Gateways 그룹 구성원 상태, pfctl -ss 옛 게이트웨이에 아직 고정된 상태, 출구 경로를 위한 클라이언트의 traceroute, 어느 서버가 응답했는지 보기 위한 리졸버 질의.

이제 플래핑시키십시오. 기본을 삼십 초 올리고 삼십 초 내리기를 두 번 하십시오. 트래픽이 모든 전환을 따라가면 임계값이 너무 빡빡하거나 계층이 잘못된 것입니다. 당신의 일정에 맞춰 고치십시오, 그렇지 않으면 제공자가 자기 일정에 맞춰 고칠 것입니다.

마지막으로 라우터를 여전히 관리할 수 있는지 확인하십시오. 콘솔 케이블, 관리 VLAN, 셀룰러 모뎀 같은 대역 외 경로를 유지하십시오. 당신을 잠그는 페일오버 테스트는 끝낼 수 없는 테스트이고, 도달할 수 없는 라우터는 스스로 돌아올 수 없습니다.

정책을 끝났다고 하기 전에 터미널을 열지 않고 네 가지 질문에 답할 수 있어야 합니다: 터널이 내려가 있는 동안 어느 VLAN이 WAN을 쓸 수 있는지, 탐지기가 무엇을 지켜보고 얼마나 기다리는지, 어떤 네임 서버와 IPv6 라우트가 경로와 함께 움직이는지, 백업도 실패하면 어떻게 다시 들어오는지. 어떤 답이 “기본값이 무엇이었든”이라면 정책은 아직 라우터의 것이지 당신의 것이 아닙니다.

관련 글