kumama go言語とかgolangとかGAEとかネットサービスとかその他色々・・・

3Dec/09Off

goの名前解決(Linux)

なんやかんややりつつOAuthの実験にサーバにgoの吐いたオブジェクトを持っていった時の話。

どうしてもnet.dialで名前解決に失敗する。あれ?と思ってping打ってみたりnslookupしてみたりすると普通に名前解決できる。し、サーバじゃなければOSXでもLinuxでも普通に動くのだ・・・。

この辺、Issue 345: DNS being very flaky.見て、resolv.confにoptions?って思ったけどちょっと現象が違う。

んむむ、って思って go/src/pkg/net/dnsclient.goをじっと眺めると…解ったorz

普通、resolv.confのnameserver行にはプロバイダに割り当てられたDNSサーバのIPアドレス書くなり、dhclientが勝手に追記してくれるんだけど、このサーバ web兼、dns兼、mailというサーバで、ローカルでbind9が動いてるので、
nameserver localhostって設定が。

goのdnsclient.goは御丁寧にnameserverでの指定がIPアドレスかどうか見てくれてる。libresolvだと、/etc/host.conf見て/etc/hostsも見に行ってくれるんだけど。

って、事でnameserver 127.0.0.1に修正。あっさり動いた。

んー…、色々思うことも有るものの後術w

Filed under: golang Comments Off