Vì vậy, tôi đang gặp vấn đề với thiết lập Vagrant của 'hashicorp / precision64' trên cuốn sách MAC của mình.
Đầu tiên, cấu hình của tôi:
VAGRANTFILE_API_VERSION = "2" Vagrant.configure (VAGRANTFILE_API_VERSION) làm | config | config.vm.box = "hashicorp / precision64" config.vm.network "public_network", gõ: "dhcp" ,: cầu => 'en4: Thunderbolt Ethernet' config.vm.hostname = "mddirector" kết thúc
Đây là sự khởi đầu của 'vagrant up'
==> mặc định: Cố gắng tắt VM duyên dáng ... ==> mặc định: Kiểm tra xem hộp 'hashicorp / precision64' có được cập nhật không ... ==> mặc định: Xóa mọi cổng được chuyển tiếp trước đó ... ==> mặc định: Xóa mọi giao diện mạng được đặt trước đó ... ==> mặc định: Chuẩn bị giao diện mạng dựa trên cấu hình ... mặc định: Bộ chuyển đổi 1: nat mặc định: Bộ chuyển đổi 2: bắc cầu ==> mặc định: Chuyển tiếp cổng ... mặc định: 22 => 2222 (bộ chuyển đổi 1) ==> mặc định: Khởi động VM ... ==> mặc định: Đang chờ máy khởi động. Có thể sẽ mất vài phút... mặc định: địa chỉ SSH: 127.0.0.1:2222 mặc định: tên người dùng SSH: vagrant mặc định: phương thức SSH auth: khóa riêng mặc định: Cảnh báo: Hết thời gian kết nối. Đang thử lại ... ==> mặc định: Máy đã khởi động và sẵn sàng! GuestAdditions 4.3.10 đang chạy --- OK. ==> mặc định: Kiểm tra bổ sung của khách trong VM ... ==> mặc định: Đặt tên máy chủ ... ==> mặc định: Định cấu hình và bật giao diện mạng ... ==> mặc định: Gắn thư mục dùng chung ... mặc định: / vagrant => / Users / garthm / Project / vagrant ==> mặc định: Máy đã được cung cấp. Chạy `cung cấp vagrant` hoặc sử dụng` --provision` ==> mặc định: để buộc cung cấp. Nhà cung cấp được đánh dấu để chạy luôn sẽ vẫn chạy.
'ifconfig' hiển thị như sau:
vagrant @ mddirector: ~ $ ifconfig eth0 Liên kết mã hóa: Ethernet HWaddr 08: 00: 27: 88: 0c: a6 inet addr: 10.0.2.15 Bcast: 10.0.2.255 Mặt nạ: 255.255.255.0 inet6 addr: fe80 :: a00: 27ff: fe88: ca6 / 64 Phạm vi: Liên kết UP MADICAST RUNNING MULTICAST MTU: 1500 Số liệu: 1 Các gói RX: 725 lỗi: 0 rớt: 0 tràn: 0 khung: 0 Các gói TX: 544 lỗi: 0 rớt: 0 tràn: 0 sóng mang: 0 va chạm: 0 txqueuelen: 1000 Các byte RX: 90824 (90,8 KB) byte TX: 63375 (63,3 KB) Liên kết mã hóa eth1: Ethernet HWaddr 08: 00: 27: 2f: bb: 6a inet addr: 10.0.24.118 Bcast: 10.0.31.255 Mặt nạ: 255.255.248.0 UP MADICAST RUNNING MULTICAST MTU: 1500 Số liệu: 1 Các gói RX: 3490 lỗi: 0 rớt: 0 tràn: 0 khung: 0 Các gói TX: 7 lỗi: 0 rớt: 0 tràn: 0 sóng mang: 0 va chạm: 0 txqueuelen: 1000 Các byte RX: 345981 (345,9 KB) TX byte: 1102 (1.1 KB) lo Liên kết mã hóa: Loopback cục bộ inet addr: 127.0.0.1 Mặt nạ: 255.0.0.0 inet6 addr: :: 1/128 Phạm vi: Máy chủ LÊN LOOPBACK CHẠY MTU: 16436 Số liệu: 1 Các gói RX: 0 lỗi: 0 rớt: 0 tràn: 0 khung: 0 Các gói TX: 0 lỗi: 0 rớt: 0 tràn: 0 sóng mang: 0 va chạm: 0 txqueuelen: 0 Các byte RX: 0 (0,0 B) TX byte: 0 (0,0 B)
Vấn đề của tôi là, tôi có thể ping máy ảo từ máy chủ của mình ( IP: 10.0.24.112
), người khác cũng có thể ping máy ảo của tôi ( 10.0.24.XXX
), máy ảo của IP: 10.10.116.254
tôi có thể ping máy phát điện của tôi () không phải Vagrant, IP: 10.10.116.254
), nhưng tôi không thể ping VM từ devbox của mình và các nhà phát triển khác không thể ping VM của tôi từ devbox của họ.
Các thiết lập máy ảo mà họ có chỉ có một Bridged NIC, nhưng vì lý do nào đó, cả hai đều có cả NAT và Bridged, mặc dù, tôi đã chỉ định bắc cầu trong cấu hình. Như bạn có thể thấy, có hai địa chỉ IP cho Vagrant VM, có vẻ không đúng. Bạn cũng có thể, khi nó khởi động, nó sẽ chuyển tiếp cổng trên Bộ điều hợp 1, đó là bộ điều hợp NAT, có nghĩa là nó có vẻ như đang sử dụng bộ điều hợp NAT theo mặc định cho mọi thứ.
Làm cách nào để thoát khỏi bộ điều hợp NAT và chỉ sử dụng cầu nối?
Nếu tôi chỉnh sửa cài đặt VirtualBox và vô hiệu hóa bộ điều hợp NAT, thì chỉ có Bộ điều hợp được bắc cầu và khởi động hộp thông qua VirtualBox (tức là: không sử dụng vagrant up), thì nó chỉ có eth0 với địa chỉ IP có thể ping được từ hộp thư của tôi , đó là những gì tôi đang tìm kiếm. Nếu tôi thử và làm mờ hộp sau khi chỉnh sửa cài đặt VirtualBox và vô hiệu hóa bộ điều hợp NAT, tôi sẽ gặp lỗi sau:
Đã xảy ra lỗi khi thực thi `VBoxManage`, CLI được sử dụng bởi Vagrant để kiểm soát VirtualBox. Lệnh và thiết bị lỗi chuẩn được hiển thị bên dưới. Lệnh: " Stderr: VBoxManage: error: Đã tồn tại quy tắc NAT của tên này VBoxManage: lỗi: Chi tiết: mã NS_ERROR_INVALID_ARG (0x80070057), thành phần NATEngine, giao diện INATEngine, callee nsISupports VBoxManage: error: Context: "AddRedirect (Bstr (strName) .raw (), proto, Bstr (strhostIp) .raw (), RTStrToUInt16 (strhostPort), Bstr (strGuestIp) .raw (), RTStr dòng 1655 của tệp VBoxManageModifyVM.cpp
Nếu tôi ngay lập tức thực hiện lại một lần nữa, nó đã kích hoạt lại bộ điều hợp NAT một lần nữa và chúng tôi lại gặp vấn đề tương tự.