VPN을 통한 SSHFS가 큰 청크에서 정지됨

VPN을 통한 SSHFS가 큰 청크에서 정지됨

VPN 연결을 통해 SSHFS를 실행하고 있습니다. 1270바이트 청크를 이 원격 파일 시스템의 파일로 보내려고 할 때:

head -c 1270 /dev/urandom > /path/into/the/sshfs/foo

전체 파일 시스템이 정지되고 이에 액세스하려는 모든 프로세스가 중단됩니다. 이 문제는 sshfs 프로세스를 종료해야만 해결할 수 있습니다.

대신 1269바이트를 보내려고 하면 문제가 발생하지 않습니다.

나는 sshfs의 명령줄 옵션을 많이 가지고 놀았고 단 하나의 옵션만이 이에 영향을 미친다는 것을 발견했습니다:

-o max_write=1240

여기에 1270보다 작은 값을 전달하면 오류가 발생하기 시작하는 한계는 이 값 + 1로 낮아집니다(그러나 값이 300이면 1183으로 줄어듭니다). 불행하게도 값을 높여도 도움이 되지 않습니다. 제한은 1270바이트로 유지됩니다.

어쨌든 그것은 버퍼에 관한 것입니다. 연속 쓰기를 사용하면 모든 것이 잘 작동합니다.

(head -c 1269 /dev/urandom
 head -c 1269 /dev/urandom) > /path/into/the/sshfs/foo

기본 SSH의 문제는 아닌 것 같습니다.

ssh remote_host "bash -c 'head -c 2000 /dev/zero | tr \\\0 0'" | wc -c

잘 작동하고 2000예상대로 인쇄됩니다.

하지만 X 전달도 작동하지 않는 것 같아서 아마도~이다아래 ssh 문제.

MTU 크기를 1412에서 1500으로 변경해 보았습니다.

ifconfig tun0 mtu 1500

그러나 아무런 효과가 없습니다.

이것이 알려진 문제입니까? 어떻게든 이 문제를 해결/방지/회피할 수 있나요?

편집: 저는 FritzBox(홈 라우터) VPN(분명히 "cisco" 스타일이지만 이 주제에 대한 전문가는 아닙니다)과 Ubuntu 16.04를 사용하여 외부에서 액세스하고 있습니다.

또한 노트북을 사용하여 휴대폰 회선을 통해 테스트할 때 문제가 발생하지 않는 것으로 나타났습니다. 일부 제한적인 방화벽 뒤에 있는 원격 사이트에 있을 때만 발생합니다. 그러나 VPN은 일반적으로 작동하지만 sshfs 측면(및 X 전달)에만 문제가 있는 것으로 보입니다.

답변1

VPN의 오버헤드로 인해 MTU 문제가 발생했을 가능성이 높습니다. MTU를 늘리면 문제가 해결되지 않습니다. MTU가 미디어에 사용 가능한 최대 패킷 크기보다 커지기 때문입니다(LAN 전용 환경에서 점보 프레임을 사용하지 않는다고 가정합니다).

실제로 해결책은 터널 장치의 mtu를 줄이는 것입니다.

VPN 또는 라우터를 지정하지 않았습니다. 이 문제를 해결하는 방법은 OS 수준에서 MTU 클램핑을 사용하는 것입니다. 대안으로/추가로 OpenVPN을 사용하는 경우 mssfix를 사용하여 조각난 패킷에 사용할 수 있는 지시문이 있습니다. 살펴보는 것이 좋습니다.https://www.sonassi.com/help/troubleshooting/setting-corright-mtu-for-openvpn또한 조각 옵션도 있습니다.https://blog.hambier.lu/post/solving-openvpn-mtu-issues

관련 정보