Re: [問答] 用無線AP,手機與NB一直ip相衝?

看板Network作者 (哇啦哇啦)時間13年前 (2012/07/27 23:54), 編輯推噓1(103)
留言4則, 2人參與, 最新討論串3/3 (看更多)
※ 引述《luke72 (ccc)》之銘言: : 問題是你是跟誰取IP : DHCP照規定是要把IP錯開沒錯,它在配發之前必須先偵測這個IP有沒有人用(ex:先ping過) : 問題是市面上便宜Router附的DHCP功能,很多都是拿open source的輕量化DHCP來用 : 基於輕量化,這些DHCP不會去做這些開發者認為不必要的事情 : 他只是很單純看自己手上的列表,找到沒發出去的,就發給你 : 如果這個IP被某台機器設固定IP用掉,就會發生衝突 : 而且DHCP server還是不會知道有人用掉,還是會堅持送這個IP給你 : 變成說你不找出這台固定IP的機器,就永遠會衝突 : 如果找不到,可以這樣解 : 有的Router,設定頁面上可以預約IP,你可以輸入NB跟手機的mac address,跟你要的IP : 這樣DHCP配發的時候就會改配這組出去,衝突就解決了 : 哪家的機器做的好不好,看這些小地方就知道了 : 很多是連DHCP要先偵測都不知道的,以為會衝突是使用者的問題...orz 先說一下 這個 Probe 沒出現有兩種情形, 一個是 dhcp server 本身就沒實作 另一個則是實作了但是設定被關閉, 前者違反RFC, 後者則是允許的. RFC 2131 3.1 - 2. Servers SHOULD be implemented so that network administrators MAY choose to disable probes of newly allocated addresses. The server transmits the DHCPOFFER message to the client, using the BOOTP relay agent if necessary 剛好有興趣所以挖了一下 code, 首先 open source 比較老牌子的 dhcp server 如 isc dhcpd, 是有完整實作這些功能的, 這從 man page 就可以看到 至於一般小型 router 常用的呢, 最有名的應該是 busybox? 剛剛抓了 busybox-1.20.2 (latest stable) 下來看, 發現它是這樣的: if (!lease) { //TODO: DHCP servers do not always sit on the same subnet as clients: should *ping*, not arp-ping! if (nobody_responds_to_arp(nip, safe_mac)) return nip; 所以說他有做 probe, 只是是 arping, 而不是 ICMP Echo Request. 於是又回去翻 RFC, 使用 ICMP 倒還真的舉例的方法, 並不是限制必須的方法 而如同 busybox 註解說的, arping 不能跨 subnet, 對於一般小型 router 使用環境來說, 相信會是在同個 subnet 下面, 因此 arping 應足以達成 RFC 2131 內所提及的"須先確認該IP未有人使用"條件 (當然是說限定同subnet下面, 至於跨subnet他還是沒有全然遵照 RFC2131) 當然, 其他版本的 busybox 或dhcp server就沒有深入去看了 :P -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 59.124.12.133 ※ 編輯: leeyh 來自: 59.124.12.133 (07/28 00:01)

07/28 01:02, , 1F
我記得新版的才有arping 但小型router用的都是萬年舊版
07/28 01:02, 1F

07/28 01:04, , 2F
不過就算沒實作 也應該要自己改到能用 才對得起消費者
07/28 01:04, 2F

07/28 11:10, , 3F
是啊, 不過不少公司只是拿ref board加上原廠SDK就出貨
07/28 11:10, 3F

07/28 11:11, , 4F
頂多改改webui, 畢竟要檢驗這些東西都是時間和錢..
07/28 11:11, 4F
文章代碼(AID): #1G4hcdY6 (Network)
文章代碼(AID): #1G4hcdY6 (Network)