什麼狀況下, Client 會婉拒發配給他的 IP?



贊助商連結


頁 : [1] 2

ulimie
2011-05-29, 11:30 PM
場景:
Router = RT-N16 + Tomato
主人 Alex 剛回到家, 打開電腦, Tomato 反應的 Syslog 記錄如下,

這台 NB 已經不只一次婉拒發給他的 IP 了, 而且, 16 是在 Static DHCP 裡設定好指定給他的. 那是一台跑 XP 的 NB.

RT-N16 旗下眾多 PC/NB.... 每個人向來都乖乖接受發配的 IP, 就是只有 Alex 偶爾會這樣不吃敬酒.

May 29 22:10:33 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPRELEASE(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 29 22:10:34 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPDISCOVER(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 29 22:10:34 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPOFFER(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 29 22:10:34 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPREQUEST(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 29 22:10:34 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPACK(br0) 192.168.1.16 00:1f:6c.42.ea:e5 Alex
May 29 22:10:35 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPDECLINE(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 29 22:10:35 RT-N16 daemon.warn dnsmasq-dhcp[540]: disabling DHCP static address 192.168.1.16 for 10m
May 29 22:10:45 RT-N16 daemon.warn dnsmasq-dhcp[540]: not using configured address 192.168.1.16 because it was previously declined
May 29 22:10:47 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPDISCOVER(br0) 00:1f:6c.42.ea:e5
May 29 22:10:47 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPOFFER(br0) 192.168.1.44 00:1f:6c.42.ea:e5
May 29 22:10:47 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPREQUEST(br0) 192.168.1.44 00:1f:6c.42.ea:e5
May 29 22:10:47 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPACK(br0) 192.168.1.44 00:1f:6c.42.ea:e5 Alex

贊助商連結


FYI
2011-05-30, 02:36 AM
[SOLVED] DHCPDECLINE of ipaddress from mac via interface not found (http://www.linuxquestions.org/questions/linux-networking-3/dhcpdecline-of-ipaddress-from-mac-via-interface-not-found-838369/)

ulimie
2011-05-30, 07:06 AM
感謝回答, 好像狀況不太一樣...

那篇文章裡, 他是 option broadcast-address 設定錯誤. 造成 Client 根本拿不到 IP, 改正就 OK 了. 這是 server 的問題.

我這裡 Tomato 裡頭的 dnsmasq.conf 去看了一下, 是 Router Tomato firmware 自己根據 GUI 設定自動產生的, 不是手動設定.

要是錯的話, 就大家都別玩, 不會就是光只有那一台有問題.
而且錯的不一樣的是, dhcp server 不是不發 ip 給他, 而是給了他該拿的 16, 他不要; 另外隨便丟一個範圍內的 ip 44 給他, 他就收, 才是奇怪...

只有這台NB會, 別人都不會這樣, 看起來不像是 router 這邊的問題, 不然 tomato 就別玩了. 應該是 client 端的問題. 就這件 "婉拒" 事件來說, Server 終究是被動的一方.

說是 xp 有問題嘛, xp 都那麼久了, 有問題早就該挖光了吧. 沒辦法, 不會解決, 只好先瞭解為什麼他會 decline...??

ulimie
2011-05-30, 08:37 AM
後續發展:

夜裡, Alex 沒關機, 人睡著了之後, NB 也一齊進入睡眠狀態,
今早大家一齊起來, 他 44 不要, 回頭又想要 16 了, 靠.... 比女人還難搞.....

May 30 07:20:30 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPREQUEST(br0) 192.168.1.44 00:1f:6c.42.ea:e5
May 30 07:20:30 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPNAK(br0) 192.168.1.44 00:1f:6c.42.ea:e5 static lease available
May 30 07:20:30 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPRELEASE(br0) 192.168.1.44 00:1f:6c.42.ea:e5
May 30 07:20:31 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPDISCOVER(br0) 192.168.1.44 00:1f:6c.42.ea:e5
May 30 07:20:31 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPOFFER(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 30 07:20:35 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPDISCOVER(br0) 192.168.1.44 00:1f:6c.42.ea:e5
May 30 07:20:35 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPOFFER(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 30 07:20:43 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPDISCOVER(br0) 192.168.1.44 00:1f:6c.42.ea:e5
May 30 07:20:43 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPOFFER(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 30 07:20:43 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPREQUEST(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 30 07:20:43 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPACK(br0) 192.168.1.16 00:1f:6c.42.ea:e5 Alex
May 30 07:20:46 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPINFORM(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 30 07:20:46 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPACK(br0) 192.168.1.16 00:1f:6c.42.ea:e5 Alex
May 30 07:24:02 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPINFORM(br0) 192.168.1.16 00:1f:6c.42.ea:e5
May 30 07:24:02 RT-N16 daemon.info dnsmasq-dhcp[540]: DHCPACK(br0) 192.168.1.16 00:1f:6c.42.ea:e5 Alex

rushoun
2011-05-30, 12:36 PM
有試過嗎:
ipconfig /release
ipconfig /renew
它會抓到什麼IP?

ulimie
2011-05-30, 01:21 PM
呃... 沒有試過... 因為家人開機了, 就是要用, 就沒去打擾了.
造成的問題是: Port mapping 就槓龜了. 其他倒是還好.

下次我再試試看, 一個月大概有 2 到 3 次的發生機率.

依 syslog 所言, disabling DHCP static address 192.168.1.16 for 10m,
所以, 10分鐘之內去 release/renew, server 應該還是不會給該給的 16 吧.
10 分鐘後, 就可能有很高的機率去接受 16 了.

FYI
2011-05-30, 03:19 PM
你沒看WireShark Log, 怎知不一樣?

ulimie
2011-05-30, 05:47 PM
你沒看WireShark Log, 怎知不一樣?
這個.....
要分析網路封包? 有困難. Tomato 不提供這個. 不是很瞭解 WireShark Log.
而且不知道什麼時候會發生, 很難哩......

FYI
2011-05-30, 06:19 PM
啊又沒要你安裝於Tomato! 把小弟提供的連結仔細看一遍, 再Google "DHCPDECLINE", 問題八九不離十

ulimie
2011-05-30, 08:20 PM
還沒參透.

如果 Client 在網段中發現所分配的 IP 已被其他 Client 使用, 就送 DHCPDECLINE... 難不成是自己踢自己?
絕對可以保證當時線上不會有另一個占用 IP 16 的實體或虛擬 Device.
在另一台 NB 做 Release/Renew 模擬一樣的狀況, 這台就沒有那樣的 decline 問題....

OK, 我再繼續研究...

另一台的模擬記錄: (為了閱讀方便, 我把重複的無關字串刪掉)
May 30 19:42:33 DHCPDISCOVER(br0) 00:52.d5.12:ff:9c
May 30 19:42:33 DHCPOFFER(br0) 192.168.1.11 00:52.d5.12:ff:9c
May 30 19:42:33 DHCPREQUEST(br0) 192.168.1.11 00:52.d5.12:ff:9c
May 30 19:42:33 DHCPACK(br0) 192.168.1.11 00:52.d5.12:ff:9c rick
May 30 19:42:38 DHCPREQUEST(br0) 192.168.1.11 00:52.d5.12:ff:9c
May 30 19:42:38 DHCPACK(br0) 192.168.1.11 00:52.d5.12:ff:9c rick
May 30 19:44:08 DHCPRELEASE(br0) 192.168.1.11 00:52.d5.12:ff:9c (release)
May 30 19:44:25 DHCPDISCOVER(br0) 192.168.1.11 00:52.d5.12:ff:9c (renew)
May 30 19:44:25 DHCPOFFER(br0) 192.168.1.11 00:52.d5.12:ff:9c
May 30 19:44:25 DHCPREQUEST(br0) 192.168.1.11 00:52.d5.12:ff:9c
May 30 19:44:25 DHCPACK(br0) 192.168.1.11 00:52.d5.12:ff:9c rick
May 30 19:52:34 DHCPINFORM(br0) 192.168.1.11 00:52.d5.12:ff:9c
May 30 19:52:34 DHCPACK(br0) 192.168.1.11 00:52.d5.12:ff:9c rick