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接続が出来るはずです。不調な場合、要因はいろいろと考えられますが、そもそもホスト側の問題はないか。設定登録ミスはないか。ファイヤーウォールなどの阻害要因はないかなど、追ってみてください。