ดังนั้นฉันจึงมีปัญหากับการตั้งค่า 'hashicorp / precision64' ของ Vagrant ในหนังสือ Mac ของฉัน
ก่อนอื่นให้กำหนดค่าของฉัน:
VAGRANTFILE_API_VERSION = "2" Vagrant.configure (VAGRANTFILE_API_VERSION) do | config | config.vm.box = "hashicorp / precision64" config.vm.network "public_network", ประเภท: "dhcp",: bridge => 'en4: Thunderbolt Ethernet' config.vm.hostname = "mddirector" ปลาย
นี่คือ oupput ของ 'คนจรจัดขึ้น'
==> ค่าเริ่มต้น: กำลังพยายามปิดระบบ VM ...
==> ค่าเริ่มต้น: กำลังตรวจสอบว่ากล่อง 'hashicorp / precision64' เป็นข้อมูลล่าสุดหรือไม่
==> ค่าเริ่มต้น: การล้างพอร์ตที่ส่งต่อที่ตั้งไว้ก่อนหน้านี้ ...
==> ค่าเริ่มต้น: การล้างการเชื่อมต่อเครือข่ายที่ตั้งไว้ก่อนหน้านี้ ...
==> ค่าเริ่มต้น: กำลังเตรียมการเชื่อมต่อเครือข่ายตามการกำหนดค่า ...
เริ่มต้น: อะแดปเตอร์ 1: nat
เริ่มต้น: อะแดปเตอร์ 2: bridged
==> ค่าเริ่มต้น: การส่งต่อพอร์ต ...
เริ่มต้น: 22 => 2222 (อะแดปเตอร์ 1)
==> ค่าเริ่มต้น: กำลังบูต VM ...
==> ค่าเริ่มต้น: กำลังรอให้เครื่องบูต นี้อาจใช้เวลาไม่กี่นาที...
เริ่มต้น: ที่อยู่ SSH: 127.0.0.1:2222
เริ่มต้น: ชื่อผู้ใช้ SSH: คนพเนจร
เริ่มต้น: วิธีการรับรองความถูกต้อง SSH: คีย์ส่วนตัว
เริ่มต้น: คำเตือน: การหมดเวลาการเชื่อมต่อ ลองอีกครั้ง ...
==> ค่าเริ่มต้น: เครื่องบูทและพร้อมใช้งาน!
GuestAdditions 4.3.10 ทำงาน --- ตกลง
==> ค่าเริ่มต้น: กำลังตรวจสอบการเพิ่มของผู้เยี่ยมชมใน VM ...
==> ค่าเริ่มต้น: การตั้งค่าชื่อโฮสต์ ...
==> ค่าเริ่มต้น: การกำหนดค่าและเปิดใช้งานการเชื่อมต่อเครือข่าย ...
==> ค่าเริ่มต้น: กำลังติดตั้งโฟลเดอร์ที่แชร์ ...
เริ่มต้น: / vagrant => / ผู้ใช้ / garthm / โครงการ / คนจรจัด
==> ค่าเริ่มต้น: เครื่องเตรียมไว้แล้ว เรียกใช้ `บทบัญญัติคนจรจัด 'หรือใช้` - จัดเตรียม'
==> ค่าเริ่มต้น: เพื่อบังคับใช้การจัดเตรียม ผู้ให้บริการที่ทำเครื่องหมายว่าให้ทำงานตลอดเวลาจะยังคงทำงานอยู่
'ifconfig' จะแสดงสิ่งต่อไปนี้:
vagrant @ mddirector: ~ $ ifconfig
eth0 ลิงค์ encap: อีเธอร์เน็ต HWaddr 08: 00: 27: 88: 0c: a6
inet addr: 10.0.2.15 Bcast: 10.0.2.255 Mask: 255.255.255.0
inet6 addr: fe80 :: a00: 27ff: fe88: ca6 / 64 ขอบเขต: ลิงก์
ออกอากาศแบบมัลติคาสต์วิ่ง MTU: 1500 เมตริก: 1
RX แพ็กเก็ต: 725 ข้อผิดพลาด: 0 ลดลง: 0 overruns: 0 เฟรม: 0
แพ็กเก็ต TX: 544 ข้อผิดพลาด: 0 ลดลง: 0 overruns: 0 ผู้ให้บริการ: 0
การชน: 0 txqueuelen: 1,000
จำนวนไบต์: 90824 (90.8 KB) TX ไบต์: 63375 (63.3 KB)
eth1 ลิงก์ encap: อีเทอร์เน็ต HWaddr 08: 00: 27: 2f: bb: 6a
inet addr: 10.0.24.118 Bcast: 10.0.31.255 Mask: 255.255.248.0
ออกอากาศแบบมัลติคาสต์วิ่ง MTU: 1500 เมตริก: 1
แพ็คเก็ต RX: ข้อผิดพลาด 3490: 0 ลดลง: 0 overruns: 0 เฟรม: 0
แพ็กเก็ต TX: 7 ข้อผิดพลาด: 0 ลดลง: 0 overruns: 0 ผู้ให้บริการ: 0
การชน: 0 txqueuelen: 1,000
จำนวนไบต์: 345981 (345.9 KB) TX ไบต์: 1102 (1.1 KB)
lo Link encap: Local Loopback
inet addr: 127.0.0.1 รูปแบบ: 255.0.0.0
inet6 addr: :: 1/128 ขอบเขต: โฮสต์
การเรียกใช้ LOOPBACK RUNNING MTU: 16436 เมตริก: 1
แพ็กเก็ต RX: 0 ข้อผิดพลาด: 0 ลดลง: 0 overruns: 0 เฟรม: 0
แพ็กเก็ต TX: 0 ข้อผิดพลาด: 0 ลดลง: 0 overruns: 0 ผู้ให้บริการ: 0
การชนกัน: 0 txqueuelen: 0
จำนวนไบต์: 0 (0.0 B) TX ไบต์: 0 (0.0 B)
ปัญหาของฉันคือว่าฉันสามารถ ping VM จากเครื่องโฮสต์ของฉัน ( IP: 10.0.24.112) คนอื่นสามารถ ping VM ของฉันด้วย ( 10.0.24.XXX), VM ของฉันสามารถ ping devbox ของฉัน ( IP: 10.10.116.254), ฉันสามารถ ping การตั้งค่าเครื่องเสมือนของนักพัฒนาซอฟต์แวร์อื่นจาก devbox ของฉัน ( ไม่ใช่ Vagrant, IP: 10.10.116.254แต่ฉันไม่สามารถ ping VM ของฉันจาก devbox ของฉันและผู้พัฒนารายอื่นไม่สามารถ ping VM ของฉันจาก devbox ของพวกเขา
การตั้งค่าเครื่องเสมือนที่พวกเขามีอยู่กับ Bridged NIC เท่านั้น แต่คนจรจัดด้วยเหตุผลบางอย่างมีทั้ง NAT และ Bridged แม้ว่าฉันจะระบุ bridged ใน config อย่างที่คุณเห็นมีสองที่อยู่ IP สำหรับ Vagrant VM ซึ่งดูไม่ถูกต้อง คุณสามารถเมื่อบูทขึ้นมันจะส่งต่อพอร์ตบนอะแด็ปเตอร์ 1 ซึ่งเป็นอะแดปเตอร์ NAT ซึ่งหมายความว่าดูเหมือนว่ามันใช้อะแดปเตอร์ NAT เป็นค่าเริ่มต้นสำหรับทุกสิ่ง
ฉันจะกำจัดอะแดปเตอร์ NAT และใช้บริดจ์ได้อย่างไร
หากฉันแก้ไขการตั้งค่า VirtualBox และปิดการใช้งานอะแดปเตอร์ NAT ดังนั้นจึงมีเพียงบริดจ์เชื่อมต่ออะแดปเตอร์และบูตกล่องผ่าน VirtualBox (เช่น: ไม่ได้ใช้คนจรจัดขึ้น) จากนั้นจะมี eth0 พร้อมที่อยู่ IP ที่ pingable จาก devbox ของฉัน ซึ่งเป็นสิ่งที่ฉันกำลังมองหา ถ้าฉันลองและคล้อยตามกล่องหลังจากแก้ไขการตั้งค่า VirtualBox และปิดใช้งานอะแดปเตอร์ NAT ฉันได้รับข้อผิดพลาดต่อไปนี้:
มีข้อผิดพลาดขณะดำเนินการ `VBoxManage 'ซึ่งเป็น CLI ที่ใช้โดย Vagrant สำหรับการควบคุม VirtualBox คำสั่งและ stderr แสดงอยู่ด้านล่าง คำสั่ง: ["modifiedvm", "7f1c12f7-74cd-4c6b-aa5a-16d6209cf2b3", "--natpf1", "ssh, tcp, 127.0.0.1,2222, 22"] Stderr: VBoxManage: ข้อผิดพลาด: มีกฎ NAT ของชื่อนี้อยู่แล้ว VBoxManage: ข้อผิดพลาด: รายละเอียด: รหัส NS_ERROR_INVALID_ARG (0x80070057), ส่วนประกอบ NATEngine, ส่วนต่อประสาน INATEngine, callee nsISupports VBoxManage: ข้อผิดพลาด: บริบท: "AddRedirect (Bstr (strName) .raw (), proto, Bstr (strHostIp) .raw (), RTStrToUInt16 (strHostPort), Bstr (strGuestIp) บรรทัด 1655 ของไฟล์ VBoxManageModifyVM.cpp
หากฉันทำคนพเนจรทันทีอีกครั้งก็เปิดใช้งานอะแดปเตอร์ NAT อีกครั้งและเรากลับไปพบปัญหาเดิมอีกครั้ง