VirtualBoxのゲストOS(CentOS)にsshでアクセス & ゲストOSからネットに接続する設定
備忘録です。
単純に素でインストールしてNAT設定のみにしたら、内部向けのアドレスが安定しなかったので、ネットワークを2つに分けました。
VirtualBox 6.1
ゲストOSは CentOS 7.8
ホストOSは、Windows10 Home です。
おそらくは他のOSでもゲストOS側の投入コマンドを読み替えれば、同じような手順で動くでしょう。
VirtualBox側の設定
VirtualBoxマネージャーから
ファイル>ホストネットワークマネージャ を起動
VirtualBox Host-Only Ethernet Adapter があることを確認し、プロパティに表示されているIPv4アドレスをメモしておきます。
また、IPv4ネットマスクが 255.255.255.0 になっていることを確認します。
続いて、インストール済の仮想マシンの設定画面を開きます。
ネットワーク>アダプター1 を選び、割り当てを「NAT」にします。(こちらはホストOSのNATを通じて、インターネットアクセスを行います。)
続いて、アダプター2 を選択し、「ネットワークアダプターを有効化」のスイッチをON, 割り当てを「ホストオンリーアダプター」を選択します。(こちらのアドレスを用いて、ホストOSからのSSH接続を処理します。)
ここまででVirtualBox側の設定は終わりです。続いてゲストOS側の設定に移りますので、起動します。
ゲストOS(CentOS)側の設定
ゲストOS側では2つのネットワークに接続されています。
$ ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:43:7a:6d brd ff:ff:ff:ff:ff:ff inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s3 valid_lft 82685sec preferred_lft 82685sec inet6 fe80::a00:27ff:fe43:7a6d/64 scope link valid_lft forever preferred_lft forever 3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 08:00:27:8f:7a:9b brd ff:ff:ff:ff:ff:ff inet 192.168.56.100/24 brd 192.168.56.255 scope global noprefixroute enp0s8 valid_lft forever preferred_lft forever inet6 fe80::dcb2:d32e:1c20:df04/64 scope link noprefixroute valid_lft forever preferred_lft forever 4: virbr0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000 link/ether 52:54:00:a9:95:d2 brd ff:ff:ff:ff:ff:ff inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0 valid_lft forever preferred_lft forever 5: virbr0-nic: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast master virbr0 state DOWN group default qlen 1000 link/ether 52:54:00:a9:95:d2 brd ff:ff:ff:ff:ff:ff 6: docker0: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default link/ether 02:42:9b:7f:73:05 brd ff:ff:ff:ff:ff:ff inet 172.17.0.1/16 scope global docker0 valid_lft forever preferred_lft forever
上記の例では、"enp0s3″と"enp0s8″ですが、後者の方がホストオンリーアダプターに接続されています。
IPv4タブを開き、
・IPv4メソッド:手動
・アドレス>アドレス: VirtualBox Host-Only Ethernet Adapter を表示した際にメモしたアドレスより、同じネットワークのアドレスを採番して記載(上記の例では100を利用)
・アドレス>ネットマスク: 同様に 255.255.255.0 を記載
・アドレス>ゲートウェイ: 外向けGWとして “enp0s3″側の方を利用するため、ここは未記載のまま
・DNS: メモしたアドレスを記載
上記を記入したうえで、適用ボタンをクリック
設定の読み込み
$ sudo systemctl restart network.service これで反映されたなかった場合は、システムを再起動 $ reboot
手動で行う場合は、nmcli コマンドを使うなどで行ってください。以下、設定確認の例
$ nmcli d show enp0s8 GENERAL.DEVICE: enp0s8 GENERAL.TYPE: ethernet GENERAL.HWADDR: 08:00:27:8F:7A:9B GENERAL.MTU: 1500 GENERAL.STATE: 100 (接続済み) GENERAL.CONNECTION: enp0s8 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveConnection/2 WIRED-PROPERTIES.CARRIER: オン IP4.ADDRESS[1]: 192.168.56.100/24 IP4.GATEWAY: -- IP4.ROUTE[1]: dst = 192.168.56.0/24, nh = 0.0.0.0, mt = 101 IP4.DNS[1]: 192.168.56.1 IP6.ADDRESS[1]: fe80::dcb2:d32e:1c20:df04/64 IP6.GATEWAY: -- IP6.ROUTE[1]: dst = fe80::/64, nh = ::, mt = 101 IP6.ROUTE[2]: dst = ff00::/8, nh = ::, mt = 256, table=255
設定の確認
まずはゲートウェイがNAT側のネットワーク enp0s3のみに設定されていることを、routeコマンドで確認します。
ssh接続は、ゲストOS側で接続が受け入れられること(サービスが起動している。ファイアウォールのポートが開いているなど)を前提に、TeraTermなりPuttyなどの端末ソフトで、先に指定したアドレス(上記の例では、192.168.56.100)に向けて接続してみてください。
インターネット側には、適当なサーバーに向けて ping を飛ばしてみると良いでしょう。
特に問題がなければ、ここまでの手順でインターネット接続が出来て、ホストOS側からゲストOSに向けたSSH接続が出来るはずです。不調な場合、要因はいろいろと考えられますが、そもそもホスト側の問題はないか。設定登録ミスはないか。ファイヤーウォールなどの阻害要因はないかなど、追ってみてください。