VMwareでゲストOSとホストOS間で通信ができてゲストOSでインターネットが使えるようにする方法

インターネットアクセスがプロキシサーバー経由となっている社内LANに接続されたPCというのを前提としています。

VMware Workstation Playerで作成した仮想OS(ゲストOS)とホストOS間で通信ができて、かつゲストOSがインターネットアクセスできるようにする設定方法を覚え書きしておきます。

スポンサーリンク

やりたいこと

ホストOS(Windows 10)からゲストOS(AlmaLinux 9)間で通信できるように設定してホストOSのTeraTermからゲストOSにSSH接続したり、FTP接続してファイルをやり取りしたい。

あとゲストOSから社内のプロキシサーバーを経由してインターネットに出ることができてyumやdnfでパッケージのインストールやアップデートができるようにしたい。

実際の環境

ゲストOS:Windows 10
ホストOS:VMware Workstation Playerに作成したAlmaLinux  9
プロキシサーバー:ユーザー認証が必要となるプロキシサーバー

設定手順

以下に環境作成時の設定順を記載します。

VMware Network Adapter VMnet8のIPアドレス確認

VMwareをインストールすると自動的にインストールされるネットワークアダプタのIPアドレスを確認します。

[Windowsキー] + [R] を押して[ファイル名を指定して実行]画面を表示、テキストボックスに「ncpa.cpl」と入力して[OK]をクリックします。

ネットワークアダプタの一覧が表示されるので、一覧の中から「VMware Network Adapter VMnet8」をダブルクリックします。

「VMware Network Adapter VMnet8の状態」画面が表示されるので、[プロパティ]をクリックします。

「VMware Network Adapter VMnet8のプロパティ」画面が表示されるので、「インターネット プロトコル バージョン4(TCP/IPv4)」を選択して[プロパティ]をクリックします。

「インターネット プロトコル バージョン4(TCP/IPv4)のプロパティ」画面が表示されるので、IPアドレスを控えます。

上記画面ショットから設定されいてるIPは、「192.168.140.1」となっています。

ゲストOS側のIP設定の際に第三オクテット(192.168.140)まで使うので控えておいてください。

「VMware Network Adapter VMnet8」 のIPアドレスの確認が完了したら開いたウィンドウは全て閉じてしまって構いません。

ゲストOSのネットワーク設定

まず最初にゲストOSのネットワーク設定が「NAT」になっているか確認します。

VMware Workstation Playerを起動して対象のゲストOSを選択、右クリックして表示されるメニューから[設定]を選択します。

「仮想マシン設定」画面が表示されるので、[ネットワークアダプタ]をクリックし、「ネットワーク接続」のオプションに[NAT:ホストのIPアドレスを共有して使用]がオンになっていることを確認します。

設定がNATになっていることが確認できたら[キャンセル]をクリックして画面を閉じてください。

仮想OSのネットワーク設定

今回のゲストOSはAlmaLinux9ですが、ネットワークの設定についてはゲストOSがWindowsでも同じです。

ゲストOSを起動してログインします。

ゲストOSの「有線設定」をクリックします。

「設定」画面の「有線」の歯車のボタンをクリックします。

「有線」画面が表示されるので、[IPv4]タブをクリック、[手動]オプションをオンにして[アドレス]に以下の値を入力します。

アドレス :192.168.140.10
※アドレスの第四オクテットは、1、2以外で254までの数字
ネットマスク:255.255.255.0
ゲートウェイ:192.168.140.2
DNS:192.168.140.2

「VMware Network Adapter VMnet8」に割り当てられたIPアドレスの第四オクテットが"2"となるアドレス(192.168.140.2)がNAT設定になっているときのゲストOS側に設定するデフォルトゲートウェイとDNSのアドレスになります。

NAT設定になっている場合のデフォルトゲートウェイとDNSのアドレスについては、VMwareのドキュメントに以下の記載があります。(一部抜粋)

IP アドレス net.1 はホスト仮想ネットワーク アダプタに、net.2 は NAT デバイスに割り当てられています。

NAT ネットワーク上の仮想 DHCP サーバは、IP アドレスに加えて、仮想マシンの稼動を可能にする構成情報も送信します。この情報には、デフォルト ゲートウェイや DNS サーバなどが含まれます。DHCP からの応答で、NAT デバイスは IP アドレス net.2 をデフォルトのゲートウェイや DNS サーバとして使用するように仮想マシンに指示します。

ゲストOSにアドレスの設定をしたら[適用]をクリックします。

「ネットワーク」画面に戻るので、「有線」のスイッチを左にスライドし、一度有線接続をオフにします。

再度スイッチを右にスライドし、有線接続をオンに戻します。

以上ですべての設定が完了です。

動作確認

設定が完了したら、ホストOSとゲストOS間での疎通を確認します。

ホストOSからゲストOSのIPアドレスをpingを飛ばして正しく返答が返ってくるか確認します。

逆にゲストOSからホストOSのIPアドレスをpingを飛ばして正しく返答が返ってくるか確認します。

両方で問題なければ設定としては問題ないことが確認できます。

ホストOSからゲストOSへの通信に関する補足

AlmaLinuxの場合、インストール時にrootユーザーでのssh接続できるオプションを選択できます。

セキュリティ的には好ましくないですが、自分のPCの中でのテスト環境なのでここは一旦良しとしてオプションを有効にしています。

そのようなオプションがない場合やLinuxインストール後に別途sshやFTPのパッケージをインストールする場合は、ゲストOS側で各種設定が必要なる場合があります。

もしゲストOS上でそれらの設定が正しく行われているにも関わらず、ssh接続やFTP接続ができない場合は、ゲストOS側のSELinuxの無効化、firewallの無効化を行って再度試してみてください。

SELinuxの無効化

まず現在のSELinuxの状態を以下のコマンドで確認します。


# getenforce

SELinuxの一時的な無効化する場合は以下のコマンドを実行します。


# setenforce 0

SELinuxを恒久的に無効化したい場合は、SELinuxのコンフィグをviエディタで開いて以下の記述を変更します。


# vi /etc/selinux/config

変更前:SELINUX=enforcing
変更後:SELINUX=disabled

変更したら[ESC]キーを押して":wq"で変更を保存してviエディタを終了、ゲストOSを再起動してください。

以降、configファイルでenforcingに戻さいない限りSELinuxは起動してきません。

firewallの無効化

現在のfirewalldの状態を以下のコマンドを確認します。


# systemctl status firewalld

出力された結果の5行目で「active (running) 」と表示されている場合は、firewallが動作している状態となります。

# systemctl status firewalld

● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
Active: active (running) since Tue 2023-08-29 23:04:15 JST; 22min ago
Docs: man:firewalld(1)
Main PID: 823 (firewalld)
Tasks: 2 (limit: 22862)
Memory: 42.8M
CPU: 784ms
CGroup: /system.slice/firewalld.service
mq823 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid

停止する場合は以下のコマンドを実行します。


# systemctl stop firewalld

コマンド実行後に再度「systemctl status firewalld」を実行して状態を確認します。

出力された結果の5行目で「inactive (dead) 」と表示されていれば停止状態となります。

# systemctl status firewalld

○ firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
Active: inactive (dead) since Tue 2023-08-29 23:26:42 JST; 2s ago
Duration: 22min 26.087s
Docs: man:firewalld(1)
Process: 823 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)
Main PID: 823 (code=exited, status=0/SUCCESS)
CPU: 1.668s

firewallを恒久的に無効化したい場合は、以下のコマンドを実行します。


# systemctl disable firewalld

firewallの自動起動が無効化されたかどうかは、以下のコマンドで確認できます。


# systemctl is-enabled firewalld

「disabled」と表示されれば自動起動が無効化されている状態です。

SELinux、firewallの無効化については、セキュリティに関わる部分ですので個人の検証環境とかではなく社内のサーバーとかの場合は、社内のセキュリティ規定に従って正しく設定してください。

ゲストOSでプロキシサーバーを利用する場合

社内からインターネットを利用する場合は、プロキシサーバーを経由するようになっているかと思います。

ゲストOS側でyumやdnfなどでパッケージのインストールやアップデートする場合、プロキシサーバーの設定をしないとエラーとなります。

プロキシサーバーの設定は、各コンフィグファイルで設定しておくことも可能ですが、ユーザー認証が必要となる場合だとプロキシサーバーを利用する際のユーザーIDやパスワードがコンフィグファイルに記載されることになるのであまり好ましくありません。

なので都度exportコマンドでプロキシサーバーの設定をします。

ユーザー認証が必要な場合

プロキシサーバー利用時のユーザーIDを「sato」、パスワードを「pass123」、プロキシサーバーが「srvproxy.abc.com」で使用するポート番号が「8080」とした場合のexportコマンドは以下のようになります。

export http_proxy=http://sato:pass123@srvproxy.abc.com:8080/
export https_proxy=http://sato:pass123@srvproxy.abc.com:8080/

上記2つのコマンドをそれぞれ実行すれば実行ユーザーで一時的にプロキシサーバーが利用できるようになります。

ユーザー認証が不要な場合

プロキシサーバー利用時にユーザー認証が必要ない場合は、以下のようになります。

export http_proxy=http://srvproxy.abc.com:8080/
export https_proxy=http://srvproxy.abc.com:8080/

ユーザー認証が必要ないのであればコンフィグファイルに記載したほうがめんどくさくなくて良いかもしれません。

pacファイルが指定されている場合

プロキシサーバーの指定にpacファイルが指定されている場合、exportコマンドでpacファイルを直接指定することはできません。

pacファイルの内容を確認し、自分のPCがインターネットに出る際に利用されるプロキシサーバーを確認してそのプロキシサーバー名を指定するようにしてください。

pacファイルの中身の確認は、ブラウザのアドレスバーにpacファイルのURLを入力して[Enter]を押せばブラウザ上に表示されます。

まとめ

VMware Workstation Playerを使ってホストOSとゲストOS間で通信する設定方法及びその他補足情報について紹介しました。

zabbixの検証をしたいと思って環境を作ったのですが、若干ハマったので次回はすんなり環境が作れるように記事にしました。

zabbixのインストールについては、別の記事を作成予定です。

コメント

タイトルとURLをコピーしました