ฉันใช้ Open vSwitch เพื่อสร้างเครือข่ายที่สับเปลี่ยนระหว่างเครื่องเสมือน guestBox และฉันต้องการให้โฮสต์ระบบปฏิบัติการ (Ubuntu 12.04) เข้าร่วมเครือข่ายนี้และกำหนดค่าให้เป็นเกตเวย์ของเครือข่ายเสมือนนี้:
ก่อนอื่นฉันสร้าง vswitch และฉันเพิ่มพอร์ตเพื่อแตะอุปกรณ์ (เครื่องเสมือนนั้นใช้เป็นบริดจ์เชื่อมต่อ):
ovs-vsctl add-br sw0
ovs-vsctl add-port sw0 tap0
หลังจากนั้นฉันตั้งค่า IP ของ Lubuntu 12.04 เครื่องเสมือน:
ifconfig eth0 192.168.1.3/24 up
route add -net 0.0.0.0/0 gw 192.168.1.1
ในด้านโฮสต์ระบบฉันยังตั้งที่อยู่ ip:
ifconfig sw0 192.168.1.1/24 up
ในเวลานี้ฉันสามารถ ping จาก Lubunut ไปยัง Ubunutu ได้ ฉันต้องการตอนนี้ในเครื่องโฮสต์เพื่อใช้ IP masquerade เพื่อส่งต่อการรับส่งข้อมูลจากเครือข่าย 192.168.1.0/24 ไปยังอินเทอร์เน็ตของฉัน (เชื่อมต่อกับอินเทอร์เน็ต):
sysctl -w net.ipv4.ip_forward=1
iptables -t nat -A POSTROUTING -o eth1 -s 192.168.1.0/24 -j MASQUERADE
ดังนั้นจาก Lubuntu (เครื่องเสมือน) ฉันสามารถ ping อินเทอร์เฟซ Ubuntu eth1 แต่ฉันไม่สามารถเข้าถึงเครือข่ายจริง (เช่นเกตเวย์บน LAN จริง) ฉันได้ลอง:
nslookup google.com
dig @8.8.8.8 yahoo.com
dig @192.168.30.1 google.com
โครงสร้างเครือข่าย
Internet (real gw) ------ Host OS -------- vswitch -------- VBox Guest 1
192.168.30.1 ip masquerade 192.168.1.0/24
|
------------ VBox Guest 2