ubuntuでapt-getが名前解決できなかった
しばらく何も書いてなかったの、たまにはCTF関係ないことも書きます。
カテゴリー的には、「技術的に苦戦したことの覚書」
内容的に多くなったので、2つの記事にわけて書きます。
その1の内容は、「ubuntuでapt-getしようとしても名前解決できない」です。
http[:]//archive[.]ubuntu[.]com/ が一時的に解決できません 的な文言が出てきます。
404で見つかってない場合は old-releases にすればいいのですが、今回は明らかにDNS面で問題が起きているので探っていきます。
まずはDNSの指定がきちんとなされているかを調べます。
/etc/resolve.conf に直書きでもいいのですが、このファイルは動的に変わるよ、的なことを言われます。
ubuntu 12.04 以降は、/etc/network/interfaces にて、
dns-servers 8.8.8.8
のように指定します。
書き換えたら、
sudo service networking restart
で反映させます。
cat /etc/resolve.conf
して確認できればok。
が、しかし、適切なDNSサーバを設定してもapt-getで名前解決してくれない・・・
色々いじっていると、以下のことがわかりました。
・ping www.google.com は通らない(解決できない)
・nslookup www.google.com は通る
つまり、DNSサーバの設定は合ってそうなのに、それをうまく使ってくれてない感じ。
調べてみると、名前解決の参照順位などを設定するファイルがあることがわかりました。
というわけで、/etc/host.conf 、 /etc/nsswitch.conf を編集します。
hostが古くてnsswitchが新しいぐらいの認識です。
例えば、/etc/host.conf で
order hosts,dns
と書いてあれば、/etc/hostsを見てわからなければDNSサーバに問い合わせる、という優先順位です。
同様に、/etc/nsswitch.conf で
hosts:files dns
のように書いてあれば上とまったく同じ意味です。
今回は、/etc/nsswitch.conf を見るとdnsが書いてありませんでした。
なので、/etc/hostsにないものは問い合わせないしアクセスできません!という状態でした。そりゃ名前解決できないですね。
まぁ研究室に転がってたマシンをそのまま使っているので、以前になにかしらあって設定が書き換えられていたんだと思います。
というわけで、/etc/nsswitch.conf にdnsを書き加えることで無事名前解決できるようになりました。めでたしめでたし。