manabu-yoshioka-arc
2023年4月8日 23時58分
armadillo-IOT a6 にて開発をしています。
理解に苦しんでいるところがあるので、ヒントを頂ければ助かります。よろしくお願いします。
有線LAN に接続し、`apt update` などを行うと、[Temporary failure resolving] というエラーがでてきます。
どうも DNS で atmark-techno.com などが引けないようです。
その時の '/etc/resolv.conf' は以下の内容でした。
$ less /etc/resolv.conf nameserver 202.234.232.6 nameserver 221.113.139.250 domain ntkyo1.kn.home.ne.jp search ntkyo1.kn.home.ne.jp
'/etc/resolv.conf' ファイルを編集し、先頭行に 'nameserver 8.8.8.8' を追加すると有線LANを使った通信は問題なく、'apt update' や 'apt-install' は成功します。
その状態で 'curl' を使い、任意の HTTP 通信をさせても、問題なく通信できています。
しかし、リブートをかけると、DHCP の処理により、/etc/resolv.conf が元に戻ってしまうため、やはり DNS が引けなくなるようです。
上のような状態でありながら、イーサネットケーブルを抜き、有線LANを無効にした状態でリブートをすると、LTE での回線が確立した後 DNS 引きができるようです。
その時の 'etc/resolv.conf' はデフォルトに戻っています。
質問1)そもそもなぜ、デフォルトの nameserver 設定で、DNS が引けなくなるのか、何か理由は考えられますでしょうか。
質問2)/etc/resolv.conf の初期値を変更する方法があれば、お教えください。DHCP は有効のままとしたいです。
質問3)eth0 と ppp0 のルーティング決定の仕組みはどこに記述されていますでしょうか。
コメント
manabu-yoshioka-arc
テストするのに時間がかかり申し訳ございません。
> > 質問1)そもそもなぜ、デフォルトの nameserver 設定で、DNS が引けなくなるのか、何か理由は考えられますでしょうか。
>
> nameserverへのpingは通っていますでしょうか。以下のように、インターフェースを指定してpingコマンドを試してみてください
> ping 202.234.232.6 -I eth0
結果は以下のようになりました。
atmark@armadillo:~$ sudo ping -c 5 202.234.232.6 -I eth0 PING 202.234.232.6 (202.234.232.6) from 192.168.11.18 eth0: 56(84) bytes of data. 64 bytes from 202.234.232.6: icmp_seq=4 ttl=49 time=25.7 ms --- 202.234.232.6 ping statistics --- 5 packets transmitted, 1 received, 80% packet loss, time 147ms rtt min/avg/max/mdev = 25.671/25.671/25.671/0.000 ms atmark@armadillo:~$ sudo ping -c 5 202.234.232.6 -I eth0 PING 202.234.232.6 (202.234.232.6) from 192.168.11.18 eth0: 56(84) bytes of data. --- 202.234.232.6 ping statistics --- 5 packets transmitted, 0 received, 100% packet loss, time 129ms atmark@armadillo:~$ sudo ping -c 5 8.8.8.8 -I eth0 PING 8.8.8.8 (8.8.8.8) from 192.168.11.18 eth0: 56(84) bytes of data. 64 bytes from 8.8.8.8: icmp_seq=1 ttl=57 time=18.6 ms 64 bytes from 8.8.8.8: icmp_seq=2 ttl=57 time=16.5 ms 64 bytes from 8.8.8.8: icmp_seq=3 ttl=57 time=14.5 ms 64 bytes from 8.8.8.8: icmp_seq=4 ttl=57 time=14.3 ms 64 bytes from 8.8.8.8: icmp_seq=5 ttl=57 time=20.9 ms --- 8.8.8.8 ping statistics --- 5 packets transmitted, 5 received, 0% packet loss, time 10ms rtt min/avg/max/mdev = 14.331/16.968/20.936/2.530 ms
ping が通っていませんでした。同様に同じ回線に接続している Macからも ping を打ってみました。
ping -c 5 202.234.232.6 PING 202.234.232.6 (202.234.232.6): 56 data bytes Request timeout for icmp_seq 0 Request timeout for icmp_seq 1 Request timeout for icmp_seq 2 Request timeout for icmp_seq 3 --- 202.234.232.6 ping statistics --- 5 packets transmitted, 0 packets received, 100.0% packet loss
どうも、開発の場所は自宅なのですがその環境のせいのようです。インターネットへの接続口はケーブルテレビのインターネットサービスを利用しています。会社などでどうなるか試してみようと思います。お騒がせしました。
追加で質問なのですが、resolv.conf に設定されている 202.234.232.6 と 221.113.139.250 は、どちらの DNS サーバーなのでしょうか。記載に差し支えなければお教えいただければと思います。
manabu-yoshioka-arc
> > 質問2)/etc/resolv.conf の初期値を変更する方法があれば、お教えください。DHCP は有効のままとしたいです。
>
こちらの作業を行なってみましたが、nameserver 8.8.8.8 が追加されません。
以下は、/etc/dhcp/dhclient.conf の部分コピーです。どこか設定箇所が他にあるのでしょうか。
#prepend domain-name-servers 127.0.0.1; prepend domain-name-servers 8.8.8.8; #require subnet-mask, domain-name-servers;
manabu-yoshioka-arc
> > > 質問2)/etc/resolv.conf の初期値を変更する方法があれば、お教えください。DHCP は有効のままとしたいです。
> >
> こちらの作業を行なってみましたが、nameserver 8.8.8.8 が追加されません。
>
色々調査をしていて、随分とわかってきました。LTE 側 ppp0 の通信が確立するまでは 有線LAN eth0 の dhcp が動いていて、LTE 側 ppp0 の回線がOKになると、ppp0 の dhcp 設定と思われる部分で、 /etc/resolv.conf が書き換えられています。
先の質問で書かせていただいた、/etc/dhcp/dhclient.conf に prepend domain-name-servers 8.8.8.8; を追加した方法はうまく動いていました。
armadillo-IOT-A6 を `sudo reboot` し、起動した直後の /etc/resolv.conf の内容は以下でした。この時はまだ LTE側 ppp0 は確立されていません。
atmark@armadillo:~$ less /etc/resolv.conf domain ntkyo1.kn.home.ne.jp search ntkyo1.kn.home.ne.jp nameserver 8.8.8.8 nameserver 192.168.11.1
その後 LTE 側 ppp0 の回線が繋がると、/etc/resolv.conf の内容は以下となります。
atmark@armadillo:~$ less /etc/resolv.conf nameserver 202.234.232.6 nameserver 221.113.139.250 domain ntkyo1.kn.home.ne.jp search ntkyo1.kn.home.ne.jp
ppp0 側に /etc/resolv.conf を書き換える設定が、どこかにあるように思われます。その初期設定を変更できると助かるのですが。
manabu-yoshioka-arc
現状、わかったことを報告させていただきます。
ppp0 の接続時には `/etc/ppp` フォルダの下が使われているように思われます。
atmark@armadillo:~$ ls -l /etc/ppp total 64 -rw------- 1 root root 120 Apr 13 23:32 chap-secrets -rwxr-xr-x 1 root root 1754 Feb 21 2020 ip-down drwxr-xr-x 2 root root 4096 Jan 1 1970 ip-down.d -rwxr-xr-x 1 root root 1892 Feb 21 2020 ip-up drwxr-xr-x 2 root root 4096 Jan 1 1970 ip-up.d -rwxr-xr-x 1 root root 784 Feb 21 2020 ipv6-down drwxr-xr-x 2 root root 4096 Feb 21 2020 ipv6-down.d -rwxr-xr-x 1 root root 922 Feb 21 2020 ipv6-up drwxr-xr-x 2 root root 4096 Feb 21 2020 ipv6-up.d -rw-r--r-- 1 root root 13209 Feb 21 2020 options -rw------- 1 root root 1668 Apr 13 23:32 pap-secrets drwxr-s--- 2 root dip 4096 Jan 1 1970 peers -rw-r--r-- 1 root root 52 Apr 13 23:32 resolv.conf
最後の `resolv.conf` は ppp0 確立後書き換えられた /etc/resolv.conf の先頭2行、
nameserver 202.234.232.6 nameserver 221.113.139.250
なのですが、タイムスタンプでわかるように起動時に自動生成されています。
また、/etc/ppp/ip-up.d/0000usepeerdns には下記のようなコードがありました。
#!/bin/sh -e {中略} # follow any symlink to find the real file REALRESOLVCONF=$(readlink --canonicalize /etc/resolv.conf) # merge the new nameservers with the other options from the old configuration { cat /etc/ppp/resolv.conf grep --invert-match '^nameserver[[:space:]]' "$REALRESOLVCONF" || true } > "$REALRESOLVCONF.tmp" # backup the old configuration and install the new one cp -a "$REALRESOLVCONF" "$REALRESOLVCONF.pppd-backup.$PPP_IFACE" mv -f "$REALRESOLVCONF.tmp" "$REALRESOLVCONF"
つまり、起動時にできた /etc/ppp/resolv.conf を /etc/resolv.conf に書き足しているのはわかるのですが、
肝心の /etc/ppp/resolv.conf はどのように作られているのかがわかりません。
今回の質問の発端は、開発時に apt get や apt update を利用すると [Temporary failure resolving] というエラーが出て apt update などができなかったことです。
開発時の問題回避方法としては、/etc/resolv.conf の先頭に nameserver 8.8.8.8 を追加すれば良いとわかりましたので、少々面倒ではありますが sed を使い変更をかけていけば済む話だということがわかってきました。
しかし、現場設置した場合には有線LANは配線せず、LTE だけで通信を行うことになります。すると、nameserver 202.234.232.6, と nameserver 221.113.139.250 が今回のケースではDNS サーバーとなります。机上でチェックする限り、有線LANを外すと、この2つの DNS で通信はできているように思われます。が、少し心配になってきています。
よって、質問としては、この nameserver 202.234.232.6 と nameserver 221.113.139.250 が一体どういう経緯でのアドレスなのか、教えていただくことはできませんでしょうか。
(docomo の nano SIM を入れています)
よろしくお願いします。
at_keitaro.takahashi
高橋です。
202.234.232.6、221.113.139.250は接続先のDHCPサーバーから自動で取得されているものかと思われます。
whoisコマンドでアドレスの情報を取得できるので、試してみてください。
(whoisコマンドはデフォルトではインストールされていないため、aptでインストールしてください)
もしくは、アドレスを検索サイト等で調べていただくとどのようなアドレスかわかりやすいかと思います。
また、resolve.confがpppに上書きされないようにする手順ですが、以下の方法で実現可能です。
(①〜③を全て行ってください)
①/etc/aiot-modem-control/startup.confの以下の設定を変更する
create_wvdial_conf=true
↓
create_wvdial_conf=false
②/etc/wvdial.confの以下の設定を変更する
Auto DNS = 1
↓
Auto DNS = 0
③/etc/ppp/peers/wvdialの以下の設定を変更する
usepeerdns
↓
#usepeerdns
以上、よろしくお願いいたします。
manabu-yoshioka-arc
at_keitaro.takahashi
2023年4月12日 15時08分
高橋です。
> 質問1)そもそもなぜ、デフォルトの nameserver 設定で、DNS が引けなくなるのか、何か理由は考えられますでしょうか。
nameserverへのpingは通っていますでしょうか。以下のように、インターフェースを指定してpingコマンドを試してみてください
ping 202.234.232.6 -I eth0
> 質問2)/etc/resolv.conf の初期値を変更する方法があれば、お教えください。DHCP は有効のままとしたいです。
/etc/dhcp/dhclient.confに以下のような内容を追記することで、/etc/resolv.confの生成時にnameserverが追加されます。
prepend domain-name-servers 8.8.8.8;
また、以下フォーラムのようにNetworkManagerの設定でdns=noneとすることで、resolv.confを上書きされないようにすることも可能です。
https://armadillo.atmark-techno.com/forum/armadillo/14647
(
systemctl restart NetworkManager
などでNetworkManagerを再起動する必要があります)> 質問3)eth0 と ppp0 のルーティング決定の仕組みはどこに記述されていますでしょうか。
以下のブログが参考になると思われます。
https://armadillo.atmark-techno.com/blog/9492/3724
以上、よろしくお願いいたします。