🛜

大学内で設定したVirtualBox上のDebianが大学外だとネットに繋がらない

に公開

はじめに

筆者の所属大学院の講義にて,VirtualBoxの仮想環境上でDebian GNU/Linuxをインストールして使用する機会がありました.
大学内で環境構築を済ませた直後は問題なく使用できていたのにもかかわらず,自宅から仮想OSを起動したところ,ネットワークに繋がらない不具合が発生しました.
本記事では,その際に色々と調べたりChatGPTに聞いたりして解決した話を備忘録として残しています.

仮想OSからネットワークに繋がらなくなった

講義内で,DebianのGUI環境を構築し,VisualStudio CodeをインストールしてClineを使ったAIコーディングを行う課題が出されました.
わざわざ仮想OSを立てて作業する理由はイマイチわかってない(ネットワーク系の講義なので後々仮想OSで色々やるのかも?)のですが,Linuxには一度触れてみたかったのでちょうどいい機会だと思い意欲的に取り組んでいました.
友人とも協力して環境構築を完了し課題のコードをClineで書いたりして,その際は特に問題なく動作していたのですが...

帰宅後,課題の続きを行おうとしたら,先程までは問題なく動いていたのに,突如Clineがエラーメッセージを返すようになってしまいました.
エラーメッセージを見たところ,どうやらネットワークへの接続がうまくできていないようです.
ホストOSは問題なくネットワークに繋がっているので,何かDebian側の設定ミスかな?と思い,色々と検証をしてみました.

現在の状態

現状をまとめるとこのような感じです.

  • ゲストOSのDebianからインターネットに接続できない
    • Clineだけでなく,ブラウザ等も軒並み接続ができなくなっている
  • ホストOSは問題なくネットワークに接続できている

また,大学のVPNを用いて学内ネットワークに接続したところ,インターネットへ正常に接続できました.なんで??

pingしてみる

とりあえずpingを打ってみて動作確認を行ってみました.
chatGPT等を頼りつつ,以下のようにNATゲートウェイへの疎通確認,IP直打ちでの疎通確認,名前解決をしての疎通確認を行いました.

# NAT のゲートウェイ疎通確認 → OK ならルーティングは問題なし
$ ping -c3 10.0.2.2
PING 10.0.2.2 (10.0.2.2) 56(84) bytes of data.
64 bytes from 10.0.2.2: icmp_seq=1 ttl=255 time=1.65 ms
64 bytes from 10.0.2.2: icmp_seq=2 ttl=255 time=0.515 ms
64 bytes from 10.0.2.2: icmp_seq=3 ttl=255 time=0.689 ms

--- 10.0.2.2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2109ms
rtt min/avg/max/mdev = 0.515/0.949/1.645/0.496 ms
# IP 直打ちでインターネット疎通確認
$ ping -c3 8.8.8.8
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=255 time=7.37 ms
64 bytes from 8.8.8.8: icmp_seq=2 ttl=255 time=8.05 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=255 time=10.1 ms

--- 8.8.8.8 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 7.370/8.495/10.069/1.146 ms
# 名前解決テスト
$ ping -c3 google.com
ping: google.com: 名前解決に一時的に失敗しました

結果はこのようになり,どうやら名前解決を失敗してしまっているようです.
なので,DNSの設定を見直しました.

DNS設定の見直し

学内ネットワークからでは問題なく名前解決が出来るが学外のネットワークでは名前解決ができない状態になっていることがわかったので,DNSの設定の確認・変更を行います.

設定の確認

まずはDNSの設定を確認します.

$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 10.0.2.3

nameserver 10.0.2.3は,VatualBoxのキャッシュDNSサーバらしいです.
本来はこれで問題ないはずなのですが,調べてみると同様にネームサーバが10.0.2.3になっていて名前解決ができなくなっているケースが散見されたので,今回のケースも同様の症状なようです.

設定の変更

ネットワークインタフェースの設定を変更します.
今回は,GoogleのパブリックDNSサーバ8.8.8.8または8.8.4.4を追記します.
/etc/network/interfacesに,以下の内容を追記します.

auto enp0s3
iface enp0s3 inet dhcp
    dns-nameservers 8.8.8.8 8.8.4.4

次に,ネットワークインタフェースを再起動します.

$ sudo ifdown enp0s3 && sudo ifup enp0s3

おそらくこれでDNS設定が書き換わるはずです.DNSの設定を改めて確認します.
筆者の環境では,DNS設定は以下のようになっていました.

$ cat /etc/resolv.conf
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "resolvectl status" to see details about the actual nameservers.

nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 10.0.2.3

無事GoogleのDNSサーバのアドレスが登録されました.

ちゃんと疎通するか確認

もう一度google.comにpingを打ってみる.

$ ping -c3 google.com
PING google.com (142.250.206.206) 56(84) bytes of data.
64 bytes from kix07s07-in-f14.1e100.net (142.250.206.206): icmp_seq=1 ttl=255 time=11.5 ms
64 bytes from kix07s07-in-f14.1e100.net (142.250.206.206): icmp_seq=2 ttl=255 time=15.6 ms
64 bytes from kix07s07-in-f14.1e100.net (142.250.206.206): icmp_seq=3 ttl=255 time=14.2 ms

--- google.com ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2005ms
rtt min/avg/max/mdev = 11.532/13.764/15.573/1.676 ms

無事名前解決ができて疎通確認ができた!

Clineやブラウザも問題なく動作するようになりました.
これにて一件落着です.

さいごに

仮想OSが正常にインターネットに接続できない問題の原因はDNS設定でした.
GoogleのパブリックDNSを設定することで,問題なく動作するようになりました.

筆者はLinuxやVimの操作に精通しておらず,色々と操作に戸惑うところも多かったですが,無事解決することができて良かったです.
ChatGPTとインターネットさまさまです.

GitHubで編集を提案

Discussion