我在 Ubuntu Server 18.04 上使用 VirtualBox 5.2.18。我有幾台 VirtualBox 來賓電腦共享 NAT 網路intnet
。目前,intnet
有一個 DHCP 伺服器(由 VirtualBox 設定),可以自動為來賓分配動態 IP。這工作正常,但我希望 DHCP 伺服器根據網路介面的 MAC 位址將靜態 IP 分配給特定的訪客。靜態 IP 可以在來賓內部設置,但這需要時間並且取決於來賓作業系統。在 VirtualBox 中,有沒有辦法為來賓分配靜態 IP?
VirtualBox 安裝資料夾中有一個名為 的可執行檔VBoxNetDHCP
。從 的輸出來看VBoxNetDHCP
,它似乎允許透過 MAC 位址進行靜態 IP 分配。但我無法讓它工作,而且它的文檔幾乎不存在。
答案1
通常,當我做這樣的事情時(而且我經常這樣做),我傾向於使用虛擬機作為網絡伺服器來執行 DHCP、DNS 等操作 - 既可以進行全球緩存,也可以進行本地欺騙fake.tld
- 等等。
最簡單的方法是透過 netinstall 映像進行 Debian 的基本裸安裝 - 除了 ssh 伺服器選項和可能的「標準實用程式」之外,不選擇任何軟體包組。
一旦啟動並運行,要將其轉變為內部 VM 網路的 DHCP 伺服器,請安裝該isc-dhcp-server
軟體包。然後編輯/etc/dhcp/dhcpd.conf
這是我的一個簡單例子。這會設定較短的租用時間(5 分鐘),將客戶端搜尋網域等設定為“fake.tld”,將其 dns 查詢指向 192.168.1.2,並給出 10.99.98.80-100 範圍內的位址24 位元網路遮罩。請注意,執行此操作的虛擬機器必須具有配置了 10.99.98.0/24 子網路內 IP 的適配器。
除了一般池之外,我還為設備提供了80:c1:6e:2b:b6:cd
明確定義的 IP 租約的 MAC 位址(以及任何其他option
類似要使用的 DNS 伺服器、網關等).110
。任何此類「靜態租約」都必須針對動態範圍之外的位址,但位於設定檔中和託管服務的電腦的網路介面卡上配置的子網路內。
當您新增主機並希望它具有特定 IP 時,只需新增另一個主機節 - 主機名稱不需要與客戶端發送的任何內容匹配,但它在檔案中必須是唯一的。新增完後,重啟服務service isc-dhcp-server restart
ddns-update-style none;
option domain-name "fake.tld";
option domain-name-servers 192.168.1.2;
option domain-search "fake.tld";
default-lease-time 600;
max-lease-time 720;
authoritative;
log-facility local7;
subnet 10.99.98.0 netmask 255.255.255.0{
range 10.99.98.80 10.99.98.100;
option routers 10.99.98.1;
}
host lr-tv {
hardware ethernet 80:c1:6e:2b:b6:cd;
fixed-address 10.99.98.110;
option routers 10.99.98.1;
option domain-name-servers 192.168.1.2;
}
答案2
這可以在內部 VBOX DHCP 伺服器中完成:
1.- 尋找 dhcp 伺服器的網路名稱:
./VBoxManage list dhcpservers
NetworkName: HostInterfaceNetworking-VirtualBox Host-Only Ethernet Adapter
Dhcpd IP: 192.168.56.100
LowerIPAddress: 192.168.56.101
UpperIPAddress: 192.168.56.254
NetworkMask: 255.255.255.0
Enabled: Yes
Global Configuration:
minLeaseTime: default
defaultLeaseTime: default
maxLeaseTime: default
Forced options: None
Suppressed opts.: None
1/legacy: 255.255.255.0
Groups: None
Individual Config:
2.- 您還需要虛擬機器介面的 MAC 位址
PS C:\Program Files\Oracle\VirtualBox> ./VBoxManage list vms
"accadev-ubuntu20.04" {2a98947e-4b8c-4bc3-9441-2b556d0b33a1}
"accadev-ansible01" {1d261714-9b49-47e2-a634-bc0677f5b707}
PS C:\Program Files\Oracle\VirtualBox> ./VBoxManage showvminfo accadev-ubuntu20.04 | Select-String -Pattern 'MAC'
NIC 1: MAC: 0800275452FB, Attachment: NAT, Cable connected: on, Trace: off (file: none), Type: 82543GC, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
NIC 2: MAC: 08002703E954, Attachment: Host-only Interface 'VirtualBox Host-Only Ethernet Adapter', Cable connected: on, Trace: off (file: none), Type: 82540EM, Reported speed: 0 Mbps, Boot priority: 0, Promisc Policy: deny, Bandwidth group: none
3.- 為該 MAC 設定靜態租用。
./VBoxManage dhcpserver modify --ifname "VirtualBox Host-Only Ethernet Adapter" --mac-address=08:00:27:f8:31:fa --fixed-address=192.168.56.20
4.- 重新啟動 DHCP 伺服器以應用更改
./VBoxManage dhcpserver restart --ifname "VirtualBox Host-Only Ethernet Adapter"
就是這樣。您不僅可以對純主機網路執行此操作,還可以對連接了 DHCP 伺服器的任何 Vbox 網路執行此操作
答案3
您不需要額外的DHCP Server軟體,透過NAT網絡intnet
,我們可以設定VirtualBox dhcpserver
VBoxManage dhcpserver add --netname intnet --ip 10.13.13.100 --netmask 255.255.255.0 --lowerip 10.13.13.101 --upperip 10.13.13.254 --enable
從「設定」複製訪客 MAC 位址,如螢幕截圖所示
在我們的 dhcpserver 中,新增一個Individual Config
部分
VBoxManage dhcpserver modify --netname intnet --mac-address=080027D23E28 --fixed-address=10.13.13.254
PS 我記得 dhcpserver 未能分配我們子集範圍的第一個 IP 位址,然後我嘗試了最後一個 IP,它成功了,從那時起我只使用最後一個 IP 作為靜態。
重新啟動或啟動您的來賓虛擬機
在基於 Linux 的來賓上,您可以檢查 DHCP 是否分配了 IP,例如從終端
$ ip a
如果沒有看到IP釋放,則需要編輯適配器設定文件,例如
$ nano|vi /etc/sysconfig/network-scripts/ifcfg-[ethN|enp0sN]
通常添加可以修復此問題,ONBOOT=yes
當然還有重新啟動之一systemctl restart network
systemctl restart network.service
,shutdown -h now
:)reboot now