Trong VirtualBox, làm cách nào để thiết lập các máy ảo chỉ lưu trữ có thể truy cập Internet?


98

Khi thiết lập máy ảo với VirtualBox, tôi thường muốn các đặc điểm sau

  • vm có một ip tĩnh
  • máy chủ có thể truy cập vm mà không cần chuyển tiếp cổng
  • vm có thể truy cập internet
  • Tôi có thể di chuyển máy tính xách tay của mình từ mạng này sang mạng khác (ví dụ từ nhà đến văn phòng sang coffeeshop) mà không phải lo lắng về việc bảo mật hoặc cấu hình lại vm

Không có phương thức kết nối mạng VirtualBox nào đáp ứng các yêu cầu này theo cách riêng của chúng.

  • NAT
    Yêu cầu chuyển tiếp cổng nếu bạn muốn kết nối với vm từ máy chủ.

  • Chỉ lưu trữ Máy chủ
    vm không thể truy cập internet, trừ khi máy chủ là bộ định tuyến.

  • Bridged Tiếp xúc
    vm với mạng; không xách tay.

Câu trả lời:


110

Tôi có thể có được thiết lập tôi muốn bằng cách thiết lập hai bộ điều hợp trên vm.

VirtualBox 4.2.12
Ubuntu 12.04 khách

Trong VirtualBox> Tùy chọn> Mạng, thiết lập mạng chỉ dành cho máy chủ.

Của tôi được gọi là vboxnet0, nó được cấu hình thủ công:
ip 192.168.56.1
netmask 255.255.255.0
no dhcp

Cấu hình mạng VirtualBox Cấu hình mạng VirtualBox

Sau đó, trong cài đặt mạng cho máy ảo, hãy thiết lập hai bộ điều hợp:

Chỉ bộ điều hợp 1
máy chủ, vboxnet0

Adaptor2
NAT

Khởi động máy ảo và đăng nhập thông qua bảng điều khiển mà VirtualBox cung cấp.

Chạy cái này để xem bộ điều hợp của bạn:

ls /sys/class/net

Trong trường hợp của tôi, các bộ điều hợp được đặt tên là eth1 và eth2 (và lo, giao diện loopback).

Sau đó, chỉnh sửa cấu hình mạng của bạn.

sudoedit /etc/network/interfaces


# The loopback network interface
auto lo
iface lo inet loopback

# Host-only interface
auto eth1
iface eth1 inet static
        address         192.168.56.20
        netmask         255.255.255.0
        network         192.168.56.0
        broadcast       192.168.56.255

# NAT interface
auto eth2
iface eth2 inet dhcp

Lưu ý rằng eth1không có cổng mặc định được chỉ định. eth2sẽ nhận được một cổng mặc định từ dhcp.


Cập nhật tháng 3 năm 2018

Xem câu trả lời này từ @ Hugo14453 để biết phiên bản cập nhật hoạt động với Ubuntu 17.10 trở lên.


1
Cập nhật: VirtualBox 4.3 đã giới thiệu một dịch vụ NAT có vẻ như có thể làm giảm nhu cầu về hai giao diện. 6.4. Dịch vụ dịch thuật địa chỉ mạng
Christian Long

4
Điều này giúp tôi rất nhiều, tôi sử dụng Virtualbox để phát triển và khi tôi ở trong nhà, mọi thứ hoạt động chính xác kể từ khi tôi cài đặt mạng theo ý thích của mình, cơn ác mộng bắt đầu khi tôi chuyển sang mạng khác (gia đình, công ty ... ), Tôi phải thay đổi URL trang web, xóa một số tệp hệ thống, khởi động lại Tôi không biết bao nhiêu lần và danh sách tiếp tục. Giải pháp này không quan tâm đến mạng hiện tại của bạn, đó là lý do tại sao tôi thích nó ... Chỉ cần cắm PC của bạn vào bất kỳ mạng nào và tập trung vào công việc của bạn.
Nabil Kadimi

1
Cảm ơn. Không xác định địa chỉ cổng cho giao diện chỉ lưu trữ đã giải quyết các vấn đề của tôi.
Florian

2
Hoàn hảo. / etc / mạng / giao diện cấu hình là chìa khóa CẢM ƠN !!!!
Byron Whitlock

1
"Lưu ý rằng eth1 không có cổng mặc định được chỉ định. Eth2 sẽ nhận được cổng mặc định từ dhcp." <- NHẬN XÉT NÀY LÀ CHÍNH.
Trang Pere

16

Tôi có thể giải quyết vấn đề của mình bằng hỗn hợp giải pháp Christian Long. Tôi đã thêm 2 bộ điều hợp:

Bộ chuyển đổi 1 - NAT

Bộ điều hợp 2 - chỉ lưu trữ, vboxnet0

Sự khác biệt duy nhất là trong tệp giao diện của VM:

sudoedit /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback
# NAT
auto eth0
iface eth0 inet dhcp
# Host only
auto eth1
iface eth1 inet dhcp

Trong cấu hình Mạng VirtualBox, tôi đã kiểm tra DHCP.

Sau khi khởi động lại VM, mọi thứ đều hoạt động tốt.


Điều này làm việc cho tôi, nhưng tôi muốn các máy ảo có địa chỉ IP tĩnh. Ngay khi tôi làm điều đó, Internet ngừng hoạt động. Nếu tôi thiết lập cả hai với DHCP, nó hoạt động tốt. Làm cách nào để làm cho giao diện chỉ máy chủ nhận được IP tĩnh?
Umar Farooq Khawaja

Chỉ có một mà làm việc. Cảm ơn. +1
Jorge Campos

14

Có một cách đơn giản khác mà chúng ta không cần tạo bộ điều hợp NAT mới

  1. Trên máy chủ, vui lòng thêm các quy tắc iptables sau. Điều này sẽ chuyển tiếp các gói thông qua máy chủ và vào Internet:

    sudo iptables -A FORWARD -o eth0 -i vboxnet0 -s 192.168.56.0/24 -m conntrack --ctstate NEW -j ACCEPT 
    
    sudo iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
    
    sudo iptables -A POSTROUTING -t nat -j MASQUERADE
    
  2. Bạn cũng sẽ cần bật chuyển tiếp IP trên máy chủ bằng cách ban hành lệnh sau:

    sudo sysctl -w net.ipv4.ip_forward=1
    

Điều này chỉ hoạt động trên một máy chủ Linux.
Derek Mahar

Chúng tôi cần dịch vụ "dnsmasq" đang chạy. Trong liên kết unix.stackexchange.com/a/384187/61742 chúng tôi có thông tin đầy đủ về những gì được đề xuất bởi @Danatela. Cảm ơn!
Eduardo Lucio

1
@EduardoLucio vui lòng cung cấp tín dụng cho Long Bùi. Tôi chỉ chỉnh sửa bài viết này để làm cho nó dễ đọc hơn.
Danatela

@Long Bùi Cảm ơn bạn đã đóng góp! Lên! Lên! Lên! Lên! Lên! Lên! = D
Eduardo Lucio

12

Cấu hình mạng đã thay đổi trong Ubuntu 17.10.1. Bây giờ bạn sử dụng cấu hình netplan.

Tôi đã làm theo hướng dẫn này ở đây

Khi di chuyển câu trả lời của Christian, hãy làm như sau:

Tạo một tệp cấu hình mới bên trong / etc / netplan để giữ cấu hình bộ điều hợp chỉ lưu trữ của bạn.

ví dụ sudo nano /etc/netplan/02-netcfg.yaml

Nhập thông tin sau để định cấu hình IP tĩnh 192.168.56.12 trong đó enp0s3tên của bộ điều hợp chỉ lưu trữ của bạn.

network:
    version: 2
    renderer: networkd
    ethernets:
        enp0s3:
            addresses:
                - 192.168.56.12/24
            dhcp4: no

Sau đó chạy hai lệnh sau:

sudo netplan generate
sudo netplan apply

NAT nên hoạt động mà không cần cấu hình, chạy ifconfigđể xem kết quả:

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.56.12  netmask 255.255.255.0  broadcast 192.168.56.255
        inet6 fe80::a00:27ff:fe06:6cdd  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:06:6c:dd  txqueuelen 1000  (Ethernet)
        RX packets 252  bytes 23076 (23.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 208  bytes 30015 (30.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 10.0.3.15  netmask 255.255.255.0  broadcast 10.0.3.255
        inet6 fe80::a00:27ff:fe4d:a6b8  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:4d:a6:b8  txqueuelen 1000  (Ethernet)
        RX packets 95  bytes 94894 (94.8 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 85  bytes 7436 (7.4 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

1
Cảm ơn! Tôi đã thêm một phần cập nhật vào câu trả lời cũ của tôi và liên kết với thông tin mới này.
Christian Long

Tôi đã theo bạn giải pháp, nhưng bỏ lỡ hỗ trợ nat cho enp0s8. Tôi đã thêm thủ công cho phép dhcp4 cho enp0s8 trong netplan và cuối cùng nhận được cả enp0s3 và enp0s8. Hy vọng điều này sẽ giúp được ai đó.
Dzmitry Prakapenka

3

Tôi chỉ cần thêm 2 bộ điều hợp:

Chỉ bộ điều hợp 1 máy chủ, vboxnet0

Adaptor2 NAT

Và nó hoạt động hoàn hảo, tôi có thể truy cập vào máy ảo từ máy chủ và tôi có internet trên vm.


2

Vâng, tôi đã có vấn đề này đó là một nỗi đau hoàn toàn! Nhưng tôi đã giải quyết nó bằng cách cài đặt máy chủ Squid Cache Proxy trên PC vật lý của mình và bằng cách đó - các PC hộp ảo chỉ có máy chủ của tôi có thể kết nối với internet!

Tôi đã làm một hướng dẫn nhanh 3 phút ở đây - cho bất cứ ai muốn làm thế nào nó hoạt động! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-i Internet /


Điều đó đã làm việc rất tốt cho tôi, cảm ơn vì đã chia sẻ. Đó là cách đơn giản nhất để làm cho tất cả hoạt động.
nguyệt quế

Xin chào Laurent - không có vấn đề gì - rất vui vì nó đã giúp! Phải yêu thích chạy PC PC ảo từ một mạng khác - nhưng - với kết nối internet hoạt động :)
B0zmeister

Liên kết đã chết bây giờ. Xem xét di chuyển các hướng dẫn ở đây.
s3v3n
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.