DHCP и привязка к порту коммутатора
- From
- Vladimir Kurtukov (2:5006/9)
- To
- eugen@grosbein.pp.ru (2:5054/37.63)
- Date
- 2006-09-15T10:08:42Z
- Area
- RU.UNIX.BSD
Hello eugen.
15 Sep 06 11:39, Eugene Grosbein wrote to all:
[skipped...]
EG> Как лучше привязать выдачу IP к номеру порта?
EG> Можно попробовать найти недорогой свич,
т.е. свича еще никакого нет? cisco catalyst умеют option82 вставлять
в dhcp запросы на лету, там номер порта есть
EG> отсылающий SNTP trap при появлении нового MAC-а на порту, ловить этот
EG> трап на роутере и вести на нем таблицу соответствия MAC-ов и портов
EG> свича,
трап может и по дороге потеряться, кроме этого надо бы еще по snmp
сканить свич насчет таблицы mac-адрес <=> порт
примерно так (работает на catalyst - проверено):
=== Cut ===
#!/usr/bin/perl
use strict;
use warnings;
use SNMP_Session;
use BER;
my $host = '1.2.3.4';
my $community = 'public';
my $port = 161;
my $mac_tree = '.1.3.6.1.2.1.17.4.3.1.1';
my $port_tree = '.1.3.6.1.2.1.17.4.3.1.2';
my $session = SNMP_Session->open ($host, $community, $port)
or die "couldn't open SNMP session to $host";
my $tree_array = [ &oid2aref($mac_tree), &oid2aref($port_tree) ];
my $rows = $session->map_table($tree_array, \&walk_function);
print "rows: ", $rows, "\n";
sub oid2aref($)
{
my $str = shift;
my @oid = split(/\./, $str);
if (!defined($oid[0]) or $oid[0] eq '') { shift(@oid); }
return [ @oid ];
}
sub walk_function ($$)
{
my ($index, $mac, $port) = @_;
my $str_mac = hex_string($mac);
my $str_port = pretty_print($port);
print "${str_mac} : $str_port \n";
}
=== Cut ===
EG> а потом при запросе к DHCP можно как-то заставить демон выдать
EG> определенный IP для нового MAC-а?
ты ж можешь по dhcp выдавать для конкретного mac конкретный IP
host xxx {
hardware ethernet 00:11:22:33:44:55;
fixed-address 1.2.3.5;
}
Vladimir
--- GoldED+/BSD 1.1.5
* Origin: Unix powered... (2:5006/9)
SEEN-BY: 50/12 203 400/814 450/159 186 1024 451/30 461/43 132 640 469/999
SEEN-BY: 550/196 4616/3 4625/8 4635/4 4641/444 5000/76 5000 5006/1 9 26 5007/1
SEEN-BY: 5010/70 352 5011/13 5012/46 5015/28 5019/31 5020/18 154 175 194 400
SEEN-BY: 5020/545 549 715 758 982 1057 1523 1604 1630 1909 1922 2142 2238 2395
SEEN-BY: 5020/2450 2590 2871 4441 5021/3 29 5022/128 5025/3 750 5026/45
SEEN-BY: 5027/12 5029/32 5030/49 500 556 966 1063 1080 1900 1957 2828 5031/47
SEEN-BY: 5031/70 5034/10 13 5035/3 38 5036/1 5040/47 5042/13 5045/7 5049/1 50
SEEN-BY: 5049/97 5051/15 5054/1 4 8 9 11 28 35 36 37 45 63 66 67 70 75 84 85
SEEN-BY: 5055/95 5057/1 5059/9 5060/88 5061/15 5062/1 10 5063/3 5064/7 5066/18
SEEN-BY: 5074/9 5075/5 5077/70 5080/80 1003 5082/6 5083/21 5085/13 5090/108
SEEN-BY: 5094/4 5095/20 5096/18 5099/11 6001/3 10
PATH: 5006/9 1 5020/400 4441 545 5054/1 37