« -: Apr 05, 2005, 14:49 »
Привет на всички ,
Картинката е следната : имам DHCP сървър слушащ в даден мрежов сегмент , както и dhcp клиент в този сегмант.
Целта ми е да направя така че когато определен клиент (на който му зная mac адреса , примерно mac CC:CC:CC:CC:CC:CC)
зададе към броадкаста DHCPDISCOVER заявка и съответно сървъра му върне DHCPOFFER - клиента (демек този от които идва DHCPDISCOVER) да филтрира DHCPOFFER-а.
Замисъла е по-този начин да мога да вида дали няма и друг DHCP сървър в сегмента.
До сега имах няколко идеи , които за съжаление не сработиха:
1-во) най-простото което ми дойде на ум - да сетна на една от двете машени грешен
мак адрес на другата - но това се оказа глупост
2-ро) на клиент-а да забрана мак адреса на сървъра (което не успях да разгадая защо не сработи)
Така когато tcpdump-вам на клиента , пакета който получавам от сървъра е :
root@client:#tcpdump -n -vvv -e ether src AA:AA:AA:AA:AA:AA
14:24:27.035903 aa:aa:aa:aa:aa:aa > ff:ff:ff:ff:ff:ff, ethertype ARP (0x0806), length 56: arp who-has 192.168.0.204 tell 192.168.0.1
14:24:27.111681 aa:aa:aa:aa:aa:aa > cc:cc:cc:cc:cc:cc, ethertype IPv4 (0x0800), length 352: IP (tos 0x10, ttl 16, id 0, offset 0, flags [none], length: 338) 192.168.0.1.67 > 192.168.0.204.68: BOOTP/DHCP, Reply, length: 310, xid:0x75001471, flags: [none] (0x0000)
Your IP: 192.168.0.204
Server IP: 192.168.0.1
Client Ethernet Address: cc:cc:cc:cc:cc:cc [|bootp]
...
Като aa:aa:aa:aa:aa:aa - е мак адреса на сървъра , а сс:сс:сс:сс:сс:сс на клиент-а
Нещото което не разбирам е защо следното правило не сработва:
iptables -A INPUT -m mac --mac-source aa:aa:aa:aa:aa:aa -j DROP
Правилото се инсъртва без проблеми , няма нишо друго във firewall-а , default политиките са ACCEPT и даденото правило НЕ матчва нищо и пакета си минава
0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 MAC aa:aa:aa:aa:aa:aa
Дайте малко акъл как да го направя това .. значи другия вариант е да забранявам на сървъра , той е със FreeBSD с pf като firewall , който няма възможност да матчва по мак адрес (поне аз не успях да открия в документацията му) , друго за който се сещам е с ipfw2 пак на сървъра , там поне има възможност за матч по мак адрес , но пък трябва да прекомпилирам кърнъла за да пусна съпорт-а за ipfw2
3-то което ми идва на ум , е ако мога някак си в самия конфиг файл на dhcp сървъра да му кажа да не отговаря на заявки от даден мак адрес