?

Log in

No account? Create an account

Previous Entry | Next Entry

DHCP сервер, привязка IP-MAC

 Речь пойдет о настройке DHCP сервера, который будет раздавать ip-адреса привязанные к определенным макам.
Тестировалось на Gentoo и работает пока что :).
Ставим dhcpd, и идем в /etc/dhcp/dhcpd.conf
и наполняем его вот таким вот содержанием:
 
option domain-name "my.domain";
default-lease-time 76000;
max-lease-time 720000;
ddns-update-style none;
 
 
subnet 172.22.244.0 netmask 255.255.255.0 {
  range 172.22.244.41 172.22.244.200; #тут определяем как раз таки пул адресов которые будем раздавать (или вообще убираем эту строку, чтобы раздавать только указанным ниже макам адреса).
  option routers 172.22.244.4; #Адрес роутера который получит клиент
  option domain-name-servers 172.22.244.13; #Адрес DNS-сервера который получит клиент
  option subnet-mask 255.255.255.0; #Маска :)
}
 
 
На этом можно и закончить, но если вдруг нужна жесткая привязка IP-MAC, то прямо в секции Subnet
следует добавить описания хостов по этому примеру.
 
host stasucan
             {
             hardware ethernet 00:13:D4:44:8C:DE;
             fixed-address 172.22.244.1;
             }
host lifelost
             {
             hardware ethernet 00:1E:8C:A7:B3:35;
             fixed-address 172.22.244.2;
             }
 
Но тут скрывается одно НО. Если пара IP-MAC указанная в dhcpd.conf не совпадает с arp-таблицей,
то ip-шник выдан не будет. Выйти из этой ситуации можно следующим образом:
arp -f /etc/ethers.
А /etc/ethers выглядит примерно так:
172.22.244.1    00:13:d4:44:8c:de
172.22.244.2    00:1e:8c:a7:b3:35
172.22.244.4    00:1f:ca:bb:e9:5f
172.22.244.6    00:0d:61:cb:b4:a6
172.22.244.8    00:0f:ea:51:3b:b7
172.22.244.30   00:1e:52:f7:e1:5b
172.22.244.31   00:1e:52:f7:da:87
172.22.244.32   00:1e:52:f7:d6:3b
172.22.244.33   00:13:D4:98:FC:18
172.22.244.34   00:1E:52:F7:DB:40
172.22.244.35   00:1e:52:f7:d4:f7
Чтобы убрать возможность подмены адреса, заменим непривязанные адреса неверными маками, например 0:0:0:0:0:0. Пишем скрипт :
#!/bin/bash
mynet="172.22.244.";
n=1
arp -da #удаляем существующие записи
while [ "$n" -lt "255" ]
do
 arp -d $mynet$n #на всякий случай :)
 arp -s $mynet$n 0:0:0:0:0:0
 n=$(expr $n \+ 1);
done
arp -f /etc/ethers

Так же, необходимо, чтобы сервер работал на определенном интерфейсе. Для этого нужно отредактировать
/etc/conf.d/dhcpd:
DHCPDARGS=eth1

Метки: