Szokatlan DHCP

Az alábbi problémára keresnék valami megoldást.

Adott egy gép 4 darab ethernet interface-szel. 1 WAN és 3 LAN felé. Ezen futna a DHCP szerver.

Előfordulhat, hogy egy notebook a különböző LAN-okban is megjelenik, és mindegyikben LAN-ban más-más IP-t, gatewayt, stb.-t kellene neki küldeni.

Pl. ha az 11:22:33:44:55:66 MAC-című gépről az eth1-en jön a kérés, akkor kapja fixen 10.0.1.15-öt, ha az eth2-n tűnik fel, akkor a 10.0.2.32-t, ha pedig az eth3-on, akkor a 10.0.3.50-100 intervallumból osszunk neki.

Ez nyilván megoldható, ha az ember 3 példányban futtatja a dhcp-szervert, mindegyik példányt egy-egy interface-hez kötve, de ehhez általában "drótozni/gányolni" kell, az meg hosszú távon sosem jó. Szóval az volna a jó, ha valamelyik dhcp szerver konfigurálható lenne a fenti célra.

Hozzászólások

dnsmasq-ot említette valaki, arra nem emlékszem fejből, hogy lehet-e rajta ilyet (szerintem igen), de a "hagyományos" isc-dhcp-server, ami pl. debianokban, meg talán a redhat alapú linuxokban is alapértelmezett dhcp szerver, simán lehet trükközés nélkül is, feltéve, hogy az egyes interface-ek eltérő alhálóba tartoznak.
Lásd dhcpd.conf subnet kulcsszó!

valahol írják hogy a dnsmasq dhcp-host opciója elfogad "net:" alopciót, ami olyan mint máshol a "tag:" - bár se a changelog-ban, se a manuálban nem írnak róla.
ha valamely verzió ismeri, akkor elvileg így tudod megoldani:

dhcp-host=11:22:33:44:55:66,10.0.1.15,net:eth1
dhcp-host=11:22:33:44:55:66,10.0.2.32,net:eth2
dhcp-range=interface:eth3,10.0.3.50,10.0.3.100,60m
dhcp-option=tag:eth1,option:router,10.0.1.1
dhcp-option=tag:eth2,option:router,10.0.2.1
dhcp-option=tag:eth3,option:router,10.0.3.1

de valóban, az ISC dhcpd-vel biztosan meg lehet oldani...

~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack

2.62-3+deb7u1 verzió a debian stable-ből.
A man dnsmasq -ban van egy apró említés a net: -ről, de ott azt írja, hogy a dhcp-host -nál ez a set: -nek felel meg.

Ennek ellenére viszont úgy működik, ahogyan szeretném, vagyis mintha valami default tag lenne az eth1, eth2, stb.

nekem is ez van fönt.
úgy van, azt írja hogy a "set:" helyett használható a "net:". a "set:" pedig beállítja a cimkét, nem pedig az alapján szűr. úgyhogy szerintem az alap működése az, hogy ha több MAC egyezés van a dhcp-host szabályokban, akkor az interface subnet-jéhez megfelelő IP-t választja, ezáltal a "net:" paraméter nélkül is működnie kell.

az interface neve biztosan egy default tag, a logjában is látható, h minden dhcp kérésen rajta van az iface-nek megfelelő cimke.

~~~~~~~~
deb http://deb.metaltux.tk/ wheezy yazzy repack

Még a leírtnál is kicsit összetettebb a rendszerem, mert egy-egy interface-en akár több subnet is van, de remélem így még hasznosabb lesz a config:

Így néz ki az IP-kiosztás

eth0: x.x.x.x/255.255.255.0
eth1: 10.1.1.254/255.255.255.0
10.1.2.254/255.255.255.0
10.1.3.254/255.255.255.0
10.1.4.254/255.255.255.0
eth2: 10.2.1.254/255.255.255.0
eth3: 10.3.1.254/255.255.255.0

Így pedig a dnsmasq.conf idetartozó része:

dhcp-range=10.1.1.0,static,255.255.255.0
dhcp-range=10.1.2.0,static,255.255.255.0
dhcp-range=10.1.3.0,static,255.255.255.0
dhcp-range=interface:eth1,10.1.4.100,10.1.4.200,255.255.255.0,1h
dhcp-range=interface:eth2,10.2.1.100,10.2.1.200,255.255.255.0,1h
dhcp-range=10.3.1.0,static,255.255.255.0

dhcp-host=80:00:27:86:64:fd,lan01host01,10.1.1.5,net:eth1,12h
dhcp-host=80:00:27:86:64:fd,lan02host01,10.2.1.5,net:eth2,12h
dhcp-host=80:00:27:86:64:fd,lan03host01,10.3.1.8,net:eth3,12h

dhcp-host=80:00:27:86:64:fe,lan01host02,10.1.2.6,net:eth1,12h
dhcp-host=80:00:27:86:64:fe,lan02host02,10.2.1.6,net:eth2,12h
dhcp-host=80:00:27:86:64:fe,lan03host02,10.3.1.9,net:eth3,12h

dhcp-option=tag:eth1,option:dns-server,8.8.8.8
dhcp-option=tag:eth1,option:domain-name,"lan1.local"

dhcp-option=tag:eth2,option:dns-server,208.67.222.222
dhcp-option=tag:eth2,option:domain-name,"lan2.local"

dhcp-option=tag:eth3,option:dns-server,199.85.126.30
dhcp-option=tag:eth3,option:domain-name,"lan3.local"
dhcp-option=tag:eth3,option:router,10.3.1.2

Ezzel a konfiggal tesztelve mindkét ismert gép mindhárom lan-ban a neki fixen megadott címet kapja.
Ismeretlen gép a lan1-ben 10.1.4.100-200 tarományból kapott címet, a lan2-ben a 10.2.1.100-200 tartományból, a lan3-ban pedig nem kapott.

ISC DHCP-nél semmi sem tiltja, hogy egyszerre több interface-en különböző beállításokkal (subnet configokkal) fusson.