Kết nối với máy chủ từ hệ điều hành khách VirtualBox?


214

Về cơ bản tôi muốn truy cập máy tính chủ của tôi từ khách trong VirtualBox. Có địa chỉ IP nào được cung cấp cho máy chủ của tôi mà tôi có thể sử dụng từ khách không? Có các bước bổ sung cần thiết để thiết lập này? Tôi muốn truy cập các dịch vụ Apache, FTP và SSH của máy chủ lưu trữ của tôi.


1
Khó giải quyết mà không có bất kỳ gợi ý nào mà mạng của khách của bạn thực sự có. Một số không cho phép truy cập vào máy chủ. Hãy thử địa chỉ cổng mặc định của khách.
Turbo J

7
Hóa ra tôi có thể tiếp cận nó thông qua cổng mặc định của mình tại 10.0.2.2.
Naftuli Kay

Câu trả lời:


258

Câu trả lời này là về khá nhiều thiết lập hệ điều hành khách trong VirtualBox; bạn chỉ cần sử dụng địa chỉ cổng mạng trên HĐH khách để kết nối với HĐH máy chủ từ HĐH khách.

Trong cài đặt Vagrant mặc định, bạn sẽ có thể truy cập máy chủ của mình thông qua cổng mặc định.

Trên các máy khách dựa trên Windows, bạn có thể dễ dàng xác định địa chỉ IP này bằng cách chạy lệnh:

ipconfig

Nó sẽ đổ ra một cái gì đó như thế này:

Windows IP Configuration

Ethernet adapter Local Area Connection:

        Connection-specific DNS Suffix  . :
        IP Address. . . . . . . . . . . . : 10.0.2.15
        Subnet Mask . . . . . . . . . . . : 255.255.255.0
        Default Gateway . . . . . . . . . : 10.0.2.2

Trong ví dụ này, khách có thể tiếp cận máy chủ 10.0.2.2.


Trên các máy khách dựa trên Unix / Linux, sử dụng lệnh:

netstat -rn

Nó sẽ đổ ra một cái gì đó như thế này:

Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 wlan0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 wlan0
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 wlan0

Trong ví dụ này, khách có thể tiếp cận máy chủ 192.168.1.1.


Bạn có biết tại sao kết nối sẽ chậm khủng khiếp khi kết nối bằng cổng mặc định theo câu trả lời của bạn không?
Ben Swinburne

Điều này dường như không hoạt động đối với tôi (Ubuntu 12.04, Vagrant 1.0). Cổng mặc định bên trong khách hiển thị là 10.0.2.2và một sơ đồ của IP đó không thành công. 192.168.33.1 dường như là IP đúng. (Tôi đã có config.vm.network :hostonly, "192.168.33.52"trong cấu hình của mình.)
Ajedi32 21/07/2015

Thật ra, đừng bận tâm. Nó đã làm việc. nmap không hoạt động vì một số lý do; không chắc chắn lý do tại sao. Tôi vẫn có thể kết nối với các dịch vụ chạy trên máy chủ từ IP đó, mặc dù nmap không hiển thị chúng.
Ajedi32

1
netstat -rntrên CentOS 7.2, Docker 1.11 hiển thị một 172.17địa chỉ làm cổng của tôi, nhưng IP đó không khớp với máy chủ của tôi. Hóa ra là 10.0.2.2đã làm.
Spencer Williams

1
Làm thế nào để chúng ta biết một trong những mục đó là cổng?
Kramer

36

Truy cập máy chủ web của máy chủ từ khách dễ dàng. Điều này có thể được thực hiện dễ dàng bằng hai phương pháp. Đầu tiên làm như sau

  • Chuyển đến Thiết bị và chọn Bộ điều hợp mạng ...
  • Trong cài đặt bộ điều hợp, kiểm tra Đính kèm .
  • Nếu giá trị là NAT , hãy làm theo

  • Cổng mặc định khi bạn thiết lập Hộp ảo thường 10.0.2.2là giá trị mặc định. Nếu bạn không thay đổi bất cứ điều gì, điều này sẽ làm việc. Nhưng nếu bạn đã thay đổi nó và máy khách bạn đang chạy là windows chạy theo lệnh và tìm cổng mặc định

    ipconfig /all

    Nếu bạn đang dùng Linux, Unix hoặc Mac OS, hãy chạy lệnh sau để có được nó

    netstat -rn | grep 'default' | awk '{print $2}'

  • Truy cập trình duyệt web và nhập vào cổng mặc định này và nhấn enter. Máy chủ web có thể được truy cập.

  • Nếu giá trị là Cầu nối bộ điều hợp , hãy làm theo
    • tìm địa chỉ IP của máy chủ và khách
      • nếu bạn đang ở trên windows, hãy chạy ipconfigvà lấy địa chỉ IP
      • nếu bạn đang dùng Linux, Unix hoặc Mac OS, hãy chạy ifconfig | grep 'inet' và lấy địa chỉ IP
      • địa chỉ IP giống như 192.168.1.1
    • nếu bạn muốn truy cập máy chủ, hãy chạy trình duyệt trong máy khách và nhập địa chỉ IP của máy chủ
    • nếu bạn muốn truy cập khách, hãy chạy trình duyệt trong máy chủ và nhập địa chỉ IP của khách

9

Một cách khác để làm điều này là sử dụng loại mạng ảo "Máy chủ". Điều đó cung cấp cho bạn một giao diện trong HĐH khách với một địa chỉ trên mạng con cục bộ khác với mạng con "thế giới bên ngoài" mà máy chủ của bạn đang bật. Để thực hiện công việc này, bạn phải đảm bảo một số điều:

  • VM của bạn có bộ điều hợp "chỉ lưu trữ" được cấu hình;
  • Các dịch vụ lưu trữ của bạn cần được lắng nghe trên tất cả các bộ điều hợp cục bộ hoặc ít nhất là các dịch vụ bạn muốn có thể liên hệ;
  • Máy chủ của bạn sẽ có bộ điều hợp ảo riêng và bạn sẽ muốn tìm ra địa chỉ IP của nó và thêm nó vào tệp "máy chủ" trong hệ điều hành khách của bạn (tuy nhiên nó hoạt động cho hệ điều hành khách; trên Windows XP, đó chỉ là " lưu trữ "tệp được chôn trong C: / WINDOWS / system32 / trình điều khiển / vv). Đặt tên bạn muốn sử dụng cho tên máy chủ của máy chủ lưu trữ.

Khi bạn đã hoàn thành việc này, bạn sẽ có thể "nhìn thấy" máy chủ từ VM thông qua tên bạn đã mã hóa vào tệp máy chủ.

Ví dụ: trên máy chủ Ubuntu 11.04 của tôi, tôi nhận được giao diện ảo "vboxnet0" trên 192.168.56.1. Các bộ điều hợp trong các máy có một cái gì đó giống như 192.168.56.101. Tôi không cần phải truy cập vào máy ảo của mình, nhưng tôi cho rằng điều đó có thể xảy ra thông qua thay đổi đối xứng với tệp máy chủ của máy chủ lưu trữ. Tôi thêm

192.168.56.1 mymachine

đến các tệp máy chủ hệ điều hành khách và họ có thể (ví dụ) xem máy chủ web của máy chủ của tôi tại

http://mymachine/whatever

Tất nhiên bạn có thể có cả bộ điều hợp cầu nối và máy chủ chỉ được thiết lập.


0

Bạn có thể tạo các thư mục được chia sẻ trong VirtualBox. Điều này sẽ tự động tạo một 'chia sẻ mạng' trong Hộp ảo để truy cập các thư mục trong Hệ điều hành máy chủ của bạn.

Đây là một bước tốt trong hệ điều hành Windows XP:

http://www.giannistsakiris.com/index.php/2007/09/11/virtualbox-access- Shared-Folders-from-windows-xp-guide-os /


Vì vậy, tôi có thể truy cập máy chủ của mình tại / vboxauss / ShareName?
Naftuli Kay

Có, bạn sẽ đặt một thư mục như C: \ STUFF được chia sẻ với VirtualBox. Trong VirtualBox Guest OS, bạn có thể truy cập vboxserver đó và truy cập các thư mục được chia sẻ.
kobaltz

Tôi thực sự không muốn thư mục chia sẻ. Tôi muốn một địa chỉ IP cho máy chủ của tôi. Khi tôi nhận được nó, tôi muốn sử dụng nó để sử dụng các dịch vụ trên máy chủ của mình, tức là: echo "GET /\r\n\r\n" | nc 192.168.100.100 80(gửi yêu cầu HTTP GET đến máy chủ của tôi từ khách.)
Naftuli Kay

1
Trong trường hợp đó, bạn có thể cần đặt bộ điều hợp mạng Guest OS thành Cầu nối. Điều này sẽ lấy một địa chỉ IP từ DHCP hoặc Router của bạn. Sau đó, bạn có thể truy cập vào máy chủ của mình thông qua địa chỉ IP thay vì Thư mục chia sẻ VBox.
kobaltz

0

Dưới đây là một giải pháp khác cho vấn đề này bằng cách sử dụng giao diện mạng bổ sung và đặt lưu lượng truy cập cho máy chủ định tuyến qua giao diện bổ sung.


4
Chào mừng bạn đến với Siêu người dùng! Sẽ rất tốt nếu bao gồm các phần thiết yếu của câu trả lời ở đây và chỉ cung cấp liên kết để tham khảo trong tương lai.
slhck
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.