VirtualBox仮想マシンがNATモードで外部ネットワークに接続できない問題の解決策

VirtualBox仮想マシンがNATモードで外部ネットワークに接続できない問題の解決策

背景

VirtualBox 仮想マシン (Ubuntu 16.04 システムがロードされている) には 2 つのネットワーク カードが設定されており、ネットワーク モードは「ネットワーク アドレス変換 (NAT)」と「ホストオンリー アダプター」です。このうち、enp0s3 ネットワーク カード (NAT) は外部ネットワーク アクセスに使用され、enp0s8 ネットワーク カード (ホストオンリー) は仮想マシンへのホスト アクセスに使用されます。ただし、仮想マシンを起動した後は、外部ネットワークにアクセスできなくなります。

位置

ネットワーク構成ファイルは次のとおりです。

# vi /etc/ネットワーク/インターフェース

...
# プライマリネットワークインターフェース
自動enp0s3
iface enp0s3 inet dhcp

自動 enp0s8
iface enp0s8 inet 静的
アドレス 192.168.137.16
ネットマスク 255.255.255.0
ゲートウェイ 192.168.137.1

eth0 は DHCP を使用し、eth1 は静的を使用します。 eth0 の実際のネットワークは次のとおりです。

# 設定ファイル 
enp0s3: flags=4163<UP、ブロードキャスト、実行中、マルチキャスト> mtu 1500
    inet 10.0.2.15 ネットマスク 255.255.255.0 ブロードキャスト 10.0.2.255
    inet6 fe80::a00:27ff:fe55:2858 プレフィックス長 64 スコープID 0x20<リンク>
    ether 08:00:27:55:28:58 txqueuelen 1000 (イーサネット)
    RXパケット 6バイト 1476 (1.4 KB)
    RXエラー 0 ドロップ 0 オーバーラン 0 フレーム 0
    TXパケット 33 バイト 3108 (3.1 KB)
    TXエラー 0 ドロップ 0 オーバーラン 0 キャリア 0 衝突 0

ルートを開いた後、問題が見つかりました。

# ルート -n
カーネル IP ルーティング テーブル
宛先ゲートウェイ Genmask フラグ メトリック参照 Iface の使用
0.0.0.0 192.168.137.1 0.0.0.0 UG 0 0 0 enp0s8
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
192.168.137.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8

enp0s8 ネットワーク カードがデフォルト ルートになるため、他のルートと一致しないネットワーク セグメントは enp0s8 ネットワーク カードを経由することになります。ただし、実際に外部ネットワークに接続するために構成する仮想ネットワーク カードは enp0s3 であるため、当然外部ネットワークに接続できない環境となります。現在のデフォルト ルートを手動で削除してみることもできます。

# ルート削除デフォルト
# ルートにデフォルトの gw 1​​0.0.2.2 dev enp0s3 を追加します
# ルート -n

カーネル IP ルーティング テーブル
宛先ゲートウェイ Genmask フラグ メトリック参照 Iface の使用
デフォルトゲートウェイ 0.0.0.0 UG 0 0 0 enp0s3
10.0.2.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s3
192.168.137.0 0.0.0.0 255.255.255.0 U 0 0 0 enp0s8

ルーティングが正常に設定され、OS は外部ネットワークにアクセスできます。ただし、これは今回のルーティング設定のみを変更するものであり、OS を再起動すると無効になるため、設定を永続化する必要があります。

永続的なルーティング構成

ネットワーク設定ファイル /etc/network/interfaces でルートの永続性を設定します。ネットワーク カードが起動したら、対応するルートの追加と削除のコードを追加します。これは、文の先頭に up が追加されることを除いて、route コマンドに似ています。

# vi /etc/ネットワーク/インターフェース
...
自動enp0s3
iface enp0s3 inet dhcp
アップルートにデフォルトの gw 1​​0.0.2.2 dev enp0s3 を追加

自動 enp0s8
iface enp0s8 inet 静的
アドレス 192.168.137.16
ネットマスク 255.255.255.0
ゲートウェイ 192.168.137.1
アップルート del デフォルト dev enp0s8

注: ステートメント up route add default gw [gateway-addr] dev [dev-name] では、[dev-name] は外部ネットワーク カードの名前 (上記の enp0s3) を示し、[gateway-addr] は外部ネットワーク カードで使用されるゲートウェイ IP アドレスを示します。
では、この外部ネットワーク カードのゲートウェイ アドレスを取得するにはどうすればよいでしょうか? VirtualBox では次のことが規定されています。

NAT モードでは、ゲスト ネットワーク インターフェイスはデフォルトで IPv4 範囲 10.0.x.0/24 に割り当てられます。ここで、x は NAT インターフェイスのインスタンス +2 に対応します。したがって、アクティブな NAT インスタンスが 1 つだけの場合、x は 2 になります。その場合、ゲストにはアドレス 10.0.2.15 が割り当てられ、ゲートウェイは 10.0.2.2 に設定され、ネーム サーバーは 10.0.2.3 にあります。

簡単に言うと、0 番目のネットワーク カードが NAT ネットワーク カードの場合、そのネットワーク セグメントの 3 番目の数字は 0+2=2 で、10.0.2.0 となり、ゲートウェイは 10.0.2.2、ネーム サーバーは 10.0.2.3 となります。

参考: リンクアドレス

以上がこの記事の全内容です。皆様の勉強のお役に立てれば幸いです。また、123WORDPRESS.COM を応援していただければ幸いです。

以下もご興味があるかもしれません:
  • CentOS7 の VirtualBox でのネットワーク設定チュートリアル (外部ネットワークに接続可能)
  • VirtualBox 仮想マシン ネットワーク環境の分析と構築の詳細な説明 - NAT、ブリッジ、ホストオンリー、内部、ポート マッピング
  • VirtualBox は、ホストと仮想マシンのネットワーク相互接続を実現するために仮想ネットワーク カード (ブリッジ) を構成します (グラフィック チュートリアル)
  • VirtualBoxを使用して仮想マシンをネットワークに接続する方法に関するチュートリアル
  • VirtualBoxでのcentos6.5ネットワーク設定の詳細な説明
  • VirtualBoxでゲストとホスト間のネットワーク接続を構成する方法の詳細な説明
  • VirtualBoxは、ホストと仮想マシンのネットワーク相互接続を実現するために仮想ネットワークカード(ブリッジ)を構成します。
  • VirtualBox + CentOS 仮想マシンのネットワークカード構成の詳細な説明
  • VirtualBox仮想マシンネットワーク設定の原理の分析
  • VirtualBox がブリッジするネットワーク インターフェイスを指定しない問題の解決方法
  • VirtualBox 2.2.0はホストネットワークを使用してインターネットアクセスを構成します

<<:  MySQL の冗長インデックスと重複インデックスの詳細な説明

>>:  Vueはユーザーログイン切り替えを実装します

推薦する

Mysql の 2 つのテーブル間の結合クエリの 4 つの状況の概要

一般的に言えば、より完全な結果を得るためには、2 つ以上のテーブルから結果を取得する必要があります。...

Xshell を使用して VMware 上の Linux 仮想マシンに接続する (グラフィック手順)

はじめに: 最近 Hadoop プラットフォームの構築を勉強し始めたので、ローカルマシンに VMwa...

MySQL Community Server 5.6.39 のインストール方法

この記事では、MySQLのダウンロードとインストールの詳細なチュートリアルを記載しています。具体的な...

jsはショッピングカートの加算と減算、価格計算を実装します

この記事の例では、ショッピングカートの加算と減算、価格計算を実装するためのjsの具体的なコードを共有...

CSS3 グラデーション背景の互換性の問題

グラデーションの背景色を作成するときは、 linear-gradient() 関数を使用して線形グラ...

DockerはMariaDBのサブライブラリとサブテーブル、および読み書き分離機能を実装します

目次1. はじめに2. 環境整備1. 基本環境3.Mysqlマスタースレーブ構成をインストールする1...

MySQL で最大接続数を正しく変更する 3 つの方法

MySQL データベースをインストールすると、デフォルトの MySQL データベースの最大接続数が ...

表のセル間の境界線/区切り線を非表示にする方法

上の境界線のみを表示する <table frame=above>下の境界線のみを表示する...

Vue はシームレスなカルーセル効果を実現

この記事では、シームレスなカルーセル効果を実現するためのVueの具体的なコードを参考までに紹介します...

CentOS7 は yum を使用して mysql 8.0.12 をインストールします

この記事では、centos7にyumを使用してMySQL 8.0.12をインストールする詳細な手順を...

MySQL の悲観的ロックと楽観的ロックの理解と応用分析

この記事では、例を使用して MySQL の悲観的ロックと楽観的ロックについて説明します。ご参考までに...

MYSQLのバックアップデータのスケジュールクリアの特定の操作

1|0 背景プロジェクトの要件により、各月の履歴在庫データをアーカイブしてバックアップする必要があり...

ウェブページ作成時に標準 HTML コードを使用する際のポイント

多くの Web サイト デザイナーが犯す最も一般的な間違いは、Web ページが IE で正常に表示さ...

MySQL 5.7.21 winx64 のインストールと設定方法のグラフィックチュートリアル

この記事では、MySQL 5.7.21のインストールに関する注意事項をまとめ、皆さんと共有します。 ...

Linux の crontab タスク スケジューリングの簡単な分析

1. スケジュールタスクを作成する命令crontab -eは現在のユーザーの編集インターフェースに入...