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
以上