VirtualBoxを使用して仮想マシンを設定する際、次の特性が必要になることがよくあります
VirtualBoxのネットワーク接続方法はどれも、これらの要件を単独で安定させるものではありません。
NAT
ホストからvmに接続する場合は、ポート転送が必要です。
ホストのみ
ホストがルーターでない限り、vmはインターネットにアクセスできません。
ブリッジド
vmをネットワークに公開します。ポータブルではありません。
Vmに2つのアダプターをセットアップすることで、必要なセットアップを取得できます。
VirtualBox 4.2.12
Ubuntu 12.04ゲスト
VirtualBox>環境設定>ネットワークで、ホストオンリーネットワークを設定します。
私のものはvboxnet0と呼ばれ、手動で設定されます:
ip 192.168.56.1
netmask 255.255.255.0
no dhcp
次に、仮想マシンのネットワーク設定で、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
にはデフォルトゲートウェイが指定されていないことに注意してください。 eth2
は、dhcpからデフォルトゲートウェイを取得します。
Ubuntu 17.10以降で動作する更新バージョンについては、 この答え from @ Hugo1445 を参照してください。
クリスチャンロングのソリューションを組み合わせることで問題を解決できました。 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再起動後、すべてが正常に機能しました。
新しいNATアダプターを作成する必要がない別の簡単な方法があります
ホストマシンで、次の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
また、次のコマンドを発行して、ホストでIP転送を有効にする必要があります。
Sudo sysctl -w net.ipv4.ip_forward=1
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
2つのアダプターを追加しました。
アダプター1ホストのみ、vboxnet0
Adapter2 NAT
そして、それは完璧に動作します。ホストから仮想マシンにアクセスでき、仮想マシンでインターネットを利用できます。
ええ、私はこの問題を抱えていました、それは完全な痛みでした!しかし、物理PCにSquid Cache Proxyサーバーをインストールするだけで解決しました。そうすれば、ホストオンリーのインターネット仮想ボックスPCがインターネットに接続できます。
ここで簡単な3分間のガイドを作成しました-仕組みを知りたい人のために! http://b0zmeister.wordpress.com/allowing-Host-only-virtualbox-guest-to-connect-to-the-internet/