VirtualBoxで、インターネットにアクセスできるホストのみの仮想マシンを設定するにはどうすればよいですか?


98

VirtualBoxを使用して仮想マシンをセットアップする際に、次の特性が必要になることがよくあります

  • vmには静的IPがあります
  • ホストはポート転送なしでvmにアクセスできます
  • vmはインターネットにアクセスできます
  • vmの保護や再構成を気にせずに、ラップトップをネットワークからネットワーク(自宅からオフィス、コーヒーショップなど)に移動できます。

VirtualBoxのネットワーク接続方法はどれも、これらの要件を独自に安定させるものではありません。

  • NAT
    ホストからvmに接続する場合、ポート転送が必要です。

  • ホストのみ
    ホストがルーターでない限り、vmはインターネットにアクセスできません。

  • Bridged
    は、vmをネットワークに公開します。ポータブルではありません。

回答:


110

vmに2つのアダプターをセットアップすることにより、必要なセットアップを取得できます。

VirtualBox 4.2.12
Ubuntu 12.04ゲスト

VirtualBox>環境設定>ネットワークで、ホストオンリーネットワークをセットアップします。

私のものはvboxnet0と呼ばれ、手動で構成されます:
ip 192.168.56.1
netmask 255.255.255.0
no dhcp

VirtualBoxネットワーク構成 VirtualBoxネットワーク構成

次に、仮想マシンのネットワーク設定で、2つのアダプターをセットアップします。

アダプター1
ホストのみ、vboxnet0

Adapter2
NAT

仮想マシンを起動し、VirtualBoxが提供するコンソールからログインします。

これを実行して、アダプターを確認します。

ls /sys/class/net

私の場合、アダプターの名前はeth1およびeth2(およびlo、ループバックインターフェイス)です。

次に、ネットワーク構成を編集します。

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

eth1デフォルトゲートウェイが指定されていないことに注意してください。eth2dhcpからデフォルトゲートウェイを取得します。


2018年3月に更新

Ubuntu 17.10以降で動作する更新バージョンについては、@ Hugo14453のこの回答を参照してください。


1
更新:VirtualBox 4.3では、2つのインターフェイスが不要になるように見えるNATサービスが導入されました。6.4。ネットワークアドレス変換サービス
クリスチャンロング14年

4
これは私を大いに助け、開発にVirtualboxを使用します。家にいるときは、好みに合わせてネットワークを設定しているため、すべてが正常に機能します。悪夢は別のネットワーク(家族、企業... )、ウェブサイトのURLを変更し、いくつかのシステムファイルを削除し、再起動する必要があります。このソリューションは現在のネットワークを気にしないので、私はそれが好きです... PCをネットワークに接続して作業に集中するだけです。
ナビルカディミ

1
ありがとう。ホストオンリーインターフェイスのゲートウェイアドレスを定義しないことで問題が解決しました。
フロリアン

2
パーフェクト。/ etc / network / interfaces configが重要でした!!!!
バイロンホイットロック

1
「eth1にはデフォルトゲートウェイが指定されていないことに注意してください。eth2はdhcpからデフォルトゲートウェイを取得します。」<-このコメントが鍵です。
ペレページ

16

クリスチャンロングのソリューションを組み合わせることで問題を解決できました。2つのアダプターを追加しました。

アダプター1-NAT

アダプター2-ホストのみ、vboxnet0

唯一の違いは、VMのinterfacesファイルにあります。

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

VirtualBox Network configでは、DHCPをチェックしたままにしました。

VMの再起動後、すべてが正常に機能しました。


これでうまくいきますが、VMに静的IPアドレスが必要です。それをすると、インターネットが機能しなくなります。DHCPを使用して両方をセットアップすると、正常に機能します。ホストオンリーインターフェイスに静的IPを取得させるにはどうすればよいですか?
ウマルファルークKhawaja 14

働いた唯一のもの。ありがとう。+1
ホルヘカンポス

14

新しいNATアダプターを作成する必要がない別の簡単な方法があります

  1. ホストマシンで、次のiptablesルールを追加してください。これにより、ホストを介してインターネットにパケットが転送されます。

    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. また、次のコマンドを発行して、ホストでIP転送を有効にする必要があります。

    sudo sysctl -w net.ipv4.ip_forward=1
    

これはLinuxホストでのみ機能します。
デレクマハル

「dnsmasq」サービスを実行する必要があります。リンクunix.stackexchange.com/a/384187/61742には、@Danatelaによって提案されたものに関する完全な情報があります。ありがとう!
エドゥアルドルチオ

1
@EduardoLucioはLong Buiにクレジットをお願いします。この記事を編集して読みやすくしました。
ダナテラ

@Long Bui貢献ありがとうございます!アップ!アップ!アップ!アップ!アップ!アップ!= D
エドゥアルドルチオ

12

Ubuntu 17.10.1でネットワーク構成が変更されました。ここで、netplan configを使用します。

ここでこのガイドに従いました

クリスチャンの答えの移行として、次のことを行います。

ホスト専用のアダプター構成を保持するために、/ etc / netplan内に新しい構成ファイルを作成します。

例えば sudo nano /etc/netplan/02-netcfg.yaml

以下を入力して、192.168.56.12の静的IPを構成します。ここenp0s3で、ホスト専用アダプターの名前です。

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

次に、次の2つのコマンドを実行します。

sudo netplan generate
sudo netplan apply

NATは設定なしで機能し、実行ifconfigして結果を確認する必要があります。

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
ありがとう!古い回答に更新セクションを追加し、この新しい情報にリンクしました。
クリスチャンロング

私はあなたの解決策に従いましたが、enp0s8のnatサポートを欠場します。netplanでenp0s8のenable dhcp4を手動で追加し、最終的にenp0s3とenp0s8の両方を起動しました。これが誰かを助けることを願っています。
ズミトリープラカペンカ

3

2つのアダプターを追加しました。

アダプター1ホストのみ、vboxnet0

Adapter2 NAT

そして、それは完璧に動作します。ホストから仮想マシンにアクセスでき、vm上でインターネットを利用できます。


2

ええ、私はこの問題を抱えていました、それは完全な痛みでした!しかし、物理PCにSquid Cache Proxyサーバーをインストールするだけで解決しました。そうすれば、ホストオンリーのインターネット仮想ボックスPCがインターネットに接続できます。

ここで簡単な3分間のガイドを作成しました-仕組みを知りたい人のために! http://b0zmeister.wordpress.com/allowing-host-only-virtualbox-guest-to-connect-to-the-internet/


共有してくれてありがとう。すべてを機能させる最も簡単な方法です。
ローレント

こんにちはローラン-問題ありません-それが助けてくれてうれしいです!別のネットワークから
Virtualbox

リンクは現在無効です。指示をここに移動することを検討してください。
s3v3n
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.