ท้าทาย : เพื่อรับ Debian VM (Virtualbox) หนึ่งรายการเพื่อกำหนดเส้นทางการรับส่งข้อมูลทั้งหมดผ่าน Debian VM (Paralles) อื่นทั้งคู่โฮสต์ภายใต้ OS X 10.11.5 ฉันลองมาหลายวันแล้วฉันหวังว่าคุณจะช่วยได้ที่นี่
schema:
vm1 (Virtualbox) ---> ( OS X ) --> vm2 (Parallels) --> internet
นี่คือสิ่งที่ฉันมี:
VM1 (“ ลูกค้า”):
- การตั้งค่าส่วนต่อประสาน eth1 กับเครือข่ายเฉพาะโฮสต์ภายใต้ Virtualbox รับที่อยู่ ip 192.168.56.103 กับ netmask 255.255.255.0
VM2 (“ เราเตอร์”):
การ์ด Wifi แนบโดยตรงกับ VM, อินเตอร์เฟส wlan0 ที่มี ip 10.251.26.168, เชื่อมต่อกับอินเทอร์เน็ต wlan0 จะเป็นส่วนต่อประสานขาออกของฉัน
การติดตั้งอินเตอร์เฟส eth0 เป็นโฮสต์เท่านั้นภายใต้ Parallels รับที่อยู่ IP 10.37.129.6 พร้อม netmask 255.255.255.0
บนโฮสต์:
- VM1 เชื่อมต่อกับอินเตอร์เฟส vboxnet0 พร้อม ip 192.168.56.1 VM2 เชื่อมต่อกับอินเตอร์เฟส vnic1 กับ ip 10.37.129.2
ด้วยการตั้งค่านี้ทำให้โฮสต์จาก VM และ viceversa ทำงานได้ดีอย่างสมบูรณ์ (บนเครือข่ายนั้น ๆ )
สิ่งที่ฉันทำไปแล้ว:
ภายใต้ระบบโฮสต์ OS X ฉันเปิดใช้งานการส่งต่อไอพีและเชื่อมต่ออินเตอร์เฟสเสมือนทั้งสองเข้าด้วยกัน:
bash-3.2# sysctl -w net.inet.ip.forwarding=1
net.inet.ip.forwarding: 1 -> 1
bash-3.2# ifconfig bridge0 create
bash-3.2# ifconfig vnic1 down
bash-3.2# ifconfig vboxnet0 down
bash-3.2# ifconfig bridge0 up addm vnic1 addm vboxnet0
bash-3.2# ifconfig vnic1 up
bash-3.2# ifconfig vboxnet0 up
bash-3.2# ifconfig bridge0
bridge0: flags=8863<UP,BROADCAST,SMART,RUNNING,SIMPLEX,MULTICAST> mtu 1500
options=3<RXCSUM,TXCSUM>
ether ba:e8:56:14:5f:00
Configuration:
id 0:0:0:0:0:0 priority 0 hellotime 0 fwddelay 0
maxage 0 holdcnt 0 proto stp maxaddr 100 timeout 1200
root id 0:0:0:0:0:0 priority 0 ifcost 0 port 0
ipfilter disabled flags 0x2
member: vnic1 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 14 priority 0 path cost 0
member: vboxnet0 flags=3<LEARNING,DISCOVER>
ifmaxaddr 0 port 12 priority 0 path cost 0
Address cache:
media: autoselect
status: active
bash-3.2# ifconfig vnic1
vnic1: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
options=3<RXCSUM,TXCSUM>
ether 00:1c:42:00:00:09
inet 10.37.129.2 netmask 0xffffff00 broadcast 10.37.129.255
media: autoselect
status: active
bash-3.2# ifconfig vboxnet0
vboxnet0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
ether 0a:00:27:00:00:00
inet 192.168.56.1 netmask 0xffffff00 broadcast 192.168.56.255
บน VM1 (“ ไคลเอนต์”) ฉันเพิ่มเกตเวย์เริ่มต้น:
root@vm1:~# ip route del 0/0
root@vm1:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.56.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1
root@vm1:~# route add default gw 192.168.56.1
root@vm1:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.56.1 0.0.0.0 UG 0 0 0 eth1
192.168.56.0 0.0.0.0 255.255.255.0 U 100 0 0 eth1
บน VM2 (“ เราเตอร์”) ฉันเปิดใช้งานการส่งต่อและตั้งค่า nat ip:
root@vm2:~# sysctl -w net.ipv4.ip_forward = 1
root@vm2:~# iptables -t nat -A POSTROUTING --out-interface wlan0 -j MASQUERADE
root@vm2:~# iptables -A FORWARD --in-interface eth0 -j ACCEPT
หลังจากนี้ฉันสามารถ ping จาก VM1 ถึง 192.168.56.1 และ 10.37.129.2 (IP ฝั่งโฮสต์สำหรับอะแดปเตอร์เครือข่ายเสมือน vboxnet0 และ vnic1 ตามลำดับ) แต่ฉันไม่สามารถ ping 10.37.129.6 ฉันยังล้มเหลวในการเข้าถึงอินเทอร์เน็ตจาก VM1 ถึง VM2 (จาก VM1 ping 8.8.8.8):
root@vm1:~# ping -c 1 192.168.56.1
PING 192.168.56.1 (192.168.56.1) 56(84) bytes of data.
64 bytes from 192.168.56.1: icmp_seq=1 ttl=64 time=1.54 ms
--- 192.168.56.1 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 1.543/1.543/1.543/0.000 ms
root@vm1:~# ping -c 1 10.37.129.2
PING 10.37.129.2 (10.37.129.2) 56(84) bytes of data.
64 bytes from 10.37.129.2: icmp_seq=1 ttl=64 time=0.208 ms
--- 10.37.129.2 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.208/0.208/0.208/0.000 ms
root@vm1:~# ping -c 1 10.37.129.6
PING 10.37.129.6 (10.37.129.6) 56(84) bytes of data.
--- 10.37.129.6 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
root@vm1:~# ping -c 1 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
--- 8.8.8.8 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms
ดังนั้นฉันไม่สามารถรับ VM1 เพื่อกำหนดเส้นทางปริมาณการใช้งานทั้งหมดผ่าน VM2 ... ฉันหายไปอะไร ??
ในกรณีที่ช่วยแก้ไขปัญหาได้ฉันเปิดใช้ wireshark บน vm2 ("เราเตอร์") เพื่อฟังอินเตอร์เฟสทั้งหมด เมื่อฉัน ping 10.37.129.6 จาก vm1 ฉันเห็นคำขอ ARP "ซึ่งเป็น 10.37.129.6 บอก 10.37.129.2" การตอบกลับ ARP ที่สอดคล้องกันและ ICMP ที่ตามมาที่เกิดจาก ip ของ vm1 (192.168.56.101) ดังนั้น OS X bridge ต้องเป็น การทำงาน แต่ฉันดูเหมือนจะไม่ได้รับคำตอบ ping กลับไปที่ vm1 ทั้งที่ฉันเห็นมันใน wireshark และเมื่อฉัน ping 8.8.8.8 จาก vm1 ฉันไม่เห็นอะไรเลยในเซสชัน wireshark ของ vm2
ขอบคุณมาก ๆ สำหรับความช่วยเหลือของคุณ.