eth1 (172.16.0.0/24) 接入網際網路。10.1.1.0/24 (Gateway: 10.1.1.1),VM 可直接上網。10.20.40.0/24 (Gateway: 10.20.40.254),VM 僅能透過子網段 A VM 轉發上網。# /etc/xen/xend-config.sxp
#(vif-script vif-bridge) # 註釋橋接
(vif-script vif-nat) # 啟用 NAT
# 無線網卡 - 上游連線
auto eth1
allow-hotplug eth1
iface eth1 inet dhcp
gateway 172.16.0.254
dns-nameservers 8.8.4.4
# 子網段 A Gateway - 使用 dummy0
auto dummy0
iface dummy0 inet static
address 10.1.1.1
netmask 255.255.255.0
# 子網段 B Gateway - 使用 dummy0:0 別名 (關鍵技巧)
auto dummy0:0
iface dummy0:0 inet static
address 10.20.40.254
netmask 255.255.255.0
注意:嘗試建立 dummy1 會導致網路重啟失敗,使用 dummy0:0 別名介面是可行方案。
# 子網段 A 上網
iptables -A POSTROUTING -s 10.1.1.0/24 -o eth1 -j MASQUERADE
# 子網段 B 需透過子網段 A 轉發,確保 IP 轉發已開啟
echo 1 > /proc/sys/net/ipv4/ip_forward
vif = [ 'ip=10.1.1.11', 'ip=10.20.40.2' ] # 雙網卡:一張連子網A,一張作為子網B Gateway
VM 內部需配置靜態 IP、啟用 IP 轉發、設定 iptables 為子網段 B 做 SNAT。
vif = [ 'ip=10.20.40.10' ] # 單網卡,Gateway 指向 10.20.40.254 (Dom0 dummy0:0)
/etc/xen/*.cfg 中 vif 宣告的 IP 必須與 VM 內部 /etc/network/interfaces 設定完全一致,否則封包會被丟棄 (現象:Dom0 收到回應封包但 VM 收不到)。ifconfig -a 檢視 vifX.Y 虛擬介面狀態與計數器。