初めに
今回は、VirtualBox上でAlmaLinux 9.5を起動した際に、インターネット接続ができないという問題に直面しました。
具体的には、ping 8.8.8.8
や curl google.com
を実行しても応答が返ってこない状態でした。
この記事では原因と対処法について書いています。
同じような環境でネットワークに接続できなくて困っている方の参考になれば嬉しいです!
使用環境
- 仮想マシン:AlmaLinux 9.5
ovaファイルからインポート - 実行環境:VirtualBox(ネットワークは NAT + ホストオンリー)
インポート時はアダプター1にホストオンリーアダプターのみ
NATは後から追加 - 症状:仮想マシンが外部ネットワーク(インターネット)に接続できない
NATのIPアドレスが192.168.x.xになっていて、10.0.2.xにならない - デフォルトゲートウェイは設定済み
原因の分析
*enp0s3がホストオンリーアダプター(アダプター1)
*enp0s8がNAT(アダプター2)
画像のアダプター2がNATに設定をしているのに10.0.2.xになっていない。そのため外部と接続することができない。
そこでチャットgptにたくさん質問をしていると、「DHCPが有効になっていない可能性がある」とのことだったのでnmcli
コマンドで接続設定を確認すると、DHCPが無効になっており、IPアドレスが手動(固定)で設定されていました。
nmcli connection show enp0s3 | grep ipv4.method
ipv4.method: manual
この設定では、NAT側のDHCPサーバーからIPアドレスを自動取得できないため、インターネットとの通信ができなくなっていました。そのため、manualからautoに変更する必要があります。
以下のコマンドでDHCPを有効化し、ネットワークサービスを再起動することで、DHCPが有効化にされ、10.0.2.xのIPアドレスが取得されます。
nmcli connection modify enp0s8 ipv4.method auto
ネットワークサービスを再起動(OSを再起動しても大丈夫です)
sudo systemctl restart NetworkManager
sudo shutdown -r now
しかし、ここで新たな問題に直面します。というのはDHCPが有効化されて外部と接続するための10.0.2.xが取得されているが、インターネット通信ができないという問題です。
そこでenp0s3(ホストオンリーアダプター)が優先してpingコマンドの処理にあてられていると考え、enp0s8(NAT)が優先されるよう値を変更したのですが、pingが通ることはありませんでした。
原因を探すために、過去にLAMP環境を構築したマシンが残っていたのでそこで確認をするとOSのip route コマンドの実行結果など違いはありませんでしたが、アダプターがNATが1、ホストオンリーアダプターが2と逆に設定されていました。「関係ないだろうけど一応やってみるか」と思い変更して確認してみるとpingコマンドが成功し、外部と接続ができました。
解決方法をまとめると、
1.NATをアダプター1に、ホストオンリーアダプターをアダプター2に設定
2.デフォルトゲートウェイを設定
sudo ip route add default via <ゲートウェイのIPアドレス> dev <インターフェース名>
3.DHCPを有効化
nmcli connection modify <接続名> ipv4.method auto
4.NetworkManagerを再起動
疑問点
何とかインターネット通信をすることはできましたが、いくつかの疑問点が残ってしまいました。
- なぜアダプターを変更すると成功したのか
- アダプター2に設定したNATは使用できないが、ホストオンリーアダプターが使用できるのはなぜか
- IPアドレスが取得できていたのにインターネット通信ができなかったのはなぜか
VirtualBoxはアダプターの順序がDHCPの動作に影響を与える可能性があるというユーザの報告などがありました。(海外の投稿を翻訳してみたので間違っているかもしれない)
まとめ
- VirtualBoxで外部ネットワークに接続するには、NATアダプター + DHCPが必要
- アダプター1にNATを設定する
- ip route で確認できるデフォルトゲートウェイの設定が必要
-
ipv4.method
がmanual
になっていると、自動でIPが振られずネットにつながらない -
nmcli
でauto
に設定すればDHCPが使えるようになる
いくつかの疑問点が残ってしまいましたがインターネット通信をすることができてよかったです。