題 在不可靠的網絡上使用NFS(wifi /移動)


我家裡有一個NFS服務器(以及只能在家外工作的openvpn連接)。

我的手機(Jolla)基本上是Linux,具有移動數據/ wifi / usb網絡功能。

基本上,我想從手機NFS安裝到我的服務器,這樣我就可以看到存儲在NFS服務器上的電影/音樂。

理想情況下,如果我沒有網絡,它會停止,但在我恢復連接時繼續播放會很好。 (希望播放器有一些緩衝,例如消除從wifi切換到openvn的超時)。

這裡的重要部分是 可靠性/穩定性,我不太關心表現。

NFS服務器位於網絡10.73.98.0/24中。 openvpn網絡(10.73.99.0/24)可以直接路由到它,openvpn連接被局域網內部拒絕,這樣就不會發生衝突。

考慮以下網絡連接選項:

  • usb-network通過PC(源網絡192.168.7.0/24,MASQUERADED到10.73.98.0/24網絡)
  • 家裡的wifi連接(局域網,源網絡10.73.98.0/24)
  • 移動數據連接(動態IP,openvpn網絡10.73.99.0/24)
  • wifi外面的家(openvpn network 10.73.99.0/24)

afaik NFS over UDP不會擔心路由,但需要相同的IP地址(可能?),以便mount可以在網絡中存活...

現在,我也看了fscache,希望它能在塊級和存儲塊中緩存(可能還有一些來自NFS文件的readahead?)。但看起來它存儲在filelevel。

例如,當前的測試無法在移出wifi範圍後繼續存在。即使等了一會兒......

會是什麼 最好的掛載選項 我應該試試?我應該看看某種形式的自動掛載嗎?關於什麼 INTR 要么 軟硬 要么 TCP / UDP..我應該隧道它 總是超過openvpn 可靠性?關於什麼 openvpn設置?等等...


5
2018-05-31 11:41


起源


似乎沒有人發現這篇文章...也許它可能被轉移到serverfault?對於普通用戶來說這可能太難了...... - AL13N
我想知道你是否找到了解決方案?這個概念肯定很有趣,儘管我個人試圖避免使用 NFS 和 不可靠的網絡 在同一個句子裡。 - zagrimsan
您是否考慮過使用Samba vs NFS,甚至是SSHFS? SSHFS與OpenVPN的缺點是可以調整OpenVPN以提供更好的吞吐量。 - JW0914
由於評論僅限於少量字符,因此列出應該使用的OpenVPN設置是不切實際的,但我建議的是看一下 OpenVPN Wiki 我為OpenWrt寫過。雖然需要解僱或替代OpenWrt特定命令,但95%的Wiki適用於在任何操作系統上運行的OpenVPN服務器。 - JW0914


答案:


同意 zagrimsan的聲明 不可靠的網絡 和 NFS 不要在一起玩得很好你的里程肯定會有所不同,不要指望任何承諾,不過一般來說這可行。

互聯網上的OpenVPN大體上可以與質量非常差的電纜相媲美,從世界上任何地方直接進入您的專用網絡的電纜都很長。 NFS的設計考慮了低延遲和高質量,因此這不是最好的用例。

柔軟的 和 INTR 安裝選項是可取的,因為在外出時很可能出現中斷,特別是使用您描述的連接類型。為簡單起見,是的,您應該在連接到共享時始終使用VPN,或者服務器會將您的家庭內部和漫遊連接解釋為兩個客戶端,如果您在VPN重新連接上獲得新IP,則會將其解釋為更多,這會使鎖定和其他並發邏輯混亂。

如果您的.99網絡僅通過VPN可用,那麼只需將任何其他路由推送到客戶端,您就可以在家中啟用VPN。

TUN模式下的OpenVPN通常會向具有相同證書的客戶端重新發出相同的IP地址,並且您使用的任何DHCP服務都應該使用靜態MAC(使用OpenVPN的 lladdr 選項)在TAP模式下為每個連接提供相同的IP。 TAP在這裡沒有任何優勢所以我會明確指出。你可以使用 ifconfig-push  ccd指令 如果您使用密碼短語而不是證書

我首先看一下TCP傳輸的TCP,以及OpenVPN傳輸的UDP。你絕對 不要 TCP上的OpenVPN和TCP上的NFS通過那些不穩定的連接類型。


0
2017-07-27 12:20



OpenVPN,如果配置正確,將提供出色的吞吐量,但大多數人都不打擾這樣做,99%的教程只配置最低限度。無論遠程訪問類型如何,都將始終受到遠程網絡的ISP上載速度的限制。 WWAN設備不可能具有靜態MAC,因為WWAN不遵守RFC協議。要通過OpenVPN提供相同的IP,應配置CCD,不應將TAP用於WWAN設備,以及 如果 存在高丟包率,TCP應該用於OpenVPN(TCP用於高pkt丟失和故障排除)。 - JW0914
TCP for NFS,是的,這將確保可靠的連接,但不適用於OpenVPN本身。我還沒有看到一個使用OpenVPN over TCP的用例,除了像政府只允許TCP / 443這樣的荒謬要求。任何連接可靠性都應由應用程序處理,而不是OpenVPN,它只是有效負載數據包的容器。 - Liam Dennehy
正如我的評論所述, OpenVPN中只有兩個TCP用例: 1:  UDP上的高丟包率; 2:  故障排除。除了這兩個特定用例之外,TCP不應該被用作 TCP無法有效地封裝自身  (默認情況下,所有SSL VPN流量都封裝在UDP數據包中以進行傳輸,這就是為什麼MTU [如果使用AES256則MTU大小為48,000]和建議使用緩衝區調整)。所有上述內容都清楚地闡述了 OpenVPN的文檔。 - JW0914