วิธีการตั้งค่าเครือข่าย NAT และโฮสต์อย่างเดียวพร้อมที่อยู่ IP แบบคงที่ใน VirtualBox


22

ฉันกำลังพยายามที่จะตั้งค่าแขกใน VirtualBox เช่นที่พวกเขาแต่ละคนสามารถเข้าถึงอินเทอร์เน็ตเช่นเดียวกับที่สามารถมองเห็นซึ่งกันและกันและโฮสต์ ฉันยังต้องการให้แขกมีที่อยู่ IP แบบคงที่

นี่คือขั้นตอนที่ฉันได้ปฏิบัติตามจนถึง:

  1. ปิดคุณสมบัติเซิร์ฟเวอร์ DHCP ของเครือข่ายโฮสต์เท่านั้นที่จะใช้ในการตั้งค่านี้
  2. เปลี่ยนที่อยู่ IP ที่กำหนดให้กับโฮสต์เป็น 192.168.56.254
  3. สร้างเครื่องแขกรับเชิญพร้อมการ์ดเครือข่ายอินเทอร์เฟซ 2 ใบ (NIC)
  4. กำหนดค่า NIC ตัวที่ 1 ให้ใช้ NAT
  5. กำหนดค่า NIC ตัวที่ 2 ให้ใช้งานเครือข่ายแบบด่วนเท่านั้น
  6. ติดตั้งระบบปฏิบัติการ (Ubuntu Server 13.10) ในแต่ละระบบ
  7. อัปเดตระบบปฏิบัติการ
  8. กำหนดค่าเครือข่ายดังต่อไปนี้โดยการแก้ไข / etc / network / interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254
dns-search cloudspace.local
dns-nameservers 8.8.8.8 8.8.4.4
  1. บันทึกไฟล์
  2. Reboot

เมื่อแขกบูตอีกครั้งเครือข่ายเฉพาะโฮสต์ทำงานได้ดี คู่ของโฮสต์ / แขกและแขก / แขก / แขกสามารถปิงซึ่งกันและกันอย่างไรก็ตามอินเทอร์เน็ตไม่ทำงานตามที่apt-getล้มเหลว

หากฉันออกservice networking restartคำสั่งเครือข่ายก็จะเริ่มทำงานตามที่ควรจะเป็น

ผมทำอะไรผิดหรือเปล่า?

ฉันได้ลองเปลี่ยนลำดับที่ NICs ปรากฏใน/etc/network/interfacesไฟล์ ฉันได้เปลี่ยนเครือข่าย NAT / Host-Only รอบ ๆ ระหว่าง 2 NIC ไม่มีอะไรทำงาน

โฮสต์คือ Windows 8.1 และแขกคือ Ubuntu Server 13.10 ฉันลองแบบเดียวกันใน Mac OS X ด้วยผลลัพธ์ที่คล้ายกัน

ฉันขอขอบคุณความช่วยเหลือในเรื่องนี้อย่างมาก

ปรับปรุง:

ฉันได้รวมเอาท์พุทจากคำสั่งต่อไปนี้ด้านล่างเพื่อช่วยในการวินิจฉัย:

  • cat / etc / network / interfaces
  • ifconfig -a
  • เส้นทาง
$ cat /etc/network/interfaces
auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0
network 192.168.56.0
broadcast 192.168.56.255
gateway 192.168.56.254

$ ifconfig -a
eth0      Link encap:Ethernet  HWaddr 08:00:27:75:47:64
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe75:4764/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:2 errors:0 dropped:0 overruns:0 frame:0
          TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:1180 (1.1 KB)  TX bytes:1332 (1.3 KB)

eth1      Link encap:Ethernet  HWaddr 08:00:27:93:98:d8
          inet addr:192.168.56.1  Bcast:192.168.56.255  Mask:255.255.255.0
          inet6 addr: fe80::a00:27ff:fe93:98d8/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:140 errors:0 dropped:0 overruns:0 frame:0
          TX packets:225 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:14418 (14.4 KB)  TX bytes:27378 (27.3 KB)

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:65536  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:1184 (1.1 KB)  TX bytes:1184 (1.1 KB)

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.56.254  0.0.0.0         UG    0      0        0 eth1
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

อัปเดต 2:

หลังจากที่ฉันดำเนินsudo service networking restartการผลลัพธ์จากการroute -nกลายเป็น:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         10.0.2.2        0.0.0.0         UG    0      0        0 eth0
10.0.2.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.56.0    0.0.0.0         255.255.255.0   U     0      0        0 eth1

ดังนั้นฉันจะมั่นใจได้อย่างไรว่าการกำหนดค่านี้ในการบูต

คำตอบ:


16

การแก้ไขปัญหาของคุณจะง่ายขึ้นหากคุณโพสต์ผลลัพธ์ที่คุณได้รับเมื่อพยายาม ping ที่อยู่ภายนอก (เช่นเซิร์ฟเวอร์ Google DNS ที่คุณใช้) การตั้งค่าเครือข่ายปัจจุบันและตารางเส้นทางของคุณ

/sbin/ifconfig -a
/sbin/route -n

นี่เป็นการถ่ายภาพในที่มืด แต่การเดาของฉันก็คือ a) คุณไม่ได้รับที่อยู่ DHCP ใน eth0 หรือ b) การตั้งค่าเกตเวย์ของคุณสำหรับ eth1 นั้นยุ่งกับเส้นทางเริ่มต้นที่กำหนด DHCP

หากคุณไม่ได้รับที่อยู่ DHCP สำหรับ eth0 นั่นอาจเป็นความผิดพลาดใน VirtualBox (เช่นทำให้การ์ดของคุณถอยหลัง)

ไม่ว่าจะด้วยวิธีใดคุณไม่จำเป็นต้องตั้งค่าเกตเวย์หรือ DNS เฉพาะสำหรับ eth1 เนื่องจากจะได้รับมอบหมายจาก DHCP ใน eth0 ดังนั้นฉันจะลบเกตเวย์ dns-search และบรรทัด dns-nameservers ออกจาก config ของคุณ เครื่องเสมือนของคุณจะยังคงสามารถสื่อสารได้โดยไม่ต้องตั้งค่าเกตเวย์หากอยู่ในเครือข่ายเดียวกันและตั้งค่า VirtualBox ไว้

แก้ไข:เพื่อให้แน่ใจว่าคุณไม่มีเกตเวย์บน eth1 หลังจากรีบูตให้ลบบรรทัดออกจากบล็อก eth1 ของคุณเพื่อให้มีลักษณะดังนี้:

auto eth1
iface eth1 inet static
address 192.168.56.1
netmask 255.255.255.0

เมื่อเสร็จแล้วคุณจะไม่มีเส้นเกตเวย์ในไฟล์อินเตอร์เฟสของคุณ


ฉันได้เพิ่มการวินิจฉัยตามที่คุณแนะนำ ฉันคิดว่าคำตอบที่ถูกต้องคือ (b) เช่นการตั้งค่าเกตเวย์eth1กำลังยุ่งกับ DHCP เส้นทางเริ่มต้นที่กำหนด มีวิธีแก้ปัญหานี้หรือไม่?
Umar Farooq Khawaja

1
ฉันได้แก้ไขคำตอบของฉันเพื่อแสดงให้เห็นว่าบล็อก eth1 ของคุณควรมีลักษณะอย่างไรในไฟล์อินเตอร์เฟส คุณไม่ต้องการเครือข่ายหรือสายออกอากาศและคุณไม่ควรมีสายเกตเวย์ ลบทั้งสาม
jkt123

3

ฉันคิดวิธีแก้ปัญหานี้ซึ่งเหมือนกับคำตอบของ @ jkt123 และคำถามของ @ Umar แต่สั้นกว่า ฉันขอขอบคุณข้อเสนอแนะเกี่ยวกับมัน!

ใน Virtualbox ให้เปิดใช้งานทั้ง NAT และเครือข่ายเฉพาะโฮสต์ (BTW: มันทำงานบนโฮสต์ win7 ของฉันฉันไม่ทราบวิธีการทำเช่นนั้นในโฮสต์ Linux)

บนโฮสต์ - ค้นหา ip ของอินเทอร์เฟซ "โฮสต์เท่านั้น"

ipconfig /all     # for windows host
ifconfig -a       # for linux host

ในแขก, แก้ไข / เคล็ดลับคือการกลับคำสั่ง eth1 (โฮสต์เท่านั้น) มาก่อน eth0 (อินเทอร์เน็ต / dhcp) ฉันไม่รู้ว่าทำไม

auto lo                        # keep the original loopback settings
iface lo ...                   # yeah, i don't remember, just keep it.

# ----> Ok, this is my addition <-----
auto eth1                      
allow-hotplug eth1             # i think hotplug it helps. not sure.
iface eth1 inet static
address 192.168.56.100         # arbitrary IP address between 2 and 254

auto eth0                      # This is the original content
iface eth0 inet dhcp           #  of this file, now at the end.

รีบูต


0

ครั้งแรกของทั้งหมดที่ฉันเปิดการใช้งานเครือข่ายทั้ง NAT กับ DHCP static ip add 192.168.40.41และโฮสต์เพียงเครือข่ายที่มี

จากนั้นฉันตามด้วยคำสั่งนี้:

nano cat /etc/network/interfaces

ฉันได้รับผลลัพธ์นี้:

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp

auto eth1
iface eth1 inet static
address 192.168.41.4
netmask 255.255.255.0

และก่อนที่จะรีบูตเครื่องฉันพิมพ์คำสั่งต่อไปนี้:

sudo service networking restart

รีบูตแล้ว

หลังจากฉันโหลดไปที่ VM VirtualBox เครือข่ายทั้งสองทำงาน ฉันสามารถเชื่อมต่ออินเทอร์เน็ตและสามารถเชื่อมต่อ192.168.40.41ผ่านเว็บเบราว์เซอร์

ฉันหวังว่านี่จะเป็นประโยชน์ในการรับnanoโปรแกรมแก้ไข:

sudo apt-get update
sudo apt-get install nano

จากนั้นเพียงพิมพ์nanoเทอร์มินัลเพื่อเริ่ม


0

คุณมีเกตเวย์เริ่มต้นหลายรายการที่กำหนดให้กับ NIC ต่างๆ โดยทั่วไป "ค่าเริ่มต้น" หมายถึงตัวเลือกที่เลือกไว้ล่วงหน้า ในกรณีนี้หากมีการกำหนดเกตเวย์เริ่มต้นที่ระบุให้กับทั้ง NICs จะไม่เป็นตัวเลือกที่เลือกไว้ล่วงหน้า นอกจากนี้สิ่งนี้ยังส่งผลให้เกิดปัญหาการสื่อสารเช่นการกำหนดเส้นทางแบบอะซิงโครนัส ฉันไม่แน่ใจว่าการวัดของอินเทอร์เฟซทั้งสองนั้นถูกตั้งค่าเป็น 0 แต่อาจเป็นเพราะ NIC ทั้งสองมีเกตเวย์ การเขียนบทความของ Microsoft เกี่ยวกับสิ่งนี้ตั้งอยู่ที่นี่และคุณลักษณะการวัดมีหลายปัจจัยที่ให้วิธีการกำหนดลำดับความสำคัญ (ลิงก์: https://support.microsoft.com/en-us/help/299540/an-explanation-of-the-automatic-metric-feature-for-ipv4-routes )

ตามข้อตกลงกับ @ jkt123 ในการตอบกลับที่ตอบกลับมีเกตเวย์เริ่มต้นเพียง 1 ตัวเท่านั้นที่ควรกำหนด

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