ホーム » 「DHCP」タグがついた投稿
タグアーカイブ: DHCP
2022-03-26-クラス●さんへのメモ
このページは、息子の入居先のネットワークトラブルの原因を(私が自宅に帰るため)、ネットワーク関連の担当者に状況を伝えるためのメモです。
本格入居までの状態
- 2月末に契約を行い、荷物運び込みなどを順次行い、3月上旬に入居。
- ルータは、Buffalo WSR-1800AX4S ver 1.03 で、今回の新居にあわせ新規購入品。
この際にはルータのデフォルト設定(Auto/Router)のスイッチで接続。 - 「インターネット@スタート」で初期化が行われたが最初は繋がったが、すぐに切れてしまった。
しかし、色々と接続設定を変えていたら、何らかの”偶然”だったのか接続できるようになった。入居日から翌日までは、そのまま接続ができていた。 - この後、帰省先に帰り1週間後に本格的な入居(3/26)
3/26のメモ
- 入居先に到着し、インターネットを接続するが、ここでも「最初の10秒?から30秒ほどは繋がったがすぐにインターネットに接続できない状態」となる。
- ルータのWAN状態は…
- つながる時は 192.168.200.6 などのIPアドレスリースをうけている。
- 切れた状態になると「インターネット@スタートで接続するが繋がらない状態」になる。
- クラス●さんに連絡を入れ、担当者さんからの連絡を受ける。
担当者さんのアドバイス以降
- 担当者さんのアドバイスにより、ルータをManual / Access Point モードにしたが、一時的に繋がったが30秒程度接続ができた後、繋がらなくなる。(過去の状態と同じ)
- PCは、192.168.200.15 が割り当てられた。
- ping 192.168.200.1 を実行したが30秒ほど後で応答が途切れる。
- こちらの判断で、ルータを Manual / Router モードに変更し、再起動したが、同様の症状。
- 自宅ルータも Buffalo で、過去に「インターネット@スタート」でトラブったことがあるので Auto / Router モードは信用していない。
- 動かない原因が古いファームウェアのバグといったトラブルを避けたいので、別途Webで入手したファームウェアに更新。ただし、バージョン番号は同じ ver 1.03なのでファーム更新はただの気休めの予定だった。
- しかし、ファームウェア更新ご再起動したら、安定してつながる状態となった。
(意味不明!?!?!?!?)
原因の推測
- つながったのにすぐに切れる。
- 他の居住者からはトラブル連絡はない。
- トラブルが全建物的なものなら別途クレームがあるはず
- 今回のこのルータは、帰省中の1週間使われていなかった。
- ルータからのDHCPのリース時間は、259200sec = 3日間
- 一旦繋がったら、安定して使えている。
これらのことより
- リース済みIPアドレスの再利用(リース延長/DHCP Request)は正しく動いている。
- 新規接続はつながるけど、すぐに切れる。DHCP Offer が失敗する?
- リース期間の情報が、サーバと端末で、ずれていることが原因ではないか?
- 上流のDHCPサーバ(192.168.200.1) の時計がずれているのではないか?
- すぐに繋がらなくなるのは、他のPCにリース済みのIPアドレスを、時計がずれることが原因で、間違って再延長許可(DHCP Request に ACK を返答)するため、他のPCとIPアドレス重複を起こして繋がらなくなる?(他の重複したIPアドレスを使っているPCがパケットを出すまでは一時的に使える)
- リース期間が切れる前にリース延長(DHCP Request)を行う端末は、安定してつながる。
2022-03-27 追記
- 朝、ネットワークを使ったら無事に使える状態であった。
- しかしながら、10分ほど安定して利用できていたが、再び繋がらない状態となる。
- 繋がらない状態になった時に、改めてルータの通信パケットを見ると、エラーパケットが0なので、ケーブルが抜けかかっているとか、コリジョンが発生しているとかの原因ではないと思われる。
- ルータの通信LOGには、WAN側接続のトラブルに関する記録なし。
WiFi中継器の先につながる有線デバイス
WiFiルータの更新で、WEX-733Dを再利用した。
WiFi-router – – – WEX733D=(ether)-REGZA+Raspberry-Pi
当初、中継器WEX 733D の先につながる TV,ラズパイが最初は繋がっていたけど、接続が切れる。確認をしてみると、ルータ配下から中継器の先のデバイスは、どれも中継器のMACアドレスに見える。このため、我が家でのDHCPでMACアドレスに紐づけた固定アドレスを割り振る方式では、中継器でアドレスがすり替えられているために、MACアドレスが DHCP サーバ側で正しく把握できない。このため、正しくIPアドレスが取れない。
しかたがないので、中継器の先の有線デバイスは固定IPアドレスを割り振る。中継器をWiFiアダプターとして使う場合、DHCPで動的アドレスを振ったとしても、IPアドレスは変な状態になるだろうなぁ。固定IPアドレスにしないかぎりは、使い物にならないだろうなぁ。
dhcp-evalの使い方
自宅ネットワークでは、利用する機器の状態を把握するために固定IPアドレスを割り振っているが、DHCP の hardware ethernet で、Mac アドレスをみて配布している。この DHCP のリース時に、状態に合わせた処理を起動するための機能がある。
- dhcp-eval(isc-dhcp のマニュアル)
on commit などで script を実行
on commit , on release , on expiry を設定すると、IPアドレス割り振り時にプログラムを起動できる。
# vi /etc/dhcp/dhcpd.conf : # IPアドレス割り振り時に on-commit.sh を起動 on commit { set clip = binary-to-ascii(10, 8, ".", leased-address); set clhw = binary-to-ascii(16, 8, ":", substring(hardware, 1, 6)); execute("/etc/dhcp/on-commit.sh", clip, clhw); } # vi /etc/dhcp/on-commit.sh #!/bin/bash # IPアドレスを割り振り時にメールを送る IP=$1 MAC=$2 if [ -n "$IP" -a -n "$MAC" ]; then echo "$IP $MAC" \ | /usr/bin/mail -s "dhcp on commit" foo@example.com fi
on commit の例で示した方法は、DHCPがアドレスをリースする度に呼び出される。スクリプトは同期して行われるため、遅い処理の場合には アドレス割り振りに支障がでるかもしれない。よって、スクリプトはシンプルなものを使う必要がある。
自宅では、host { fixed-address … } で、固定しているとはいえ WiFi なスマホだと、電波強度不足で再接続が発生する時だと、頻繁にメールが届くことになる。接続情報を保存するなどの Script を書かないとウザぃ。
host 毎に script を実行
こういうことができると、状況に合わせてリースを制御したくなる。自宅で使う場合だと、子供が長い時間使っている場合には、IPアドレスのリースを失敗させて、ネットワーク接続を切りたいかもしれない。
こういう場合には、host … { } の中に、execute を埋め込むことができる。しかも、execute で実行される script の返り値で、lease を失敗させることもできる。
# /etc/dhcp/dhcpd.conf : host game-machine { hardware ethernet 00:11:22:33:44:55 ; fixed-address 192.168.11.222 ; execute( "/etc/dhcp/lease-check.sh , "192.168.11.222" , "00:11:22:33:44:55" ) ; } # vi /etc/dhcp/lease-check.sh #!/bin/bash # DHCP接続を判定する script IP=$1 MAC=$2 if [ -n "$IP" -a -n "$MAC" ]; then if [ アドレスを許可する条件 ]; then # 接続許可 exit 1 else # 接続禁止 exit 0 fi fi
注意: 最初 lease-check.sh は許可するときに shell-script 成功時を表す exit 0 を返せばいいとおもったけど、逆だったな。