標題:
VirtualBox + CentOS:啟用 DHCP 獲取 IPv4 地址
日期:
2025-07-18
一、問題現象
最小化安裝的 CentOS 7 虛擬機里敲:
ip addr
輸出只有 lo
的 127.0.0.1
以及 enp0s3
的 IPv6 鏈路本地地址,沒有 IPv4,于是就有了本文。
二、先別急著 dhclient
,三步排除“配置錯誤”
經驗:90 % 的“沒 IP”都不是 DHCP 服務器的問題,而是下面三件事之一。
? Step 1:虛擬機網卡真的“插上線”了嗎?
VirtualBox / VMware / Hyper-V 通用 checklist:
- 右側小電視圖標 → “連接”必須打勾
- 網絡模式:
- 想直接上網 → 選 NAT
- 想跟宿主機同網段 → 選 橋接
- 改完必須 重啟虛擬機 才能生效
? Step 2:CentOS 配置里把 DHCP 關掉了?
打開網卡配置文件:
sudo vi /etc/sysconfig/network-scripts/ifcfg-enp0s3
確保下面兩行存在且沒有被注釋:
BOOTPROTO=dhcp
ONBOOT=yes
如果剛剛改過,保存后:
sudo systemctl restart network
? Step 3:接口本身是不是 DOWN?
ip link
如果看到 state DOWN
,手動拉起:
sudo ip link set enp0s3 up
此時再 ip addr
,大概率已經有 inet …/24
了;如果仍舊沒有,再繼續往下看。
三、確認 DHCP 服務器是否真的給了地址
到這里,99 % 的“低級錯誤”已經排除,我們才需要“抓包”一樣地去跟 DHCP 握手。
手動觸發一次 DHCP 過程
sudo dhclient -v enp0s3
觀察輸出:
- 看到
DHCPACK from 192.168.x.1
就 OK - 若長時間卡在
DHCPDISCOVER
無回應,說明:
可能原因 | 排查方法 |
---|---|
虛擬機網絡模式選成“僅主機” | 回到 Step 1 改橋接/NAT |
宿主機防火墻/公司網絡屏蔽 DHCP | 換網絡或手動設靜態 IP |
DHCP 地址池耗盡 | 讓網管查服務器 |
四、一條命令自檢腳本
把下面腳本保存成 netcheck.sh
,一鍵輸出所有關鍵信息:
#!/usr/bin/env bash
set -e
echo "=== Link status ==="
ip -br link
echo -e "\n=== Address status ==="
ip -br addr
echo -e "\n=== Route status ==="
ip route || true
echo -e "\n=== DHCP retry ==="
sudo dhclient -v $(ip -o link | awk -F': ' '$2!="lo"{print $2}' | head -n1)
五、總結金句
“ip addr 沒 IP地址”問題 ,
先看 虛擬機網卡插沒插線,再看 配置文件寫沒寫對,
最后才讓 DHCP 跑起來。
六、參考資料
- Red Hat 官方文檔:Configuring IP Networking
- man page:
man ip
,man dhclient
如果這篇文章幫到了你,歡迎點贊、轉發、留言討論!