VPN 너머의 NFS clientaddr: 습관이 아니라 마이너 버전으로 판단하십시오
clientaddr는 NFSv4.0에만 콜백 주소를 알립니다. 협상된 마이너 버전을 읽고, 반환 경로를 확인하고, 마운트 실패와 구분하십시오.
clientaddr는 이유가 사라진 지 한참 뒤에도 명령줄에 복사되는 마운트 옵션 중 하나입니다. NFSv4.0 서버에 클라이언트를 어디로 다시 호출할지 알려 줍니다. 서버를 선택하지도, 모든 요청을 원본 주소에 묶지도 않으며, 트래픽을 터널로 밀어 넣지도 않습니다. 주소가 여러 개인 노트북에서 이 옵션이 애초에 적용되는지 판단하려면 세 가지 질문이 필요합니다.
세 가지 조건이 옵션의 중요성을 결정합니다
첫째는 4.1과 4.2가 콜백을 다르게 처리하기 때문에 협상된 마이너 버전입니다. 둘째는 서버가 알리려는 주소에 도달할 수 있는지이며, 라우팅된 터널은 보통 이를 허용하고 변환된 경로는 보통 허용하지 않습니다. 셋째는 추적 중인 실패가 애초에 콜백 실패인지입니다.
| Condition | If yes | If no |
|---|---|---|
| Version is 4.0 | The option can matter | Skip it; inspect the session instead |
| Server can reach the address | Advertise it | Fix reachability first |
| Failure is a callback | Diagnose callback path | Look at mount and export |
순서를 바꿔 답하는 것이 사람들이 4.2 마운트에 콜백 주소를 추가하고 옵션이 고장 났다고 결론짓는 방식입니다.
먼저 마이너 버전을 읽으십시오
nfsstat -m
기존 마운트의 경우 이 명령은 마운트 정보와 플래그를 출력하며, 유효 버전을 vers=4.0, vers=4.1, vers=4.2로 보여 줍니다. “NFSv4”라고만 적힌 메모는 이 옵션의 관련성을 결정하는 유일한 세부 정보를 빼놓습니다. 단어가 아니라 숫자를 읽으십시오.
버전 문자열이 명령줄이 아니라 서버 기본값에서 왔다면 어떤 마이너 버전이 협상되었는지 물으십시오. 서버는 더 높은 마이너 버전을 거부하고 물러설 수 있으며, 바로 그 후퇴가 콜백이 갑자기 중요해지는 경우입니다. 작성한 마운트 줄이 실제 마운트를 설명하지 않을 수 있습니다.
4.0의 경우 서버가 도달할 수 있는 주소를 알리십시오
NFSv4.0 서버는 예를 들어 위임을 회수할 때 클라이언트로 돌아가는 별도 연결이 필요할 수 있습니다. 인터페이스가 여러 개이거나 라우팅 테이블이 특이하면 콜백 주소의 자동 검색이 서버가 사용할 수 없는 주소를 고를 수 있습니다.
mount -t nfs -o vers=4.0,clientaddr=10.8.0.6 10.8.0.1:/export /mnt/share
콜론 앞의 주소는 서버이며 목적지로 남습니다. 콜백 주소는 클라이언트에 속하고, 터널의 서버 쪽에서 도달할 수 있어야 합니다. 루프백 주소는 서버를 자기 자신으로 되돌립니다. 반환 경로가 없는 사설 클라이언트 주소도 클라이언트에서 올바르게 보이더라도 똑같이 쓸 수 없습니다.
동작하는 마운트를 낮추는 이유가 아니라 예시로 사용하십시오. 주소와 내보내기 경로를 바꾸고, 서버가 요구하는 인증과 기타 옵션은 유지하십시오. 예시 하나를 맞추려고 그것들을 빼는 것은 다른 결과를 낳는 다른 변경이며, 보안 유형을 강제하는 서버에서는 콜백을 시도하기 전에 실패합니다.
4.1과 4.2는 이 옵션을 사용하지 않습니다
Linux NFSv4.1과 4.2는 클라이언트가 설정한 연결을 통해 콜백을 전달하며, 4.1은 그 설비를 백채널이라고 부릅니다. 서버가 알려진 주소로 새 연결을 여는 것에 의존하지 않으므로 clientaddr는 4.1이나 4.2의 콜백 경로를 고치지 않습니다.
그렇다고 4.1과 4.2에 콜백 문제가 없다는 뜻은 아닙니다. 진단이 다르다는 뜻이며, 존재해서는 안 될 인바운드 콜백 포트를 찾는 대신 설정된 세션과 그 백채널 상태를 살펴보십시오. 인바운드 규칙이 없는 것은 예상된 상태이지 고쳐야 할 결함이 아닙니다.
마운트 실패와 콜백 실패를 구분하십시오
먼저 클라이언트가 NFS 서비스에 도달하는지, 서버가 내보내기와 인증 요청을 받아들이는지 확인하십시오. 그 교환 전의 시간 초과는 콜백 주소에 대해 아무 말도 하지 않습니다. 마운트가 아직 실패하는 동안 하나를 바꾸는 것은 조사를 진전시키지 못하며, 원래 오류를 새 마운트 옵션 뒤에 숨깁니다.
증거가 실패한 4.0 콜백을 보여 줄 때만 알려진 주소가 중요해지며, 서버의 반환 경로, 클라이언트 쪽 수신기, 그리고 그 사이의 모든 필터링과 함께 따집니다. 마운트 옵션의 숫자를 바꾸는 것으로는 그 경로를 만들 수 없고, 이미 있는 경로를 가리킬 수만 있습니다. 다음 보고서는 그중 아무것도 없이 도착할 것이므로, 그 네 가지 중 무엇을 확인했는지 적어 두십시오.
초기 부팅 시의 NFS 루트는 마운트가 일어나기 전에 initramfs에 도구와 네트워크를 요구하는 별도 환경입니다. 로그인 후 동작하는 마운트는 그 순서에 대해 아무것도 증명하지 못하며, 부팅 시의 실패는 initramfs나 네트워크를 거의 언급하지 않습니다.