XFRM 기본 경로가 IKE와 ESP를 삼켰다: 외부 경로를 유지하라
모든 것을 보호하는 정책은 터널을 유지하는 패킷까지 붙잡을 수 있습니다. IKE와 ESP를 표시하거나 피어 경로를 남기십시오.
트래픽은 보호되고 터널은 살아 있지만, 다음 키 갱신에서 죽는다. XFRM 인터페이스를 지나는 기본 경로는 보호하려던 트래픽을 설명했다. 그 경로는 보호를 계속하는 데 필요한 패킷까지 삼켰다.
관련된 두 목적지는 서로 바꿀 수 없다. 라우팅이 이를 명시해야 한다.
피어 조회가 실제로 어디로 가는가
활성 규칙, XFRM 경로가 있는 테이블, 피어의 공인 주소를 기록한다. 그다음 외부 연결이 실제 출발지와 마크로 어떤 경로를 탈지 본다. 일반 목적지는 그 제어 경로에 대해 아무것도 알려주지 않는다. 실제 출발지와 마크만이 유용한 답을 준다.
성공한 최초 연결도 많은 것을 증명하지 못한다. 장애는 경로 설치가 답을 바꾼 뒤에 나타나는 경우가 많다. 시작은 성공하고, 그다음 첫 갱신이 실패한다.
ip rule show
ip route show table 220
ip -4 route get 198.51.100.44 from 10.40.0.2
ip xfrm policy list
피어 조회가 XFRM 인터페이스로 풀리면 외부 패킷은 그들이 만드는 터널로 라우팅된다. 그것이 루프이며, 명령 하나로 보인다.
현대 게이트웨이의 제외 옵션
strongSwan의 경로 기반 VPN 문서 는 두 가지 실용적 답을 제시한다. 하나는 IKE와 ESP를 표시해 XFRM 테이블을 가리키는 규칙이 이들에 맞지 않게 한다. 다른 하나는 조회가 여전히 닿을 수 있는 피어 경로나 제외를 남긴다.
규칙 집합이 부작용 없이 표현할 수 있는 쪽을 고른다. 스택의 나머지가 이미 마크를 쓰면 마크는 깨끗하다. 같은 마스크가 다른 규칙에서 다른 뜻이면 위험하다. 두 패킷 유형 모두 어쨌든 이 처리가 필요하다.
IKE만 표시하면 데이터 패킷은 붙잡힌 경로에 남는다. 그러면 핸드셰이크만 하고 아무것도 나르지 않는 터널이 된다.
마크는 게이트웨이에서 다른 무엇도 요구하지 않는 패킷 fwmark의 한 비트다. 0x1과 마스크 0x1이 보통의 선택이며, 제외가 동작하려면 두 곳에 설정해야 한다. Charon은 IKE 소켓에 그것이 필요하고, 자식 연결의 인바운드와 아웃바운드 마크 설정에도 같은 값이 필요해 캡슐화된 패킷도 표시된 채 나간다. 마스크를 0xffffffff 대신 0x1로 두면 나머지 비트가 자유로워지며, 같은 호스트에서 다른 하위 시스템이 이미 패킷을 표시할 때 중요하다. 둘 다 설정하면 규칙이 제외로 작성되어, 표시된 패킷은 XFRM 경로가 있는 테이블을 건너뛰고 메인 테이블로 떨어진다:
ip rule add not fwmark 0x1/0x1 lookup 220 pref 1000
ip -4 route get 198.51.100.44 from 10.40.0.2 mark 0x1
그다음 마크를 적용한 상태로 답을 읽는다. 그것이 없으면 보호된 트래픽이 가는 경로를 들여다보는 셈이며, 이 절의 질문과 반대다.
자동 설치가 빌드에 대해 무엇을 전제하는가
XFRM 인터페이스용 자동 경로 설치 는 strongSwan 버전과 그 구성에 달려 있다. 인터페이스 ID, 설치된 정책, 연결(association)이 모두 의도한 객체를 가리켜야 한다. 불일치는 실제 어딘가를 조용히 가리키는 경로로 나타난다.
다른 게이트웨이에서 테이블 번호나 마크 마스크를 복사하는 것이 충돌이 시작되는 방식이다. 먼저 무엇이 이미 그것을 쓰는지 확인한다. 충돌은 바꾸려던 터널보다 훨씬 넓은 트래픽에 영향을 주고, 증상은 좀처럼 복사본을 가리키지 않는다.
피어 주소 변경은 설계에 포함된다. 어제 주소에 대한 호스트 경로는 엔드포인트 복구 계획이 아니지만, 마크는 그 변경을 견딘다.
첫 갱신을 지켜보라
보호 경로가 설치된 뒤에 외부 경로를 확인하고, 그 전에 하지 않는다. 그다음 다음 갱신과 애플리케이션 교환 하나를 지켜본다. 장애는 보통 시작이 아니라 그 전환에서 나타난다.
ip -4 route get 198.51.100.44
sudo swanctl --list-sas
sudo tcpdump -ni any 'udp port 500 or esp'
보호된 기본 경로를 잠시 제거하면 보통 연결이 복구된다. 그 결과는 진단용이지 최종적이지 않다.
목표는 내부 트래픽과 그것을 나르는 외부 패킷 사이의 안정적인 분리다. 선택한 메커니즘과 그 테이블 또는 마크를 게이트웨이 노트에 적는다. 그렇지 않으면 규칙을 건드리는 다음 사람이 루프를 다시 들여온다.