利用 Virtualbox 建立 Ubuntu 20.04 伺服器的虛擬主機, 可以讓使用者透過便捷的網路設定, 了解不同主機連線配置的特性外, 也能同時測試跨操作系統平台套件在 Windows 與 Ubuntu 環境執行的差異.
修課學員只要登入 @gm 帳號後, 就可下載 Ubuntu 20.04 虛擬主機 (或下載 [Ubuntu 20.04 W12 虛擬主機), 並匯入 Windows 10 環境所安裝的 Virtualbox.
接下來就必須了解如何使用虛擬主機的 NAT Network 網路設定.
讓虛擬主機連上廣域網路
能直接讓 Virtualbox 虛擬主機連上網路的設定, 可以選擇 NAT, NAT Network 與 Bridged 等三種設定. 詳細的說明可以參考 Virtualbox Network Setting, Virtualbox 5.1.22 User Manual, Virtualbox 6.1.8 User Manual 中的說明.
假如需要利用 Python 程式透過 COM 操控 Virtualbox 中的虛擬主機, 則可以參考 Virtualbox 5.1.22 Programming Guide 與 Virtualbox 6.1.8 Programming Guide 中的說明.
在目前的網際內容管理與協同產品設計課程應用上, 以 NAT Network 的設置最合需求. 因為 Ubuntu 20.04 虛擬主機可以透過 Windows 10 Host 的 IPv4 或 IPv6 網路設定連外. 同時 Windows 10 上的瀏覽器與 Python 程式可以透過內部網路對虛擬主機連線.
使用 NAT Network 讓虛擬主機上網的另外一個好處是: Host 上 Virtualbox 的網路設定可以動態生效, 亦即 Ubuntu 20.04 可以一直保持在開機狀態, 使用者在 Host 端更動 Virtualbox 的 NAT Network 設定後, 即刻可以在 Ubuntu 虛擬主機上進行配合調適, 無需如 Bridged 或 Host Only 虛擬主機的網路設定, 必須關機後才能修改所使用的網路設定.
NAT Network 上的 IPv4 與 IPv6 設定
由於在電腦輔助設計室使用純 IPv6 協定上網, 因此採用 NAT Network 設定的 Virtualbox 虛擬主機, 也必須能夠透過 IPv6 進行設定.
NAT Network 的 DHCP 能同時支援 IPv4 與 IPv6, 但是在 GUI 介面只列出 IPv4 的 DHCP 內定使用 10.0.2.0/24 IP 位址, IPv6 的部分則需要透過指令才可列出:
C:\Users\kmol2019>"C:\Program Files\Oracle\VirtualBox\VBoxManage" list natnetworks NetworkName: NatNetwork IP: 10.0.2.1 Network: 10.0.2.0/24 IPv6 Enabled: Yes IPv6 Prefix: fd17:625c:f037:2::/64 DHCP Enabled: Yes Enabled: Yes loopback mappings (ipv4) 127.0.0.1=2
換言之, 在 Virtualbox 採用 NAT Network 設定的虛擬主機, 其 IPv4 gateway 預設為 10.0.2.1, 而 IPv6 的 gateway 則為 fd17:625c:f037:2::1, 了解此一訊息之後, 使用者就可以利用 Windows 10 中的批次檔案 setnatnetwork.bat 來設定後續的網路內容, 主要讓 cd2020pj1 啟動後的 8443 與 7443 埠號伺服器, 能夠從 Host 瀏覽器中連線:
"C:\Program Files\Oracle\VirtualBox\VBoxManage" natnetwork modify --netname NatNetwork --port-forward-4 "ssh:tcp:[127.0.0.1]:22:[10.0.2.4]:22" "C:\Program Files\Oracle\VirtualBox\VBoxManage" natnetwork modify --netname NatNetwork --port-forward-4 "coppeliasim:tcp:[127.0.0.1]:19999:[10.0.2.4]:19999" "C:\Program Files\Oracle\VirtualBox\VBoxManage" natnetwork modify --netname NatNetwork --port-forward-4 "cmsimde1:tcp:[127.0.0.1]:8443:[10.0.2.4]:8443" "C:\Program Files\Oracle\VirtualBox\VBoxManage" natnetwork modify --netname NatNetwork --port-forward-4 "cmsimde2:tcp:[127.0.0.1]:7443:[10.0.2.4]:7443" "C:\Program Files\Oracle\VirtualBox\VBoxManage" natnetwork modify --netname NatNetwork --port-forward-6 "ssh:tcp:[::1]:22:[fd17:625c:f037:2:a00:27ff:fef6:9b8a]:22" "C:\Program Files\Oracle\VirtualBox\VBoxManage" natnetwork modify --netname NatNetwork --port-forward-6 "cmsimde1:tcp:[::1]:8443:[fd17:625c:f037:2:a00:27ff:fef6:9b8a]:8443" "C:\Program Files\Oracle\VirtualBox\VBoxManage" natnetwork modify --netname NatNetwork --port-forward-6 "cmsimde2:tcp:[::1]:7443:[fd17:625c:f037:2:a00:27ff:fef6:9b8a]:7443"
其中 Ubuntu 20.04 虛擬主機的 netplan 網路設定為:
network: ethernets: enp0s3: dhcp4: true dhcp6: true nameservers: addresses: - 2001:b000:168::1 version: 2
表示兩種網路協定都採用 DHCP, 但是 IPv6 必須設定 DNS 伺服器, 因為學校 DHCP6 所設定的 DNS 無法正確運作的緣故.
No comments:
Post a Comment