เชื่อมต่อเปิดสวิตช์ vSwitch ไปยังเครือข่ายจริง: iptables masquerade


10

ฉันใช้ 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

กรุณาเพิ่มความคืบหน้าถ้าคุณมี ผมมีปัญหาเดียวกัน.
Masood_mj

คำตอบ:


1

คำตอบนั้นไม่ใช่ของฉันจริงๆ แต่ ... ลองทำตามOpen vSwitch บน VirtualBox

นอกจากนี้ยังมีไฟล์ข้อความสั้น ๆ จากคน Fedora บางคนในหัวข้อที่คล้ายกัน: libvirt และ OpenVSwitch ในรูปแบบของไฟล์ข้อความ ... ไม่สามารถค้นหาได้

ตามความคิดเห็นต่อไปนี้เป็นบทสรุปสั้น ๆ :

(1) สร้างอินเตอร์เฟส vnet0 และ br0 bridge:

ovs-vsctl add-br br0
ip tuntap add mode tap vnet0
ip link set vnet0 up
ovs-vsctl add-port br0 vnet0
ip link # (View the created interface)

(2) หมุน VM ที่ใช้อินเตอร์เฟส vnet0 (เป็นอะแดปเตอร์บริดจ์)

(3) เชื่อมต่อบริดจ์ br0 กับเครือข่ายจริง:

ovs-vsctl add-br br0 
ovs-vsctl add-port br0 eth0 
ovs-vsctl add-port br0 vnet0 
ifconfig eth0  0 && ifconfig br0 192.168.1.(X) netmask 255.255.255.0
route add default gw 192.168.1.1 br0
route del default gw 192.168.1.1 eth0

เนื่องจากคุณกำลังเชื่อมโยงไปยังบทความภายนอกที่อาจมีการเปลี่ยนแปลงขอแนะนำให้สรุปวิธีแก้ปัญหาในคำตอบของคุณและอ้างอิงบทความแทน
Esa Jokinen

0

เปิดใช้งานการส่งต่อเมื่อรีบูตโดยยกเลิกการแสดงความคิดเห็นบรรทัดเหล่านี้ใน/etc/sysctl.conf :

net.ipv4.ip_forward=1
net.ipv6.conf.all.forwarding=1
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.