現象:兩台 CentOS (NAT) 互 ping 通,但無法 ping 通宿主機、外網 (如 8.8.8.8)。
排查順序 (由近及遠)
- ping 網關:`ping 192.168.x.2` (VMnet8 預設網關)。不通 → 虛擬網卡/NAT 服務異常。
- 檢查 `/etc/sysconfig/network-scripts/ifcfg-ens33`**
BOOTPROTO=static
IPADDR=192.168.100.10 # 同網段 192.168.100.0/24
NETMASK=255.255.255.0
GATEWAY=192.168.100.2 # 必須 = VMnet8 網關
DNS1=8.8.8.8
DNS2=114.114.114.114
- 兩台 VM **IP 最後一段不可重複**,網關、DNS 完全一致。
- 宿主機 VMnet8 虛擬網卡:
– 控制台 → 網路連線 → VMware Network Adapter VMnet8 → IPv4 → 固定 IP (如 192.168.100.1) / 子網路遮罩 255.255.255.0。**不要設定網關**。
– VMware 虛擬網路編輯器 → NAT 設定 → 閘道 IP = 192.168.100.2,子網路 IP = 192.168.100.0/24。
- NAT 服務與防火牆:
– 服務 `VMware NAT Service` 必須運行。
– 宿主機防火牆允許 `vmnat.exe`、`vmnetdhcp.exe` 出入。
– CentOS `firewall-cmd --add-service=dhcpv6-client --permanent` 等必要規則。
- 改用橋接模式驗證**
若 NAT 總是有問題,直接改 **Bridged (橋接)**:VM 直接獲取實體路由器 DHCP IP,與宿主機平級,上網零配置,最省事。
常見誤區
- 以為 VMnet8 IP 要設在 CentOS `GATEWAY` → **錯**,VMnet8 IP 是宿主機側介面,CentOS 閘道指向 **NAT 服務虛擬 IP (通常 .2)**。
- 兩台 CentOS 設同一 IP → IP 衝突,互 ping 可能通 (ARP 快取) 但上網極不穩。
- DNS 未設或設錯 → ping IP 通但域名解析失敗,誤以為斷網。
一鍵驗證腳本 (在 CentOS 執行)
#!/bin/bash
GW=$(ip route | awk '/default/ {print $3}')
echo "Gateway: $GW"
ping -c2 -W1 $GW >/dev/null && echo "GW 可達" || echo "GW 不可達"
ping -c2 -W1 8.8.8.8 >/dev/null && echo "外網 IP 可達" || echo "外網 IP 不可達"
ping -c2 -W1 www.baidu.com >/dev/null && echo "DNS 正常" || echo "DNS 異常"
cat /etc/resolv.conf
按順序檢查網關 → 虛擬網卡 → NAT 服務 → DNS,或直接改橋接模式,即可解決「內網互通但無法上網」的經典 NAT 問題。