ดังนั้นฉันจึงมีปัญหากับการตั้งค่า '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 อีกครั้งและเรากลับไปพบปัญหาเดิมอีกครั้ง