Server DHCP
Protokol DHCP (Dynamic Host Configuration Protocol) slouží ke snadnému přidělování IP adres v síti. Implementace systému MikroTik RouterOS zahrnuje serverovou i klientskou část a je v souladu s RFC 2131.
Router podporuje samostatný server pro každé rozhraní typu Ethernet. Server DHCP systému MikroTik RouterOS podporuje základní funkce, které spočívají v tom, že každému žádajícímu klientovi poskytne informace o pronájmu IP adresy/síťové masky, výchozí brány, názvu domény, DNS-serveru(ů) a WINS-serveru(ů) (pro klienty se systémem Windows) (nastavuje se v podnabídce DHCP networks).
Aby server DHCP fungoval, musí být také nakonfigurovány IP pooly (do rozsahu poolu nezahrnujte vlastní IP adresu serveru DHCP) a sítě DHCP.
Pro klienty DHCP je také možné využít serveru RADIUS. Podporované parametry serveru RADIUS jsou následující:
Access-Request:
- NAS-Identifier - identita routeru
- NAS-IP-Address - IP adresa samotného routeru
- NAS-Port - jedinečné ID relace
- NAS-Port-Type - Ethernet
- Calling-Station-Id - identifikátor klienta (active-client-id)
- Framed-IP-Address - IP adresa klienta (active-address)
- Called-Station-Id - název serveru DHCP
- User-Name - adresa MAC klienta (active-mac-address)
- Password - Heslo
- Framed-IP-Address - IP adresa, která bude klientovi přidělena
- Framed-Pool - fond IP adres, ze kterého bude klientovi přidělena IP adresa
- Rate-Limit - Omezení datové rychlosti pro klienty DHCP. Formát je: rx-rate[/tx-rate] [rx-burst-rate[/tx-burst-rate] [rx-burst-threshold[/tx-burst-threshold] [rx-burst-time[/tx-burst-time][priority] [rx-rate-min[/tx-rate-min]]]]. Všechny sazby by měly být čísla s nepovinným 'k' (1 000s) nebo 'M' (1 000 000s). Pokud není zadána tx-rate, je i rx-rate jako tx-rate. Totéž platí pro tx-burst-rate a tx-burst-threshold a tx-burst-time. Pokud není zadán rx-burst-threshold ani tx-burst-threshold (ale je zadán burst-rate), použijí se rx-rate a tx-rate jako prahové hodnoty burst. Pokud není zadán rx-burst-time ani tx-burst-time, použije se jako výchozí hodnota 1s. Priorita nabývá hodnot 1..8, kde 1 znamená nejvyšší prioritu, ale 8 nejnižší. Pokud nejsou zadány hodnoty rx-rate-min a tx-rate-min, použijí se hodnoty rx-rate a tx-rate. Hodnoty rx-rate-min a tx-rate-min nesmí překročit hodnoty rx-rate a tx-rate.
- Ascend-Data-Rate - omezení datové rychlosti TX/RX, pokud je uvedeno více atributů, první omezuje datovou rychlost tx, druhý datovou rychlost RX. Pokud se použije společně s Ascend-Xmit-Rate, určuje rychlost RX. 0, pokud je neomezený
- Ascend-Xmit-Rate - omezení rychlosti tx dat. Může být použito pro zadání pouze TX limitu namísto zaslání dvou po sobě jdoucích atributů Ascend-Data-Rate (v takovém případě bude Ascend-Data-Rate určovat rychlost příjmu). 0, pokud je neomezený
- Session-Timeout - maximální doba pronájmu (lease-time)
Konfigurace úložiště zápůjček
Kód: Vybrat vše
/ip dhcp-server config
Ruční změny pronájmů - přidání/odstranění statického pronájmu, odstranění dynamického pronájmu způsobí, že se změny přesunou do úložiště.
Zápůjčky
Kód: Vybrat vše
/ip dhcp-server lease
Obecně se přiděluje následujícím způsobem:
- nevyužitý pronájem je ve stavu "čekání" (waiting).
- pokud klient požádá o IP adresu, server si jednu vybere.
- pokud klient přijímá staticky přidělenou adresu, pronájem se stane nabídnutým a poté je svázán s příslušnou dobou pronájmu
- pokud klient přijímá dynamickou adresu (převzatou z fondu IP adres), router odešle paket ping a čeká na odpověď po dobu 0,5 sekundy. Během této doby je zapůjčení označeno jako testovací.
- v případě, že adresa neodpovídá(je nepoužita), zápůjčka se nabídne a poté je svázána s příslušnou dobou pronájmu.
- v ostatních případech se pronájem stane obsazeným po dobu pronájmu (existuje příkaz pro opakované testování všech obsazených adres) a pokud požadavek klienta zůstane bez odpovědi (klient to za chvíli zkusí znovu).
Parametry
Vlastnost | Popis |
---|---|
add-arp (ano / ne; výchozí: ne) | Zda se má přidat dynamická položka ARP. Pokud je nastaveno na ne, měl by být na daném rozhraní povolen režim ARP nebo by měly být v podnabídce /ip arp správně definovány statické položky ARP |
address-pool (string / pouze statické; výchozí: pouze statické) | IP pool, ze kterého se budou brát IP adresy pro klienty. Pokud je nastaveno na static-only, budou povoleni pouze klienti, kteří mají statický pronájem (přidaný v podnabídce pronájmu) |
allow-dual-stack-queue (ano / ne; výchozí: ano) | Vytvoří jednu společnou položku fronty pro adresy IPv4 i IPv6, k identifikaci použije adresu MAC a DUID. Pro správnou funkci vyžaduje, aby měl tuto možnost povolenou i server DHCP IPv6 |
always-broadcast (ano / ne; výchozí: ne) | Odesílá odpovědi vždy jako broadcast, i když je cílová IP adresa známá. Zvýší zatížení sítě L2 |
authoritative (after-10sec-delay / after-2sec-delay / yes / no; výchozí: yes) | Volba mění způsob, jakým server odpovídá na požadavky DHCP:
|
bootp-lease-time (forever / lease-time / time; Výchozí: ) | Dává na výběr ze dvou možnosti:
|
bootp-support (none / static / dynamic; Výchozí: static) | Podpora pro klienty BOOTP:
|
client-mac-limit (integer / unlimited; Výchozí: unlimited) | Určuje, zda má být omezen určitý počet klientů na jednu adresu MAC, nebo zda má být ponechán neomezený počet. Všimněte si, že toto nastavení by se nemělo používat v relay nastaveních. |
conflict-detection (yes / no; Výchozí: ) | Umožňuje zakázat/povolit detekci konfliktů. Pokud je tato možnost povolena, pak kdykoli se server pokusí přidělit pronájem, odešle zprávy ICMP a ARP, aby zjistil, zda taková adresa v síti již existuje. Pokud některá z výše uvedených adres získá odpověď, je považována za již použitou. Detekce konfliktů musí být zakázána, pokud je použit jakýkoli druh omezení klienta DHCP na port nebo na mac. |
delay-threshold (time / none; Výchozí: none) | Pokud je pole sec v paketu DHCP menší než prahová hodnota zpoždění, je tento paket ignorován. Pokud je nastaveno na hodnotu none - neexistuje žádný práh (zpracovávají se všechny pakety DHCP). |
dhcp-option-set (name / none; Výchozí: ) | Použijte vlastní sadu možností DHCP definovanou v nabídce sad možností. |
insert-queue-before (bottom / first / name; Výchozí: ) | Určuje, kam se mají umístit položky dynamické fronty pro statické pronájmy DCHP s nastaveným parametrem rate-limit. |
interface (string; Výchozí: ) | Rozhraní, na kterém bude server spuštěn. |
lease-script (string; Výchozí: "") | Skript, který se provede po přiřazení nebo zrušení přiřazení pronájmu. Interní "globální" proměnné, které lze ve skriptu použít:
|
lease-time (time; Výchozí: 10m) | Doba, po kterou může klient přidělenou adresu používat. Po uplynutí poloviny této doby se klient pokusí tuto adresu obnovit a po uplynutí časového limitu požádá o novou adresu. |
name (string; Výchozí: ) | Reference name |
parent-queue (string / none; Výchozí: none) | |
relay (IP; Výchozí: 0.0.0.0) | IP adresa relay, ze kterého má tento server DHCP zpracovávat požadavky:
|
src-address (IP; Výchozí: 0.0.0.0) | Adresa, na kterou musí klient DHCP posílat požadavky, aby obnovil pronájem IP adresy. Pokud je na rozhraní serveru DHCP pouze jedna statická adresa a zdrojová adresa je ponechána jako 0.0.0.0, použije se statická adresa. Pokud je na rozhraní více adres, měla by být použita adresa ve stejné podsíti jako rozsah daných adres. |
use-framed-as-classless (yes / no; Výchozí: yes) | Přeposílejte RADIUS Framed-Route jako DHCP Classless-Static-Route klientovi DHCP. Kdykoli je přijata jak Framed-Route, tak Classless-Static-Route, je upřednostňována Classless-Static-Route. |
use-radius (yes / no / accounting; Výchozí: no) | Zda se má použít server RADIUS:
|
Síť
Kód: Vybrat vše
/ip dhcp-server network
Vlastnost | Popis |
---|---|
address (IP/netmask; Výchozí: ) | sít v které DHCP server pronajímá adresy |
boot-file-name (string; Výchozí: ) | Název zaváděcího souboru |
caps-manager (string; Výchozí: ) | Seznam IP adres oddělených čárkou pro jednoho nebo více CAPsMAN. Bude použita možnost 138 DHCP (capwap) |
dhcp-option (string; Výchozí: ) | Přidání dalších možností DHCP ze seznamu možností |
dhcp-option-set (string; Výchozí: ) | Přidání další sady možností DHCP |
dns-none (yes / no; Výchozí: no) | Pokud je zatrženo a pokud není v položce DNS-server nastaven žádný server ručně, pak DHCP server nepředá klientům dynamické servery DNS nakonfigurované v routeru. Ve výchozím nastavení, pokud nejsou nakonfigurovány žádné servery DNS, budou klientům DHCP předány dynamické servery DNS |
dns-server (string; Výchozí: ) | Klient DHCP je použije jako výchozí servery DNS. Lze zadat dva servery DNS oddělené čárkou, které bude klient DHCP používat jako primární a sekundární servery DNS |
domain (string; Výchozí: ) | Klient DHCP ji použije jako nastavení domény DNS pro síťový adaptér |
gateway (IP; Výchozí: 0.0.0.0) | Výchozí brána, kterou bude používat klient DHCP |
netmask (integer: 0..32; Výchozí: 0) | Skutečná síťová maska, kterou použije klient DHCP. Pokud je nastavena hodnota '0', použije se síťová maska ze síťové adresy. |
next-server (IP; Výchozí: ) | IP adresa serveru, který se má použít pro bootstrap protokol |
ntp-server (IP; Výchozí: ) | Klient DHCP je použije jako výchozí servery NTP. Lze zadat dva servery NTP oddělené čárkou, které bude klient DHCP používat jako primární a sekundární servery NTP |
wins-server (IP; Výchozí: ) | Klient DHCP systému Windows je použije jako výchozí servery WINS. Lze zadat dva servery WINS oddělené čárkou, které bude klient DHCP používat jako primární a sekundární servery WINS |
Omezení rychlosti
Pomocí pronájmů DHCPv4 je možné nastavit šířku pásma pro konkrétní adresu IPv4. To lze provést nastavením omezení rychlosti na záložce Leases, čímž se přidá dynamické pravidlo v simple queue pro adresu IPv4, která odpovídá pronájmu DHCPv4. Pomocí parametru rate-limit lze pohodlně omezit šířku pásma uživatele. Nejprve vytvořte statický pronájem DHCPv4, jinak nebude možné pro pronájem DHCPv4 nastavit omezení rychlosti:
Kód: Vybrat vše
[admin@MikroTik] > /ip dhcp-server lease print
Flags: X - disabled, R - radius, D - dynamic, B - blocked
# ADDRESS MAC-ADDRESS HOST-NAME SERVER RATE-LIMIT STATUS
0 D 192.168.88.254 6C:3B:6B:7C:41:3E MikroTik DHCPv4_Server bound
[admin@MikroTik] > /ip dhcp-server lease make-static 0
[admin@MikroTik] > /ip dhcp-server lease print
Flags: X - disabled, R - radius, D - dynamic, B - blocked
# ADDRESS MAC-ADDRESS HOST-NAME SERVER RATE-LIMIT STATUS
0 192.168.88.254 6C:3B:6B:7C:41:3E MikroTik DHCPv4_Server bound
Kód: Vybrat vše
[admin@MikroTik] > /ip dhcp-server lease set 0 rate-limit=10M/10M
[admin@MikroTik] > /queue simple print
Flags: X - disabled, I - invalid, D - dynamic
0 D name="dhcp-ds<6C:3B:6B:7C:41:3E>" target=192.168.88.254/32 parent=none packet-marks="" priority=8/8 queue=default-small/default-small limit-at=10M/10M max-limit=10M/10M burst-limit=0/0 burst-threshold=0/0 burst-time=0s/0s
bucket-size=0.1/0.1
Kód: Vybrat vše
[admin@MikroTik] > /queue simple print
Flags: X - disabled, I - invalid, D - dynamic
0 D name="dhcp-ds<6C:3B:6B:7C:41:3E>" target=192.168.88.254/32,fdb4:4de7:a3f8:418c::/66 parent=none packet-marks="" priority=8/8 queue=default-small/default-small limit-at=10M/10M max-limit=10M/10M burst-limit=0/0 burst-threshold=0/0
burst-time=0s/0s bucket-size=0.1/0.1
Podpora RADIUS
Od verze 6.43 systému RouterOS je možné použít RADIUS k přiřazení limitu rychlosti, k čemuž je třeba předat atribut Mikrotik-Rate-Limit ze serveru RADIUS. Abyste toho dosáhli, musíte nejprve nastavit server DHCPv4 tak, aby používal RADIUS pro přidělování pronájmů. Níže je uveden příklad, jak toto nastavit:
Kód: Vybrat vše
/radius
add address=10.0.0.1 secret=VERYsecret123 service=dhcp
/ip dhcp-server
set dhcp1 use-radius=yes
Kód: Vybrat vše
INSERT INTO `radcheck` (`username`, `attribute`, `op`, `value`) VALUES
('00:0C:42:00:D4:64', 'Auth-Type', ':=', 'Accept'),
INSERT INTO `radreply` (`username`, `attribute`, `op`, `value`) VALUES
('00:0C:42:00:D4:64', 'Framed-IP-Address', '=', '192.168.88.254'),
('00:0C:42:00:D4:64', 'Mikrotik-Rate-Limit', '=', '10M'),
Upozornění
Chcete-li najít podvodné servery DHCP jakmile se v síti objeví, můžete použít nástroj DHCP Alert. Bude monitorovat ethernetové rozhraní pro všechny odpovědi DHCP a kontrolovat, zda tato odpověď pochází z platného serveru DHCP. Pokud je zjištěna odpověď od neznámého serveru DHCP, spustí se výstraha:
Kód: Vybrat vše
[admin@MikroTik] ip dhcp-server alert>/log print
00:34:23 dhcp,critical,error,warning,info,debug dhcp alert on Public:
discovered unknown dhcp server, mac 00:02:29:60:36:E7, ip 10.5.8.236
[admin@MikroTik] ip dhcp-server alert>
Vzhledem k tomu, že odpovědi DHCP mohou být jednosměrné, nemusí "detektor podvodného DHCP" obdržet žádnou odpověď od ostatních klientů DHCP. Aby se s tímto problémem vypořádal, funguje detektor podvodného DHCP také jako klient DHCP - jednou za minutu odešle požadavky na zjištění podvodného DHCP.
Možnosti DHCP
Pomocí seznamu možností DHCP je možné definovat další vlastnosti, které má server DHCP inzerovat. Priorita vlastností je následující:
- radius
- lease
- server
- network
Podle protokolu DHCP je parametr vrácen klientovi DHCP pouze v případě, že o tento parametr požádá a uvede příslušný kód v atributu Parameter-List (kód 55) požadavku DHCP. Pokud kód není uveden v atributu Parameter-List, server DHCP jej klientovi DHCP neodešle, ale od verze RouterOS v7.1rc5 je možné vynutit volbu DHCP ze strany serveru, i když klient DHCP takový parametr nepožaduje:
Kód: Vybrat vše
ip/dhcp-server/option/set force=yes
Vlastnost | Popis |
---|---|
code (integer:1..254; Výchozí: ) | Kód možnosti dhcp. Všechny kódy jsou k dispozici na adrese http://www.iana.org/assignments/bootp-dhcp-parameters |
name (string; Výchozí: ) | Jméno názvu možnosti |
value (string; Výchozí: ) | Hodnota parametru. Dostupné datové typy pro volby jsou:
|
raw-value (HEX string ) | Pole pouze pro čtení, které zobrazuje raw hodnotu volby DHCP (formát skutečně odeslaný) |
Příklady
Classless Route (beztřídní směrování)
Beztřídní směrování přidá zadanou trasu do směrovací tabulky klientů. V našem příkladu přidá
- dst-address=160.0.0.0/24 gateway=10.1.101.1
- dst-address=0.0.0.0/0 gateway=10.1.101.1
Kód: Vybrat vše
/ip dhcp-server option
add code=121 name=classless value=0x18A000000A016501000A016501
/ip dhcp-server network
set 0 dhcp-option=classless
Kód: Vybrat vše
[admin@MikroTik] /ip route> print
Flags: X - disabled, A - active, D - dynamic, C - connect, S - static, r - rip, b - bgp, o - ospf,
m - mme, B - blackhole, U - unreachable, P - prohibit
# DST-ADDRESS PREF-SRC GATEWAY DISTANCE
0 ADS 0.0.0.0/0 10.1.101.1 0
1 ADS 160.0.0.0/24 10.1.101.1 0
Kód: Vybrat vše
/ip dhcp-server option
add name=classless code=121 value="0x18A00000\$(NETWORK_GATEWAY)0x00\$(NETWORK_GATEWAY)"
Automatická konfigurace proxy serveru
Kód: Vybrat vše
/ip dhcp-server
add code=252 name=auto-proxy-config value="'https://autoconfig.something.lv/wpad.dat'"
Sady možností DHCP
Kód: Vybrat vše
/ip dhcp-server option sets
Vendor Classes (Třídy výrobců)
Od verze 6.45beta6 RouterOS podporuje identifikátor ID třídy výrobců. Třídu výrobců používají klienti DHCP k volitelné identifikaci výrobce a přiřazení konfigurace.
Příklad
V následujícím příkladu konfigurace zadáme IP adresu z konkrétního seznamu pro mobilní telefon se systémem Android. Použijeme RouterBOARD s výchozí konfigurací
Kód: Vybrat vše
/ip pool
add name=default-dhcp ranges=192.168.88.10-192.168.88.254
add name=pool-for-VID ranges=172.16.16.10-172.16.16.120
Kód: Vybrat vše
/ip dhcp-server
add address-pool=default-dhcp disabled=no interface=bridge name=defconf
/ip dhcp-server network
add address=192.168.88.0/24 comment=defconf gateway=192.168.88.1
/ip dhcp-server vendor-class-id
add address-pool=pool-for-VID name=samsung server=defconf vid=android-dhcp-9
Kód: Vybrat vše
[admin@mikrotik] > /ip dhcp-server lease print detail
Flags: X - disabled, R - radius, D - dynamic, B - blocked
0 D address=172.16.16.120 mac-address=30:07:4D:F5:07:49 client-id="1:30:7:4d:f5:7:49" address-lists="" server=defconf dhcp-option=""
status=bound expires-after=8m55s last-seen=1m5s active-address=172.16.16.120 active-mac-address=30:07:4D:F5:07:49
active-client-id="1:30:7:4d:f5:7:49" active-server=defconf host-name="Galaxy-S8"
Kód: Vybrat vše
10:30:31 dhcp,debug,packet defconf received request with id 4238230732 from 0.0.0.0
10:30:31 dhcp,debug,packet secs = 3
10:30:31 dhcp,debug,packet ciaddr = 0.0.0.0
10:30:31 dhcp,debug,packet chaddr = 30:07:4D:F5:07:49
10:30:31 dhcp,debug,packet Msg-Type = request
10:30:31 dhcp,debug,packet Client-Id = 01-30-07-4D-F5-07-49
10:30:31 dhcp,debug,packet Address-Request = 172.16.16.120
10:30:31 dhcp,debug,packet Server-Id = 192.168.88.1
10:30:31 dhcp,debug,packet Max-DHCP-Message-Size = 1500
10:30:31 dhcp,debug,packet Class-Id = "android-dhcp-9"
10:30:31 dhcp,debug,packet Host-Name = "Galaxy-S8"
10:30:31 dhcp,debug,packet Parameter-List = Subnet-Mask,Router,Domain-Server,Domain-Name,Interface-MTU,Broadcast-Address,Address-Time,Ren
ewal-Time,Rebinding-Time,Vendor-Specific
10:30:31 dhcp,info defconf assigned 172.16.16.120 to 30:07:4D:F5:07:49
10:30:31 dhcp,debug,packet defconf sending ack with id 4238230732 to 172.16.16.120
10:30:31 dhcp,debug,packet ciaddr = 0.0.0.0
10:30:31 dhcp,debug,packet yiaddr = 172.16.16.120
10:30:31 dhcp,debug,packet siaddr = 192.168.88.1
10:30:31 dhcp,debug,packet chaddr = 30:07:4D:F5:07:49
10:30:31 dhcp,debug,packet Msg-Type = ack
10:30:31 dhcp,debug,packet Server-Id = 192.168.88.1
10:30:31 dhcp,debug,packet Address-Time = 600
10:30:31 dhcp,debug,packet Domain-Server = 192.168.88.1,10.155.0.1,10.155.0.126