有朋友私信問我:
有辦法讓裝置透過dhcp分配的地址,每一都不一樣嗎?
不然有些裝置地址分配每次都固定不變化,好像被鎖住了一樣...
我說很簡單啊,dhcp-pool你就限定只給一個地址,每次都不同,只要不是目前使用的就好.
那裝置不就會跟著pool換不同的地址嗎
不過果不其然又回覆了,請問該怎做? 好吧...
做法如下,先準備script: (script需標明pool的名稱,dhcp範圍的起始編號,結束編號)
#=================
:local pool "dhcp"
:local start 2
:local end 254
#=================
:local range [:tostr [/ip pool get $pool ranges]]
:if ($range~"-") do={:set range [:pick $range 0 [:find $range "-"]]}
:if ($range~"/") do={:set range [:pick $range 0 [:find $range "/"]]}
:local dot [:len $range]
:do {:set dot ($dot-1)} while=([:pick $range $dot]!=".")
:local active
:foreach i in=[/ip arp find ($address in "$[:pick $range 0 $dot].0/24")] do={
:set active "$active,$[/ip arp get $i address]"}
:set active [:toarray [:pick $active 1 [:len $active]]]
:while ([:typeof [:find $active $range]]="num") do={
:set range ($range+1)
:if ($range>"$[:pick $range 0 $dot].$end") do={:set range "$[:pick $range 0 $dot].$start"}
}
/ip pool set $pool ranges=$range
/ip dhcp-server lease-script

:if ($leaseBound=1) do={/system script run DhcpPool}
設定好後dhcp-server每配發一次地址,會強制更改pool.
因pool的關係下次新分配的地址就會與過去的錯開,就這樣