ブログ

Armadillo-IoTで名前解決ができない

at_takuya.sasaki
2016年7月3日 20時10分

Armadillo-IoTで3G接続はできているが、ホスト名指定でのアクセスができない(名前解決ができない)というお問い合わせをいただきました。

[root@armadillo-iotg (ttymxc1) ~]# ping google.com
ping: unknown host google.com

このような場合、まずはDNSサーバの設定が正常に/etc/config/resolv.confに書き込まれているか確認します。

[root@armadillo-iotg (ttymxc1) ~]# cat /etc/config/resolv.conf
search IFX_CDCECM
nameserver xx.xx.xx.xx

上記の様にDNSサーバが正常に設定されている場合は、DNSサーバにpingが通るか確認してみます。

[root@armadillo-iotg (ttymxc1) ~]# ping xx.xx.xx.xx
PING xx.xx.xx.xx (xx.xx.xx.xx): 56 data bytes
64 bytes from xx.xx.xx.xx: icmp_seq=0 ttl=60 time=2382.4 ms

pingが通る場合には、ファイアーウォールでUDPパケットをDROPしている可能性があります。 iptabes -Lコマンドを実行し、INPUTルールでUDPパケットを受け付ける(ACCEPT)しているか確認してみてください。 (標準イメージでは、UDPポートの1024から65535までをACCEPTしています)

 [root@armadillo-iotg (ttymxc1) ~]# iptables --L

もし、UDPパケットをDROPしているような場合は、これを受け付ける(ACCEPT)する必要があります。 標準イメージのように広い範囲でUDPポートを解放するのに問題がある場合は、ポートを絞る必要が あります。
ただし、DNSサーバと、Armadillo-IoT側のどのUDPポートで接続するかは決まっていません。 (DNSサーバへの接続には53番ポートを使うと決まっています)
よって、以下のようにDNSサーバの53番ポートからの接続のみを受け付けるようにすると良いでしょう。

 [root@armadillo-iotg (ttymxc1) ~]# iptables -A INPUT -p udp --sport 53 -j ACCEPT

これで名前解決が可能になると思います。

[root@armadillo-iotg (ttymxc1) ~]# ping google.com
PING google.com (216.58.197.206): 56 data bytes
64 bytes from 216.58.197.206: icmp_seq=0 ttl=55 time=3.3 m

以上