VirtualBox: สองอินเตอร์เฟสเครือข่าย (NAT และโฮสต์อย่างเดียว) ในแขก Debian บน Ubuntu


48

ฉันสร้าง Debian VM บน VirtualBox ด้วยสองอินเทอร์เฟซ: หนึ่ง NAT (สำหรับการเข้าถึงอินเทอร์เน็ต) และโฮสต์อย่างเดียว อย่างไรก็ตามฉันไม่ทราบว่าจะทำให้อินเตอร์เฟสทั้งสองทำงานพร้อมกันได้อย่างไร ถ้าฉันกำหนดโฮสต์อย่างเดียวเป็นอะแดปเตอร์ 1 ฉันสามารถเข้าถึง VM ของฉันจากโฮสต์ แต่ไม่ใช่อินเทอร์เน็ต ถ้าฉันกำหนด NAT หนึ่งเป็นอะแดปเตอร์ 1 ฉันสามารถเข้าถึงอินเทอร์เน็ต แต่ไม่สามารถติดต่อเดเบียนแขกของฉันได้

ดังนั้นฉันจะทำให้ทั้งสองอินเตอร์เฟสทำงานร่วมกันได้อย่างไร

หมายเหตุ : ฉันยังคงพยายามแมปพอร์ตจากโฮสต์ของฉันไปยังพอร์ต SSH จากแขกของฉันดังนั้นจึงไม่จำเป็นต้องแนะนำให้ฉันทำ :)

แก้ไข : นี่คือผลลัพธ์ของ ifconfigเมื่ออะแดปเตอร์แรกเป็นโฮสต์เดียวเท่านั้น :

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:b2:45  
          inet addr:192.168.56.101  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:495 errors:0 dropped:0 overruns:0 frame:0
          TX packets:206 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:48187 (47.0 KiB)  TX bytes:38222 (37.3 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:8 errors:0 dropped:0 overruns:0 frame:0
          TX packets:8 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:560 (560.0 B)  TX bytes:560 (560.0 B)

นี่คือผลลัพธ์ของnetstat -nrเมื่ออะแดปเตอร์แรกเป็นโฮสต์เดียวเท่านั้น :

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.56.0    0.0.0.0         255.255.255.0   U         0 0          0 eth0

นี่คือผลลัพธ์ของifconfigเมื่ออะแดปเตอร์แรกคือNATหนึ่ง:

eth0      Link encap:Ethernet  HWaddr 08:00:27:f6:b2:45  
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fef6:b245/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:53 errors:0 dropped:0 overruns:0 frame:0
          TX packets:59 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:6076 (5.9 KiB)  TX bytes:5526 (5.3 KiB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:16 errors:0 dropped:0 overruns:0 frame:0
          TX packets:16 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:1664 (1.6 KiB)  TX bytes:1664 (1.6 KiB)

นี่คือผลลัพธ์ของnetstat -nrเมื่ออะแดปเตอร์แรกคือNATหนึ่ง:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
10.0.2.0        0.0.0.0         255.255.255.0   U         0 0          0 eth0
0.0.0.0         10.0.2.2        0.0.0.0         UG        0 0          0 eth0

คำตอบ:


48

วิธีการแก้ปัญหาค่อนข้างง่าย: ฉันแค่เพิ่มบรรทัดต่อไปนี้ในไฟล์ของเครื่องเสมือน Debian/etc/network/interfaces :

allow-hotplug eth1
iface eth1 inet dhcp

บรรทัดที่สองสั่งให้อินเทอร์เฟซเพื่อรับ IP ผ่าน DHCP บรรทัดแรกจะโหลดอินเตอร์เฟสในเวลาบูต

หากต้องการใช้การเปลี่ยนแปลงกับระบบที่กำลังทำงานให้เรียกใช้:

ifup eth1

ชื่อของeth1อินเทอร์เฟซอาจแตกต่างกันใช้ifconfig -aเพื่อแสดงรายการอินเทอร์เฟซที่มีอยู่ทั้งหมด

แก้ไข : เต็ม/etc/network/interfaces:

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
allow-hotplug eth0
iface eth0 inet dhcp

allow-hotplug eth1
iface eth1 inet dhcp

1
ฉันสามารถยืนยัน Debian /etc/network/interfacesไม่ได้ตั้งค่าอินเตอร์เฟซที่สองใน แก้ไขปัญหาของฉันขอบคุณ สำหรับการดีบักที่อาจเกิดขึ้นนี่คือสองอินเตอร์เฟส virtio ที่จัดทำโดย Virtualbox หนึ่งคืออินเทอร์เฟซ NAT ที่ใช้สำหรับการเข้าถึงอินเทอร์เน็ต (NATs มีให้เป็นรายบุคคลโดย vbox), อีกอันเป็นเครือข่ายเฉพาะโฮสต์ที่มี DHCP ในคลาส IP ส่วนตัวที่แตกต่างกันโดยสิ้นเชิง เวอร์ชันเดเบียนทดสอบ 6.0.6 x64
davolfman

คุณช่วยกรุณาโพสต์ทั้งหมดของคุณ / etc / network / interfaces ได้โปรด ได้รับการดิ้นรนกับสิ่งนี้เป็นเวลา 2 วันแล้ว
John Nicholas

@JohnNicholas เสร็จแล้ว โปรดทราบว่าคุณควรแก้ไขไฟล์แขก /etc/network/interfaces
brandizzi

ไชโยของฉันก็เหมือนกัน ปัญหาของฉันคือเมื่อฉันมีอะแดปเตอร์ NAT เป็นครั้งแรกใน vbox อะแดปเตอร์อื่น (โฮสต์) จะพยายามใช้เซิร์ฟเวอร์ dhcp บนอะแดปเตอร์นั้นและทุกอย่างจะผิดพลาด เมื่อฉันสั่งให้อะแดปเตอร์ใน vbox เป็นโฮสต์เท่านั้น NAT ทั้งหมดก็เริ่มทำงาน (โดยไม่คำนึงถึงการสั่งซื้อใน linux ที่น่าสนใจพอ) Netctl ไม่มีปัญหานี้ใน vm อื่น
John Nicholas

2
มันใช้งานได้ดีขอบคุณ! อย่างไรก็ตาม Ubuntu 18 ตอนนี้ใช้อินเทอร์เฟซใหม่ที่เรียกว่า "netplan" ความคิดใดวิธีการทำซ้ำข้างต้นใน netplan
yahermann

11

ฉันประสบปัญหาคล้ายกันกับ Ubuntu 14.04 VM ของฉันและวิธีแก้ปัญหาที่แนะนำโดย @brandizzi สำหรับ Debian ทำงานด้วยการเปลี่ยนแปลงเล็กน้อย

EDIT: file /etc/network/interfaces:


# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet dhcp

สำหรับ UBUNTU 16.04

เรียกใช้คำสั่ง

ifconfig -a

ค้นหาอินเทอร์เฟซใหม่เหมือนในกรณีของฉันมันคือ 'enp0s8'

EDIT file /etc/network/interfaces:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto enp0s3
iface enp0s3 inet dhcp

auto enp0s8
iface enp0s8 inet dhcp  

3
ตอนนี้ใช้ได้กับ Debian 9+ (การติดตั้ง Ubuntu 16)
Maksim Luzik

3

ควรกำหนดค่าอะแดปเตอร์ทั้งสองใน Debian

ดูเหมือนว่าในทั้งสองกรณีคุณมีอะแดปเตอร์เดียวเท่านั้นที่กำหนดค่าดังนั้นปัญหาของคุณ

สร้าง 2 อะแดปเตอร์ในการกำหนดค่า VirtualBox ของ VM ของคุณแล้วเริ่มต้น หากคุณเห็นอะแดปเตอร์ที่ตั้งค่าคอนฟิกเพียงหนึ่งเดียวเมื่อใช้ ifconfig (หนึ่ง eth0 เดียวไม่ต้องมี eth1 ด้วย) จากนั้นคุณควรใช้เครื่องมือกำหนดค่าเครือข่ายสำหรับ Debian (Network Manager, ifupdown ฯลฯ ) เพื่อกำหนดค่าทั้งสองอินเตอร์เฟสใน DHCP ดังนั้นคุณควรมี eth0 และ eth1 ใน DHCP


0

ตรวจสอบให้แน่ใจว่าคุณใช้ซับเน็ตพื้นที่ส่วนตัวที่แยกต่างหากสำหรับแต่ละอินเตอร์เฟส

ตัวอย่างเช่นสำหรับอินเทอร์เฟซที่เป็น NAT คุณสามารถใช้ที่อยู่ในพื้นที่ 192.168.0.0/16

อินเทอร์เฟซที่เป็น 'โฮสต์เท่านั้น' อาจอยู่ในพื้นที่ 10.0.0.0/24


พวกมันถูกแยกออก (พื้นที่ NAT ของฉันคือ 10.0.2.0/24 และ NAT ของฉันคือ 192.168.56.0/24)
brandizzi

คุณสามารถแก้ไขคำถามของคุณเพื่อรวมเอาท์พุทของifconfigและnetstat -nrเพื่อให้เราสามารถดูว่าอินเตอร์เฟซและการกำหนดเส้นทางมีการกำหนดค่า?
George M

ตกลงฉันเพิ่มเอาต์พุตของคำสั่งในคำถาม
brandizzi
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.