Monday, May 18, 2020

Virtualbox Ubuntu 虛擬主機網路設定

利用 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 GuideVirtualbox 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