인터넷을 통한 파일 시스템 마운트


11

고객 중 한 사람을 위해 가상 서버에서 실행되는 웹 응용 프로그램을 만들었습니다. 여기에는 파일을 업로드하는 기능이 포함되지만 이제는 해당 파일을 사무실의 서버에 저장하려고합니다.

가장 쉬운 방법은 인터넷을 통해 파일 시스템을 가상 서버에 직접 마운트하는 것입니다. 내부 네트워크를 통해 NFS를 마운트 한 경험이 있지만이 시나리오에서 작동하는지 확실하지 않습니다.

이견있는 사람? 파일을 전송하기 위해 항상 새 소프트웨어를 작성할 수는 있지만 쉽게 해결할 수 있습니다!

참고 : 사무실의 서버는 Windows Hyper-V 환경의 가상 서버에서 실행되는 Ubuntu 12 서버입니다. 웹앱이 포함 된 VPS는 Ubuntu 11.04입니다.


이러한 파일에 보안이 문제입니까?
Adrian Cornish

크론 작업을 통한 rsync.
Ignacio Vazquez-Abrams 3

@AdrianCornish-보안 솔루션이 선호되지만 실제로는 아닙니다.

답변:


12

아직 아무도 sshfs 를 언급 하지 않았습니다. 최신 Linux 배포판에 있고 원격 호스트에 대한 ssh 액세스 권한이있는 경우 다음과 같이 간단합니다.

sshfs user@hostname:/remote/directory /local/directory

성능은 상당히 수용 가능하지만 전체 디렉토리가 필요한 경우 rsync와 같은 스트리밍 동기화만큼 빠르지는 않습니다.


FAQ는 "지금까지는 리소스가 느리고 신뢰할 수없는 (원격) 연결을 통해 마운트 될 수있다"고 말합니다. 또 다른 웹 페이지에서 "sshfs -o reconnect server : / path / to / mount"는 연결이 끊어지면 자동으로 다시 연결되도록합니다.

3

NFS는 본질적으로 안전하지 않습니다. 인터넷을 통한 연결에는 매우 좋지 않은 선택입니다.

나는 rsync를 언급 한 게시물을 좋아합니다. cron을 사용하여 전송을 실행하는 대신 파일 업로드를 처리하는 코드에서 rsync 작업을 간단히 실행할 수 있기를 바랍니다.

업로드가 완료되면 파일을 서버로 재 동기화합니다.

전송을 위해 서버에 보안 연결을 설정해야합니다.

원하는 경우 들어오는 파일을 전송 목록에 넣어 성공적인 복사 후 이름을 제거하고 연결에 문제가 생길 경우 장애 조치 기능을 제공 할 수 있습니다.

다른 사람이 이미 지적했듯이 rsync는 파일 그룹 또는 계층 구조 (감사, 맞춤법 검사)를 처리하도록 설계되었으므로 달성하기가 어렵지 않습니다.


1
rsync는 SSH를 전송으로 사용하는 데 아무런 문제가 없습니다.
Ignacio Vazquez-Abrams

웹 앱은 이미 파일을 로컬 서버에 저장하고 참조합니다. 로컬 서버에는 공간이 없으므로 전송 후 한 번 제거해야하므로 새 코드를 작성해야하므로 가능한 경우 먼저 마운트 된 솔루션을 찾고 있습니다.

1

NFS는 본질적으로 안전하지 않지만 서비스의 결함은 아닙니다. 텔넷과 FTP는 본질적으로 안전하지 않지만 공개 인터넷에서 수십 년 동안 사용되었습니다. 암호화 된 VPN 터널이 설정되면 NFS 암호화 부족은 무의미합니다.

또한 특정 원격 호스트 주소 만 NFS 마운트 포인트에 연결하도록 방화벽을 구성한 경우 인터넷 트래픽을 스니핑하고 강력한 암호 해독에 액세스 할 수있는 3 개의 문자 에이전시를 제외하고는 거의 해킹되지 않은 NFS 연결이 대부분 해킹으로부터 안전합니다. 어쨌든 암호화 된 원격 연결을 해독하십시오.

일부 NFS 버전은 기본적으로 UDP를 사용하며 인터넷 안정성 문제가 발생할 수 있습니다. 연결이 정체되고 재전송이 자동으로 시도되지 않으면 UDP 패킷이 손실 될 수 있습니다. 안정적인 연결을 원할 경우 NFS가 인터넷을 통해 TCP 패킷을 사용하고 있거나 강제로만 사용해야합니다.


1
텔넷과 FTP는 본질적으로 안전하지 않지만 개방형 인터넷에서 수십 년 동안 사용되어 왔습니다. 사실, 이것이 인터넷을 통해 이것을 사용하는 것은 (매우) 나쁜 습관으로 간주되기 때문에 이것이 좋은 지적이라고 생각하지 않습니다. 지금. Mozilla는 암호화되지 않은 http를 더 이상 사용하지 않을 것을 제안 합니다.
Ian D. Scott

0

방화벽을 통해 NFS 를 수행 할 수 있습니다. 검색하면이 프로세스를 시도하여 성공한 다른 사용자를 찾을 수 있지만, 포트를 여는 것만 큼 간단하지 않으며 실행중인 NFS 버전에 의존하는 것으로 보입니다.

rsync 는 훌륭한 제안이며 많은 유연성을 가지고 있습니다. 그러나 이것은 앱 외부에서 실행되는 프로세스입니다. rsync는 로컬 파일 업데이트의 동기화를 처리하고 전체 디렉토리를 다른 폴더와 동기화하여 유지할 수 있습니다.

ssh 는 또 다른 보안 옵션이며 단일 포트만 열면됩니다. 나는 과거에 Windows와 Linux 시스템 사이에서 이것을 사용했으며 프로세스 내 에서뿐만 아니라 응용 프로그램 내에서 잘 작동했습니다.

찾고있는 것을 성취 할 수있는 다른 방법이 있다고 확신하지만 파일 유형에 대한 자세한 정보가 필요하며 파일을 페이지에 연결하거나 더 복잡한 것으로 스트리밍하는 경우 더 많은 정보가 필요합니다.


대안을 이해하고 파일 시스템을 마운트하는 것이 가장 쉬운 솔루션 일뿐입니다. 내부 네트워크가 아닌 인터넷을 통해 NFS가 얼마나 안정적인지 잘 모르겠습니다. 연결이 끊어 지거나 이에 견딜 수 있도록 설계된 새로운 대안이 있으면 어떻게됩니까?

0

NFS 마운트는 automount를 사용하여 수행 할 수 있습니다. 이는 실패시 마운트를 계속 시도하지만 파이프를 통해 마운트를 사용하는 유일한 방법은 VPN 또는 다른 안전한 연결을 사용하는 것입니다 (실제로는 고려하지 않지만 당신은 아이디어에 고정 된 소리).

자동 마운트를 사용하더라도 네트워크 문제가 있고 업로드를 NFS 마운트에 배치하는 경우 파일을 로컬로 저장 한 후 업로드 성공시 복사하지 않으면 업로드가 실패하거나 손상 될 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.