作者Lyeuiechang (誠誠小屁孩)
看板iOS
標題[心得] UTM SE 使用者報告《第三章》網路設定與 iPad 檔案傳輸
時間Thu Jul 25 00:22:19 2024
https://i.imgur.com/nCseBwP.jpeg
【本文目錄】
前言:檔案互通是辦公的必要條件
第一節:UTM 的共享資料夾為什麼不能用
第二節:搞懂 UTM 網路設定與技術原理(文章較長)
第三節:透過個人熱點進行檔案傳輸(適合新手)
第四節:連接埠轉送的機制與技術原理(文章較長)
第五節:透過連接埠轉送進行檔案傳輸(適合進階)
【前言:檔案互通是辦公的必要條件】
1969年的美國國防部一項名為阿帕網(ARPANET)的計畫被正式投入執行,
可以被視為是網際網路的前身,其目的就是要讓電腦之間能夠互相交換研究資料,
1974年,TCP/IP協定被開發了出來,並定義了兩台電腦之間要如何溝通並傳輸資料。
這章節將會教各位如何讓虛擬機器與 iPad 的檔案系統進行雙向交換資料。
如果你看了許多坊間關於 UTM SE 的教學,無論是文章或影片,
通常會到本系列中的第二章就差不多結束了。
有些會說無法傳輸檔案,另一些會說請做成光碟映像 ISO 檔掛載。
(順帶一提,可以用 Free ISO Creator 將資料夾製作成 ISO 光碟映像檔。)
https://www.freeisocreator.com/
但是一台機器如果只能從外界讀取資料而無法把成果攜出的話,
在上面撰寫的文檔其實是沒有太大的意義。
也因此,作為本系列中最精彩也最硬核的一篇,
我們將從為什麼正常情況下 UTM 無法實現檔案共享,
到提出各式各樣(但失敗)的嘗試可能,
以及翻閱 QEMU (UTM 的底層) 關於網路設定的官方文檔,
從計算機網路概論的角度實現雙向區域網路檔案傳輸。
如果你也準備好了,就一起往下看吧。
【第一節:UTM 的共享資料夾為什麼不能用】
如果你有稍微把玩一下 UTM 介面的話,
會發現在掛載選單裡面有一個共享資料夾的選項,
可以讓你指定要把哪個 iPad 資料夾跟虛擬機器共享,
於是你很高興了選了檔案 App 中的某一個資料夾,
然後打開電腦後發現沒辦法使用,即使已經安裝 Windows 客體系統工具也是一樣。
https://docs.getutm.app/settings-qemu/sharing/
SPICE WebDAV
This requires the SPICE guest tools to be installed on the guest. The shared
directory is exposed as a WebDAV mount on the guest’s localhost (typically
on port 9843). This option has better support for Windows but can have worse
performance than VirtFS on Linux.
所以到底出了甚麼事情?
去 UTM Github Issue 列表中一找,會發現有大量的人都遇到問題:
Shared folder not working with WinXP guest
https://github.com/utmapp/UTM/discussions/3625
原因似乎是 Spice 工具用來負責共享資料夾的 WebDAV 服務在 Windows XP 上有點問題,
導致沒有反應,服務沒有啟動或者是當掉,
有人甚至建議修改文檔說明 Windows XP 其實不支援客體工具,
但因為 Spice 工具已經早就放棄 Windows XP 的支援了,故這個問題估計無法修復。
有些人第一時間就想到說,那我們就讓電腦透過雲端硬碟共享就好了啊。
但是考慮到 UTM SE 速度實在是太慢,開個瀏覽器就會等到天荒地老,
且如果用舊版的瀏覽器根本開不了網頁,更不用提可能還要考慮資安的問題,
都這麼慢了還裝套防毒軟體那簡直是慢上加慢。
那如果我們掛載一顆空的硬碟,然後把 Windows XP 上面的檔案裝進去之後,
再開一台 Linux 機器聯網上傳出去可不可行,答案也是否定的,
經過實測,UTM 似乎只能掛接一顆磁碟機,
掛兩顆並設定讀寫的時候拿不到 write lock 開不了機,
且無法單獨建立磁碟機(檔案格式 qcow2),所以這條路也沒辦法。
因此,我們需要其他方法來實現檔案傳輸,而且最好是內網也能用。
【第二節:搞懂 UTM 網路設定與技術原理】
在上面那個 Issue 討論裡面,
有人其實提到直接利用 Windows SMB 協定,
在客體虛擬機器(Guest)上面開一個伺服器,再透過主體實體機器(Host)連上即可。
https://i.imgur.com/tGlEuQQ.png
恰好 iOS 13 之後內建檔案 App 就支援 SMB 豈不是太完美了?
但當你照著步驟做就會發現:
1. 沒辦法把虛擬機器 IP 改成 Shared Network 模式 (192.168.xxx.xxx)
https://i.imgur.com/EctSVCz.png
2. 檔案 App 不確定是連不上機器還是連不上 SMB
要想講清楚原因,就得先提到 UTM 關於網路設定的部分:
https://docs.getutm.app/settings-qemu/devices/network/network/
UTM 網路模式主要分成四種:
Emulated VLAN、
Shared Network、Host Only、Bridged,其中前兩個跟我們比較有關:
Emulated VLAN: Creates a new VLAN and connects this virtual machine to it. This VLAN is
created in userspace and requests from the VM will be seen by the host
operating system as originating from the UTM process. Different VMs will each
have their own VLAN.
(macOS) Shared Network: Traffic is routed directly by the host operating system
and the guest shares a VLAN with the host. Services running on the guest and
the host can see each other without additional configuration. This is
recommended for new virtual machines.
簡單來說,Emulated VLAN 模式下每個 UTM 虛擬機器會有獨立 VLAN,
而 Shared Network 則是把實體主機與客體虛擬機連到相同的 VLAN,
每個 VLAN 就可以視為是一個區域網路。
虛擬區域網路(VLAN)通常是由一個實體 LAN 進行分割,
主要的目的就是為了把不同群組的電腦進行功能劃分以方便管理。
而虛擬區域網路本身具有防火牆的效果,
也就是說不同虛擬網路間的電腦彼此之間不可以直接通訊。
虛擬區域網路(Virtual LANs)
https://www.cs.nthu.edu.tw/~nfhuang/chap16.htm
https://savicontrols.com/what-is-vlan-i-quick-bytes-with-paul-zielie/
https://i.imgur.com/aY6Hozo.png
以上圖來說,
藍色網路 VLAN 1 跟
綠色網路 VLAN 2 各是一個 VLAN,
透過路由器設定我們可以將
Host 1-3 互相直接通訊與
Host 4-6 互相直接通訊,
而
VLAN 1 與
VLAN 2 之間無法直接通訊,必須要透過路由器。
回到我們的 UTM 網路設定,
也就是說 iPad 所處的 VLAN 與 虛擬機所處的 VLAN 不相同,
除非透過一個個人熱點(如手機開熱點)當作一個路由器,否則是無法直接通訊的。
在 QEMU 的網路文檔中提到:
https://people.redhat.com/pbonzini/qemu-test-doc/_build/html/topics/pcsys_005fnetwork.html
Using the user mode network stack
By using the option -net user (default configuration if no -net option is
specified), QEMU uses a completely user mode network stack (you don’t need
root privilege to use the virtual network). The virtual network configuration
is the following:
QEMU VLAN <------> Firewall/DHCP server <-----> Internet
| (10.0.2.2)
|
----> DNS server (10.0.2.3)
|
----> SMB server (10.0.2.4)
The QEMU VM behaves as if it was behind a firewall which blocks all incoming
connections. You can use a DHCP client to automatically configure the network
in the QEMU VM. The DHCP server assign addresses to the hosts starting from
10.0.2.15.
也就是說除非我們把 UTM 網路能夠設定成共享模式,
否則基本上是無法區域網路內讓 iPad 與虛擬機器通訊的,
但是在文檔中也寫到共享模式僅限 MacOS,也就是 iOS 只能使用模擬 VLAN。
【第三節:透過個人熱點進行檔案傳輸】
前面提到,雖然 VLAN 之間是無法通訊的,
但是我們只要有一個路由器就能讓 iPad 與虛擬機器進行通訊,
其實就是讓手機開一個熱點(建議停用行動網路避免資安問題),
這個時候 iPad 上 App 啟動的伺服器都會變成 192.168.xxx.xxx,
我們就能在虛擬機器裡面連上這個伺服器進行檔案交換了。
以下介紹幾個可行的方案:
(1) 用 iPad App 開 WebDAV 伺服器:
類似軟體如:Documents:PDF 閱讀器軟體,音樂播放器, VPN
https://i.imgur.com/jfPVJCL.png
優點:很容易找到 App 支援 WebDAV 伺服器
缺點:常常會連不上,不是很穩定
https://i.imgur.com/GMPyOoT.png
https://i.imgur.com/FqMrzpy.png
(2) 用 iPad App 開 FTP 伺服器:
類似軟體如:GoFTP Server
https://i.imgur.com/gbEkxbI.png
優點:穩定度高
缺點:內建檔案管理 FTP 瀏覽器很慢,建議安裝 FileZilla,且 App 數量較少
https://i.imgur.com/PipM8Bn.png
https://i.imgur.com/XFu2qG1.png
(3) 用 iPad App 開一個網頁上傳伺服器:
類似軟體如:Documents:PDF 閱讀器軟體,音樂播放器, VPN
https://i.imgur.com/jfPVJCL.png
優點:容易使用,瀏覽器輸入 IP 地址即可
缺點:XP 瀏覽器通常無法正常開啟 App 產生的檔案上傳網頁
【第四節:連接埠轉送的機制與技術原理】
UTM 還有提供一項機制,叫做連接埠轉送(Port Forwarding)。
https://docs.getutm.app/settings-qemu/devices/network/port-forwarding/
Port forwarding is only available on QEMU backend virtual machines using
Emulated VLAN network mode. To create a new port forward, press the “New…”
button and fill in the fields. To modify an existing port forward, either
double click on the entry in the table or select an entry and click “Edit…
”. On macOS 11, click on an entry to modify it.
這個連接埠轉送功能簡單來說,
就是把虛擬機器上的某一個連接埠(Port)接上實體機器上的某一個連接埠(Port)。
而每一個連接埠,其實就是用來給特定軟體通訊用的通道,
並且透過轉送可以改變指定的連接埠。
https://en.wikipedia.org/wiki/Port_forwarding
https://i.imgur.com/oMFCWVz.png
比如說:我們設定虛擬機器 A 連接埠轉送,
那在 iPad 上就能透過這個 A 連接埠進行通訊。
也就是說,只要把檔案傳輸會用到的連接埠加到 UTM 網路設定,
就能在 iPad 上面跟虛擬機進行檔案傳輸。
https://i.imgur.com/r4PZocI.png
【第五節:透過連接埠轉送進行檔案傳輸】
以下介紹幾個可行的方案(記得去防火牆設定例外):
(1) 虛擬機開啟 SMB 協定:設定轉送連接埠 445,iPad 端連上 127.0.0.1:445
優點:Windows 內建檔案傳輸,不用安裝其他軟體
缺點:在 AppStore 要找到 SMBv1 的 App 有點困難,內建檔案 App 不支援舊版 SMB,
多數檔案 App 拒絕連接到 127.0.0.1 並需要聯網
類似軟體如:NPlayer (只能讀取檔案)
https://i.imgur.com/hH8z88W.png
Owlfiles - File Manager
https://i.imgur.com/hnRchCv.png
https://i.imgur.com/FrcW66r.png
https://i.imgur.com/Oe7B0VL.png
https://i.imgur.com/x6Kmdne.png
https://i.imgur.com/N2jEqx3.png
https://i.imgur.com/j59D1pb.png
(2) 虛擬機開啟 FTP 伺服器:設定轉送連接埠 21 用於監聽(Listening),
另外設定幾個連接埠來作為檔案傳輸連接埠,
並於 FTP 伺服器內設定被動模式(Passive Mode) 為這幾個檔案傳輸連接埠,
iPad 端連上 127.0.0.1:21
優點:iPad 要找到 FTP 客戶端 App 較容易,伺服器控制台訊息可協助找問題 Debug
缺點:隨時 FTP 伺服器開啟有資安疑慮,需安裝額外 FTP 軟體
類似軟體如:FTPManager - FTP, SFTP client
https://i.imgur.com/dou4imJ.png
https://i.imgur.com/KGXDDwi.png
https://i.imgur.com/jOkLhcj.png
--
推 Lyeuiechang: [新聞]有狼師一直戳女學森(.)(.)而被家長吉上法院...12/04 23:42
→ Xhocer: ) (12/04 23:44
推 xj654m3: ( Y )12/04 23:46
→ Xhocer: \|/12/04 23:48
推 xj654m3: (╮⊙▽⊙)ノ|||12/05 00:47
推 Kroner: 關節痛睡覺就能治了,吃什麼UC2 07/25 20:49推 Lyeuiechang: /|\╰╮o( ̄▽ ̄///)<12/05 01:17
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.200.70.103 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/iOS/M.1721838149.A.387.html
※ 編輯: Lyeuiechang (1.200.70.103 臺灣), 07/25/2024 00:43:10
→ Matil2258037: 跟我想的一樣 07/25 00:43
※ 編輯: Lyeuiechang (1.200.70.103 臺灣), 07/25/2024 00:48:03
※ 編輯: Lyeuiechang (1.200.70.103 臺灣), 07/25/2024 00:54:16
推 gary8442: 先推 07/25 02:25
推 YU0201: 請大大收下我的膝蓋 07/25 07:00
推 Chricey: 有人知道如何處理關節痛嗎?求分享! 07/26 14:50→ MOONY135: 願意浪費生命研究這個 值得尊敬 07/25 09:43
推 yohobiology: 太強了 07/25 10:09
推 Melmetal: 先推 07/25 11:52
推 berserkman: 蘋果為了把ipad和mac分開真的不遺餘力 07/25 11:54
推 Kroner: 有人知道如何處理關節痛嗎?求分享! 07/28 16:00推 Luciferspear: 推 07/25 12:23
推 desanz: 你真的超強 07/25 14:56
推 ianferrari: 太厲害了 推 07/25 16:45
推 cc5566cc: 跟我想的差不多 英雄所見略同 給推 07/25 20:49
推 Kroner: UC2是啥東西?求解釋啦! 07/25 20:49 推 guanting886: 在iPadOS模擬20年前的XP看起來蠻折騰自己的 07/25 21:29
推 COLINLIU: 推 07/25 21:52
推 ho83leo: 有料喔! 07/26 00:05
推 JoseMiguel: FTP方式最穩,怕資安可以參考SFTP的連線方式port會在2 07/26 14:50
推 Chricey: 關節痛按摩有效嗎? 07/26 14:50 → JoseMiguel: 2 07/26 14:50
推 wtsph: iOS12以前的版本有解方嗎 07/26 15:05
推 echelon1279: 強者推 07/27 23:03
推 xzero0911: UTM SE居然有人研究使用給推 垃圾蘋果死不開放UTM HV 07/28 16:00
推 Kroner: 吃過關節保健品,都沒什麼效果,有推薦的牌子嗎? 07/28 16:00 推 stu85010: 求第六節分享方式總結⊙o⊙ 07/31 09:43
推 waakye: 現在能玩比較好的方式是收一台16.3之前的M1 M2 07/31 11:38