使い始めた経緯
VitualBoxが使えない
長らく仮想マシンを使用していなかったのですが、家のローカルエリア内にプロキシ環境が必要となったため、仮想マシン上にCentOS8を入れて構築することに。久々にVirtualVoxを起動してCentOS8用の仮想マシンを作成するとエラーで起動出来ない。
VirtualVoxのアップデートも失敗するので再インストールを行い仮想マシンを起動すると、"VT-x is not available (VERR_VMX_NO_VMX)."の表示で起動出来ない。ネットで調べるとHyper-VがONの設定となっているとVirtualBoxは起動出来ないらしいですが、Hyper-Vを無効にしたり、色々試しましたが無理だったためHyper-Vを使用することにしました。
ちなみにHyper-VのせいでVirtualBoxが起動出来ないことと対処法は下記ページに書いてあります。
https://qiita.com/kuryus/items/f703000c6396127fd519
Hyper-Vとは
Microsoft製の仮想マシンソフトでWindows10 pro以上で使用出来ます。Windowsデスクトップの左下検索窓にて検索すると"Hyper-Vマネージャー"が見つかります。開くと下記のような管理画面が開きます。
新規仮想マシンの作成
ネットワークアダプタ設定の準備
仮想スイッチマネージャーを選択します。
仮想スイッチマネージャにて使用するNICの設定をします。ホストPCには2つの有線用NICがあるため、そのうち一つを仮想マシン用とし、ホストPCからは独立させます(ホストPCでは仮想マシン用に割り当てたNICは使用出来なくなります)。新規設定は「新しい仮想ネットワークスイッチ」から行います。名前は「セカンダリNIC」、ホストから独立させるため、「管理オペレーティングシステムに...許可します」のチェックを外します。
新規仮想マシンの作成
あとは新規→仮想マシンから仮想マシンの設定を行います。下記サイトを参考に行いました。
https://qiita.com/chenglin/items/ee4c2551dab39b770ccd
仮想マシンのセットアップ
インストールパッケージ
プロキシサーバーとするのでその辺のパッケージは入れておくとして、開発ツール、Webサーバー等もインストールしました。
ネットワーク関連の設定
インストール作業ではネットワークアダプタをDefaultSwhichにて行ってしまったので、ホストのセカンダリNICを追加してセットアップを行います。まずはコマンドで現在のネットワークアダプタの状態を確認します。
# nmcli device DEVICE TYPE STATE CONNECTION eth0 ethernet connected eth0 eth1 ethernet disconnectid -- # nmcli connection show NAME UUID TYPE DEVICE eth0 ######################### ethernet eth0
eth1が接続されていないので追加し、固定IPで設定します。設定は下記のサイトを参考にしました。
https://go-journey.club/archives/4124
https://server-network-note.net/2020/03/centos8-set-network-ip/
# nmcli connection add type ethernet ifname eth1 con-name eth1 Connection 'eth1' (###############################################)successfully added. # nmcli connection modify eth ipv4.address 192.168.###.###/24 # nmcli connection modify eth ipv4.gateway 192.168.###.### # nmcli connection modify eth ipv4.dns 192.168.###.### # nmcli connection modify eth ipv4.method manual # nmcli connection up
sshdのセットアップを行います。今回はローカルエリア内での構築なので、portはデフォルトの22番で設定します。まずはsshdの設定ファイルを変更します。
# vi /etc/ssh/sshd_config
変更内容は下記内容です。
PermitRootLogin no #追加(rootログイン禁止、centOS7まではコメントアウトで存在したがcentOS8は無くなっていた) PasswordAuthentication yes #変更、コメントアウト削除 DenyUsers ALL #追加、すべてのユーザーのログイン禁止 AllowUsers *** #追加、ログインユーザー許可ユーザーを選択
次にfirewallの設定変更を行う。基本的にインストール時にsshdを入れていればfirewallにサービスが追加されているので、ポートを追加するだけでよいです。
# firewall-cmd --add-port=22/tcp --zone=public --permanent success # firewall-cmd --reload
これでTeraTerm等のターミナルソフトから接続可能な状態ですが、sshdを後から入れた場合はfirewallにサービスが登録されていない可能性があるため、下記コマンドでサービスの追加が必要です。
# firewall-cmd --add-service=sshd --zone=public --permanent success # firewall-cmd --reload
実際のサーバーでの注意点
今回はとりあえずssh通信出来るところまで行うのが目的だったので受付portを22番のまま設定を行いましたが、実際のサーバーではセキュリティを考えてportはデフォルトから変更を行うべきです。その場合はsshd_configの変更とfirewallへのport登録に加えてSElinuxの設定変更が必要になります(長くなるので別記事で触れることにします)。書籍やネットの記事を見ると、よく設定手順としてfirewallとSElinuxを無効にすると記載しているものがありますが運用上は良くないので、限定的に安全を確保した上で行うようにした方が良いと思います。
Hyper-Vの良くない点
仮想マシンのコピーが出来ない
チェックポイントという機能が用意されており、おそらく設定しておいた状態に戻すことが出来るのだと思いますが、ユーザーとしては自由にコピーが出来る機能を実装して頂いた方が都合が良いと思います。