Help us understand the problem. What is going on with this article?

macでnslookupできるけどpingできない時の対処法

More than 1 year has passed since last update.

mac で nslookup できるけど ping できないことがあり、解決方法を調べたのでメモします。

結論

僕のケースでは、次のコマンドで直りました。

sudo killall -HUP mDNSResponder

症状

なにかコード書いて、いざ git push しようとするとエラーになることがしばしばありました。
再起動すればとりあえず直るんですが1時間に1回とか再起動するハメになり面倒です。

$ git push
ssh: Could not resolve hostname github.com: nodename nor servname provided, or not known
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

DNS の不具合かなーと思ったんですが DNS とは疎通できています。

$ nslookup github.com
Server:        8.8.8.8
Address:    8.8.8.8#53

Non-authoritative answer:
Name:    github.com
Address: 192.30.255.113
Name:    github.com
Address: 192.30.255.112

ただし git push の他に ping とか curl も動きません。

$ ping github.com
ping: cannot resolve github.com: Unknown host

調査内容

なぜ名前解決できるのに ping が疎通しないかを調べたところ、 nslookup や dig は DNS サーバに問い合わせるのに対し、 ping や curl は mDNSResponder に問い合わせるのが理由のようでした(Ask Different: DNS Resolution Fails for ping and curl, but not dig)。

解決方法としては mDNSResponder を再起動すればよいようです(Ask Different: DNS not resolving on Mac OS X)。このQ&Aには再起動方法として次のコマンドが提案されています。

sudo launchctl unload -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist
sudo launchctl load -w /System/Library/LaunchDaemons/com.apple.mDNSResponder.plist

しかしこのコマンドを打つと Operation not permitted while System Integrity Protection is engaged というエラーメッセージとともに失敗します。

Qiita: El CapitanのSystem Integrity Protection(rootless)の解除方法 にはエラーを回避する方法が書かれていますが、同記事によると

System Integrity Protectionは、そもそもマルウェアからの攻撃をかわすためのセキュリティ機能のようなので不用意に設定をオフにするのは推奨されません。くれぐれも自己責任での実行をお願いします。

ということなのであまり気が進みません。

もう少し簡素な方法がないか調べたところ https://gist.github.com/mipmip/1844353 に mDNSResponder のプロセスにシグナルを送って再起動を行う方法があり、試してみたら症状から回復しました。

sudo killall -HUP mDNSResponder

本質的な原因は謎ですが、とりあえずこの対処療法で我慢中です。

関連記事

set0gut1
東京の野良プログラマです。 CEO, CTO, 代表取締役ではないです。 各種アカウント等 → https://set0gut1.com/
https://set0gut1.com/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした