質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.60%

仮想環境(Vagrant)でcurlを打つとエラー「Couldn't resolve host」

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 4,349

score 61

こちらの質問との繋がりです。
Railsでgemの追加ができなくなった。

根本的な原因として、以下の問題に直面しています。

vagrant up後、vagrant ssh後(Windowsコマンドプロンプト)

vagrant@vagrant-ubuntu-trusty-32:/vagrant/AppName $ nslookup rubygems.org
;; connection timed out; no servers could be reached

vagrant@vagrant-ubuntu-trusty-32:/vagrant/AppName $ curl https://rubygems.org/
curl: (6) Could not resolve host: rubygems.org

 vagrant@vagrant-ubuntu-trusty-32:/vagrant/AppName $ nslookup www.yahoo.co.jp
;; connection timed out; no servers could be reached

vagrant@vagrant-ubuntu-trusty-32:/vagrant/AppName $ curl www.yahoo.co.jp
curl: (6) Could not resolve host: www.yahoo.co.jp

vagrant up後、vagrant ssh前(Windowsコマンドプロンプト)

C:\Users\hoge\Desktop\vagrant> nslookup rubygems.org
サーバー:  UnKnown
Address:  2404:1a8:7f01:b::3
権限のない回答:
名前:    rubygems.org
Addresses:  2a04:4e42::70
151.101.0.70
151.101.64.70
151.101.128.70
151.101.192.70

C:\Users\hoge\Desktop\vagrant> curl https://rubygems.org/
<!DOCTYPE html>
<html lang="en-us">
<head>
<title>RubyGems.org | your community gem host</title>
:
:
</body>
</html>

まずお聞きしたいのですが、
これってつまり「バーチャルマシンからネットへ接続できていない」という解釈で合っていますか?

そして、以下の参考ページと同じで、
「/etc/resolv.confのDNS設定がおかしい為に取得失敗していた」という結論に至りそうですか?
参考:curlで「Couldn't resolve host」エラーが出た場合の対処

仮にそうだったとして、この参考ページでは

/etc/resolv.conf

nameserver 8.8.8.8

上記のように修正し、apacheを再起動しcurlを再実行するとうまくいきました。


と紹介されていて、これで治るならやってみようと思います。
ただ、この場合、以下に挙げた点がわからないのでご教授願いたいです。

前提1:
viエディタなるものにはまだ触れた経験がなく、今後一から勉強しなくてはならないと思うのですが、今の優先事項は試作アプリに必要なgemをinstallすることなので、今回は必要なコマンド操作だけを教えていただきたいです。

前提2:
$ vi /etc/resolv.conf と入力するとよくわからない空欄しかない画面になり、とりあえず浅い知識で:q!と打って脱出した現状です。

わからない点

  1. nameserver 8.8.8.8という記述はどのようにすればよいのでしょうか?
  2. windows10のスタートメニューからコントロールパネル<ネットワークと共有センター<アダプター設定の変更<インターネットプロトコルバージョン4(TCP/IPv4)(あるいは6)でDNSサーバーを8888と書くのでは違うのでしょうか?
  3. 「apacheを再起動し」とありますが、apacheなんて使ったことないのですが…?

勉強不足は痛感しております。ご助力願えると幸いです。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

+1

まず、参考にされているサイトはCentOS6で記載されていますので、質問者の方が使われている
Ubuntuでの設定とは異なります。
また、Ubuntuでのネームサーバ指定設定についてはバージョンによって異なりますので、
バージョンまで指定しての検索をお勧めします。(最近のubuntu,CentOSでは/etc/resolv.confを直接編集しません。)
resolve.confではなくresolv.confです。

1. nameserver 8.8.8.8という記述はどのようにすればよいのでしょうか?

viエディタで編集するという点は変わりませんので、viエディタの使い方については調べておかないと
何もできません。
もし環境を壊してしまうのではないかという懸念があるのでしたら、virtualboxのsnapshot等の
機能を使ってみてください。
viエディタの使い方

2. windows10のスタートメニューからコントロールパネル<ネットワークと共有センター<アダプター設定の変更<インターネットプロトコルバージョン4(TCP/IPv4)(あるいは6)でDNSサーバーを8888と書くのでは違うのでしょうか?

設定したい内容については同じですが、今回変更したいのはUbuntuですよね?
Windows10で設定変更してもUbuntuからの名前解決は成功しないと思います。

3. 「apacheを再起動し」とありますが、apacheなんて使ったことないのですが…?

参考にされている記事があまりよくありません。前提環境が記載されていないです。
正しくはネットワークサービスの再起動等だと思います。ネームサーバ変更の記事に変更を適用する方法
として記載されていると思います。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/14 10:21

    ozwind918さん
    回答ありがとうございます。
    追加でお聞きしたいです。
    /etc/resolv.conf の中にある nameserver の部分を`nameserver 8.8.8.8`と書き換える、のかと思っていたのですが、`$ cat /etc/resolv.conf `とコマンド入力すると`cat: /etc/resolv.conf: No such file or directory`と返りました。
    つまり、 /etc/resolv.confにもともと設定してある`nameserver …`を書き換えるのではなく、新たに /etc/resolv.confファイルを作って何も無いところに`nameserver 8.8.8.8`を書く、という解釈で合っているでしょうか。

    キャンセル

  • 2019/02/14 10:47

    うーん。resolv.confがないということであれば、ご認識の通りresolv.confを作ってnameserver 8.8.8.8を書けばとりあえず場当たり的には解決できると思います。
    ただ、どのような環境でそのようなことになっているのかはわかりませんので、一度包括的に勉強して仮想マシンを再作成された方がよいと思います。
    環境に沿った最適な設定方法についてはteratail等といったQ&Aサイトでは答えを得られません。
    あくまでQ&Aなので、記載された情報についての回答でしかありません。
    /etc/resolv.confがない状況に対しては作成すればとりあえずは動くと思いますが、なぜないのか。最初からないのかそれとも何かをしてなくなったのか。等、それぞれの環境によって根本的な解決方法は異なります。
    そういった環境に対しての根本的な解決をするには、基本的な知識を自分で身に着けて局所的な分からない部分はQ&Aサイトで聞く、知人・友人・先生等の詳しい人に聞く、https://menta.work/のようなサービスでお金を支払ってサポートしてもらう等が良いと思います。

    キャンセル

  • 2019/02/14 12:55

    ozwind918さん
    返信ありがとうございます。
    やはりファイルを作るところからですか。何かをしてファイルを消してしまった可能性も考慮しつつ、/etc/resolv.confファイル周りをより掘り下げて調べてみようと思います。
    おかげさまでまた一歩進めました。ありがとうございました。

    キャンセル

-1

前回の質問を途中で締めている理由がわからないですが、あなたと同じ環境が用意できるわけではないので、やってみたらいいじゃないですか。
なぜやらずに質問するのでしょう?

今回は必要なコマンド操作だけ

「モード切り替え、保存、終了」って教えてもらってるじゃないですか。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/02/13 22:25

    macaron_xxxさん
    回答ありがとうございます。
    >前回の質問を途中で締めている理由がわからないです
    前回の質問を通してより根本的な部分に問題があることに気づきました。そちらを解決すれば前回の質問は自己解決できそうだったので、それを解決するための別の質問を立てました。また、丁寧に回答していただいたのにベストアンサーを出さずに別の質問に移っては失礼かなとも思いました。解決にする理由はコメント欄に示したつもりです。

    >あなたと同じ環境が用意できるわけではないので、やってみたらいいじゃないですか
    同じ環境を用意できないと回答できない質問はしていないと思います。教えていただきたい点は明確に示しています。

    >なぜやらずに質問するのでしょう?
    「前提」として書いた通り、やってみたけどわからなかった、これでいいのか不安だった、ので質問させていただいています。初心者であることは大前提として示しています。いずれにせよ、回答として「やってみればいい」はどうかと思います。他の方の質問にも同様に回答されているようでしたら、ぜひそれは「質問への追記・修正の依頼」を通して「とりあえずやってみて、どうだったかを追記してください。」という表現に変えた方が親切だと思います。

    >「モード切り替え、保存、終了」って教えてもらってるじゃないですか
    「最低限の操作を調べてからやった方がいいですよ」というアドバイスの、最低限の操作の例として「モード切り替え、保存、終了」等を挙げられたのではないでしょうか。「モード切り替え、保存、終了」とだけコマンドを入力しても /etc/resolv.conf に nameserver 8.8.8.8 は追記できないと思います。

    始めたばかりで色々手探りで進めています。回答者さんの「とりあえずやってみる」という考えは正しいと思いますが、前にろくに調べもせずvagrantfileをいじって、しばらくvagrant upすらできなくなったことがありました。この件が取り返しのつかない事態を招くわけではない、という確信があればとりあえずやってみますが、前提に示した通り、$ vi /etc/resolv.confを叩いた感じで不安を覚えたため質問しています。
    また、これも前提に示した通り、こちらの都合で今の最優先事項はアプリにgemをinstallすることなので、とりあえずやってみることはリスクと見なし、このような質問をしています。

    「やってみればいい」という回答は私でも書けます。質問文が拙く、こちらの思いが通じなかったようで申し訳ありませんが、何かありましてもこれ以上の返信・コメント等は質問の趣旨から逸れてしまいますので控えていただけると助かります。

    キャンセル

  • 2019/02/14 09:18

    vagrantfileに限らず、環境を変更する際には最低限やったことはメモしたりする必要が有ります。
    可能であればgit等を使用して履歴管理するのが良いです。何か間違っても正常に起動していた頃に戻すことができますので。

    キャンセル

  • 2019/02/14 10:27

    Gr.さん
    質問に対してはozwind918さんがいい回答をしてくれているので、単なるおせっかいコメントですが。
    いろいろと見ている感じ、今本当に必要なのは、ローカル開発環境やruby、railsについて体系的に学ぶことと、自分で調べる方法を身につけることではないかと思います。

    ■体系的に学ぶ
    始めたばかり、勉強不足は痛感、など書かれていますが、だからこそ一度立ち止まって勉強してみませんか?
    場当たり的にここで質問しながら進めていくのには限界があると思います。必ずしも答えが得られるとは限りませんし、質問文を書くのもかなり時間をかけているのではないかと思います。局所的な知識しか得られないので、あまり自分の力にもならないと思います。
    一度体系的に学べば、自分の知識の核ができて、応用が効くようになります。結果的に今作ろうとしているものも早く完成するのではないでしょうか。
    体系的に、といってもひとまずは隅々まで網羅する必要はないので、手軽に始められるところからでいいと思います。
    例えばドットインストールをやってみるとか(このほかにもrubyやrailsもあります)。
    ローカル開発環境の構築 [Windows編] : https://dotinstall.com/lessons/basic_localdev_win_v2

    ■自分で調べる
    エンジニアとして生きていく上ではとても重要です。本当は、初心者がハマるようなところは大抵検索すれば出てくるはずです。途中でわからない言葉があれば、もちろんそれも調べてみましょう。今の段階だと分からない言葉だらけかもしれませんが、その場合はその界隈をまた勉強しましょう。放置して場当たり的に解決していてはいつまで経っても初心者です。
    viに関しては、存在を知らなかったようなので、最低限の操作を調べるよう親切心で書きましたが、それがこうやってまた質問に入るのはちょっと悲しいです。ためしに「vi 最低限」で検索してみてください。いくらでも記事は出てきます。

    学ぶ、調べるがちゃんとできるようになれば、いろんなものが作れるようになって楽しくなってくるはずです。がんばっていきましょう!

    キャンセル

  • 2019/02/14 12:58

    Kta-Mさん
    コメントありがとうございます。
    たしかに体系的に学ぶ必要性を感じています。
    習うより慣れろで、「実際に一個アプリを作ってデプロイまでしてみてから、わからないまま進めてきた細部を突き詰めよう」的なスタンスで臨み、周りに特に教えを請える相手もいないので自力で一から調べて無事デプロイまで成功したのですが、投稿画像が表示されない不具合(というかherokuの仕様でpushするたびに消えてしまうことへの対策)だけが現状未解決で、そこをクリアできればひとまずゴールで、体系的な学習に入れるといった段階です。なのでどうしてもcloudinaryのgemをインストールしたくて、まず「どうして今までできてたgemのinstallやbundle installができなくなったのか」という感じの質問からはじまり、Kta-Mさんはじめみなさまのご助力のもと、今は「Ubuntuからの名前解決が問題では?」というところまで掘り下げられました。
    アプリ自体は問題なく機能しているので、ここで一旦立ち止まって一から復習してもいいわけですが、このアプリは自分の中では99.9%の出来なので、残りの0.1%(gem 'cloudinary'のインストール)だけ片付けてしまいたいところですが、この問題の解決に3日や4日も時間を取られるようなら、いただいたアドバイスの通りここで一旦立ち止まって一から復習しようと思います。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.60%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る