Debian resolvconf 레코드 순서: VPN 레코드를 맨 앞에 두기
VPN의 네임서버가 계속 LAN 것보다 아래로 내려가는 이유는 resolvconf가 레코드 이름을 정렬하기 때문입니다. interface-order를 편집하고 다시 생성한 뒤 두 번의 조회로 확인하십시오.
VPN의 네임서버는 늘 LAN의 네임서버 아래로 내려가고, /etc/resolv.conf를 편집하면 몇 분 동안은 고쳐집니다. 그 파일은 생성되는 파일이라 수정이 결코 유지되지 않습니다. Debian의 resolvconf에서는 순서 입력이 /etc/resolvconf/interface-order이며, 이것은 DNS 주소가 아니라 레코드 이름을 정렬합니다. 두 파일 중 어느 것이라도 건드리기 전에 어느 리졸버 스택이 실제로 담당하는지 확인하십시오.
출력을 resolvconf가 소유하는지 확인하십시오
현재 파일을 무엇이 썼고 무엇이 다시 쓸지를 먼저 물으십시오. resolvconf 패키지는 스스로를 동적 리졸버 구성 프레임워크라고 설명하며, systemd-resolved나 NetworkManager가 관리하는 리졸버를 쓰는 호스트는 겉보기에는 같아 보여도 전혀 다른 정책을 쓸 수 있습니다.
readlink -f /etc/resolv.conf
dpkg -l resolvconf 2>/dev/null | tail -n 1
해석된 경로가 resolvconf의 런타임 디렉터리로 이어지지 않으면 여기서 멈추십시오. 이 문서는 다른 스택에 속합니다.
그 확인을 거친 뒤에야 resolvconf가 현재 보유한 레코드를 나열할 가치가 있습니다.
패턴을 쓰기 전에 레코드를 읽으십시오
interface-order는 공급자 레코드의 이름과 일치하며, 주소나 커널 인터페이스 이름과는 무관합니다. 무엇이 등록되어 있는지 나열하여 패턴이 실제로 존재하는 항목을 가리키게 하십시오.
ls /run/resolvconf/interfaces
cat /etc/resolvconf/interface-order
레코드 이름에는 보통 공급자를 식별하는 접미사가 붙으므로, 터널 레코드와 DHCP 레코드가 같은 인터페이스 접두사를 공유해도 정렬 순서는 달라질 수 있습니다. 디렉터리 목록에서 정확한 이름을 그대로 복사하십시오. 인터페이스 이름에서 이름을 추측하지 마십시오. 무엇을 등록할지는 클라이언트 통합이 결정합니다. 임의로 만든 이름은 결코 일치하지 않으며, 그 레코드는 오류 메시지도 없이 모든 것을 잡는 패턴으로 떨어집니다.
순서를 첫 일치 패턴으로 작성하십시오
이 파일은 셸 glob 패턴의 목록이며 한 줄에 하나입니다. 레코드는 처음 일치하는 패턴의 위치를 차지하므로, 구체적인 패턴 위에 넓은 패턴을 두면 그 구체적인 줄에 도달할 수 없게 됩니다.
# /etc/resolvconf/interface-order
lo*
tun_work.*
enp*
*
구체적인 터널 패턴을 모든 것을 잡는 패턴 위에, 그리고 물리 인터페이스 패턴 위에 두십시오.
파일에 이미 있던 다른 줄은 그대로 두십시오. 정책 전체를 예시로 바꾸는 것이 바로 무관한 공급자가 조용히 옮겨가는 방식입니다. 한 줄만 바꾸고 다시 생성한 뒤 비교하십시오. 패턴에는 공백, 슬래시, 맨 앞의 점이나 물결표를 넣을 수 없으며, 빈 줄과 해시 주석은 무시됩니다.
다시 생성하고 결과를 확인하십시오
순서는 업데이트 스크립트가 파일을 다시 만들 때 적용됩니다. 생성된 출력을 편집하는 대신 지원되는 업데이트 경로를 실행하고, 그다음 리졸버가 실제로 받은 내용을 읽으십시오.
resolvconf -u
cat /etc/resolv.conf
조회는 하나가 아니라 둘을 확인하십시오. 터널을 통해 해석되어야 하는 사설 이름과 공개 대조 이름입니다. 순서가 맞아 보이는데도 사설 이름이 계속 실패한다면 문제는 레코드 우선순위가 아니라 이름 공간 라우팅이며, 어떤 재정렬로도 고쳐지지 않습니다. 각 응답은 성공 여부만이 아니라 어느 서버가 반환했는지까지 비교하십시오. 잘못된 리졸버가 답한 사설 이름도 실패이며, 사용자에게는 DNS 장애처럼 보입니다.
오래된 레코드는 등급을 낮추지 말고 폐기하십시오
연결을 끊은 뒤에도 자꾸 다시 나타나는 오래된 VPN 레코드는 클라이언트 통합의 수명 주기 버그입니다. 목록 맨 아래로 옮기면 증상만 가려지고 죽은 리졸버가 목록에 남습니다.
그것을 등록하는 구성 요소를 통해 폐기하고, 그다음 레코드 디렉터리에 더 이상 나열되지 않는지 확인하십시오.
공급자 이름, 변경한 패턴, 실행한 두 조회를 기록하십시오. 다음 사람에게는 이야기보다 그 이름들이 더 필요합니다.