Cổng Virtualbox chuyển tiếp trực tiếp từ khách đến máy chủ [đã đóng]


162

Đây là thiết lập của tôi:

- Host: Windows XP
- Guest: Ubuntu 10.04
- Networking: NAT

Tôi đang đặt máy chủ web Apache trên Máy khách, nhưng tôi muốn có thể làm điều này trên máy Windows:

- go to the browser, type http://localhost:8000

Ngoài ra, tôi đã cố gắng thay đổi mạng của mình thành cầu nối và tôi đã nhận được một IP mới. Nhưng khi tôi cố gắng thực hiện http: //: 8000, nó nói rằng nó không thể kết nối.


1
Tôi đã từng gặp vấn đề tương tự. Hóa ra HĐH khách có tường lửa hoạt động đang chặn cổng 80.
Nicholas Shanks

149
Là một nhà phát triển web sử dụng VirtualBox như một phần trong quy trình làm việc hàng ngày của tôi, không đồng ý với việc này được đánh dấu là lạc đề. Vui lòng xem xét mở lại.
sparecycle

1
1. Chuyển đến VM 2. ifconfig (lấy IP cục bộ - phải là 10.0.2.X) 3. ssh 10.0.2.2 để đến máy chủ
Mark Roberts

@deeperDATA Nó có thể nằm trong phạm vi công việc của nhà phát triển web, nhưng tràn ngăn xếp không có nghĩa là gói gọn mọi phần của công việc. Đó là một minh chứng cho sự phức tạp của nghề nghiệp của chúng tôi rằng các yêu cầu của nó trải rộng trên nhiều trang web trao đổi ngăn xếp.
Kevin Lawrence

1
Phải mất một thời gian dài để nó hoạt động. Vấn đề của chúng tôi là liên kết ip của ứng dụng trong hệ thống khách, nó liên kết với tên máy, nghĩa là 127.0.1.1 trong ubfox. Chúng tôi đã thay đổi liên kết thành 0.0.0.0. Thiết lập cổng chuyển tiếp: Host IP = trữ DNS IP, Host Port = 8080, Khách IP = IP của eth0, Port Khách = 8080.
slowy

Câu trả lời:


222

Máy chủ liên lạc qua mạng -> Khách

Kết nối với Khách và tìm địa chỉ IP:

ifconfig 

ví dụ về kết quả (địa chỉ ip là 10.0.2.15):

eth0      Link encap:Ethernet  HWaddr 08:00:27:AE:36:99
          inet addr:10.0.2.15  Bcast:10.0.2.255  Mask:255.255.255.0

Chuyển đến cửa sổ phiên bản Vbox -> Menu -> Bộ điều hợp mạng:

  • bộ chuyển đổi phải là NAT
  • nhấp vào "cổng chuyển tiếp"
  • chèn bản ghi mới (biểu tượng +)
    • đối với ip máy chủ, hãy nhập 127.0.0.1 và cho địa chỉ ip khách mà bạn đã nhận được từ trước. bước (trong trường hợp của tôi là 10.0.2.15)
    • trong trường hợp cổng của bạn là 8000 - hãy đặt nó trên cả hai, nhưng bạn có thể thay đổi cổng máy chủ nếu bạn thích

Truy cập hệ thống máy chủ và dùng thử trong trình duyệt:

http://127.0.0.1:8000

hoặc địa chỉ IP mạng của bạn (tìm hiểu trên máy chủ bằng cách chạy: ipconfig).

Giao tiếp qua mạng Khách -> Máy chủ

Trong trường hợp này không cần chuyển tiếp cổng, giao tiếp sẽ chuyển qua mạng LAN trở lại máy chủ.

Trên máy chủ - tìm địa chỉ ip netw của bạn:

ipconfig

ví dụ về kết quả:

IP Address. . . . . . . . . . . . : 192.168.5.1

Trên máy khách, bạn có thể giao tiếp trực tiếp với máy chủ, ví dụ: kiểm tra nó bằng ping:

# ping 192.168.5.1
PING 192.168.5.1 (192.168.5.1) 56(84) bytes of data.
64 bytes from 192.168.5.1: icmp_seq=1 ttl=128 time=2.30 ms
...

11
cả hai cổng sẽ không phải là 8000. Cổng máy chủ sẽ là 8000 hoặc người muốn bạn muốn, nhưng cổng khách phải là 80
Yasin

5
Có thể truy cập từ VM đến máy chủ trong trường hợp này bằng cách truy cập VM và nhận địa chỉ IP ITS (10.0.2.15 như bên dưới). Để đến máy chủ từ VM, IP là 10.0.2.2 (theo quy ước).
Mark Roberts

5
Nếu sử dụng NAT cho khách ... Nếu dịch vụ đang chạy trên máy chủ chỉ bị ràng buộc với 127.0.0.1, thì khách không thể sử dụng ip công khai của máy chủ để kết nối với dịch vụ đó (ví dụ: dịch vụ: privateoxy). Thay vào đó, bạn cần sử dụng 10.0.2.2 như được đề cập bởi Mark hoặc bất cứ điều gì 'tuyến -n' (chạy trên máy khách) hiển thị làm cổng mặc định.
desm

4
Trong trường hợp của CentOS, chúng tôi có thể phải tắt tường lửa hoặc chỉnh sửa các quy tắc cụ thể trong iptable
Reddy

2
Tôi thấy rằng không cần thiết phải chỉ định địa chỉ IP của Máy chủ hoặc Khách và bạn chỉ có thể để trống các ô. Mặc dù nếu bạn chỉ muốn kết nối từ localhost, có lẽ nên đặt 127.0.0.1 làm Máy chủ.
mwfearnley

14

Đó là không thể. localhostluôn mặc định cho thiết bị loopback trên hệ điều hành cục bộ.
Vì máy ảo của bạn chạy hệ điều hành riêng, nó có thiết bị loopback riêng mà bạn không thể truy cập từ bên ngoài.

Nếu bạn muốn truy cập nó, ví dụ như trong trình duyệt, hãy kết nối với nó bằng IP cục bộ:

http://192.168.180.1:8000

Đây chỉ là một ví dụ tất nhiên, bạn có thể tìm ra IP thực tế bằng cách phát ifconfiglệnh trên shell trong hệ điều hành khách.


Tôi cũng đã thử điều này, nhưng không hoạt động cho cả NAT và cầu. Nhật ký apache trong khách không đưa ra bất kỳ lỗi nào và apache sẽ hoạt động trong khách.
Carmen

Bạn có chắc chắn rằng bạn đang sử dụng đúng IP? Bạn có thể xác minh rằng bằng cách cố gắng truy cập địa chỉ từ bên trong máy ảo. Nếu thất bại, bạn đang sử dụng IP sai hoặc apache của bạn không được thiết lập để nghe trên cổng 8080.
Chris

Làm việc cho tôi - cảm ơn!
Matt Frear

Làm việc cho tôi là tốt. Trước khi thay thế "localhost" bằng địa chỉ IP của hệ điều hành máy chủ, tôi luôn nhận được "Máy chủ từ chối khóa của bạn" và "Truy cập bị từ chối" mà không cần giải thích trong /var/log/auth.log mặc dù LogLevel DEBUG3 trong / etc / ssh / sshd_config
VR

@Chris điều này có nghĩa là trên máy chủ, với các mục máy chủ ảo như mysite.localhostsẽ không thể truy cập được vào Máy khách, vì tôi phải tham khảo Máy chủ chỉ sử dụng địa chỉ IP?
danjah
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.