Armadilloフォーラム

有線 LAN に接続すると DNS が引けません、LTE だけにすると DNS が引けます。どんな理由が考えられますでしょうか。

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 のルーティング決定の仕組みはどこに記述されていますでしょうか。

コメント

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

以上、よろしくお願いいたします。

manabu-yoshioka-arc

2023年4月13日 17時42分

テストするのに時間がかかり申し訳ございません。

> > 質問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

2023年4月13日 18時09分

> > 質問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

2023年4月13日 23時13分

> > > 質問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

2023年4月14日 0時20分

現状、わかったことを報告させていただきます。

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

2023年4月14日 15時56分

高橋です。

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

以上、よろしくお願いいたします。