Хабр Курсы для всех
РЕКЛАМА
Практикум, Хекслет, SkyPro, авторские курсы — собрали всех и попросили скидки. Осталось выбрать!
ip-адрес свитча должен находиться в той же подсети, что и адреса, выдаваемые абонентам.
shared-network ISP {
subnet 10.0.0.0 netmask 255.255.255.0
{
#Сеть коммутаторов доступа
range 10.0.0.2 10.0.0.10;
option broadcast-address 10.0.0.255;
option subnet-mask 255.255.255.0;
option routers 10.0.0.1;
}
subnet 10.10.0.0 netmask 255.255.255.0
{
#Сеть клиентов
option broadcast-address 10.10.0.255;
option subnet-mask 255.255.255.0;
option domain-name-servers 10.10.0.1,8.8.8.8;
option routers 10.10.0.1;
class "p5" {
match if binary-to-ascii (10, 8, "", suffix( option agent.circuit-id, 1)) = "5"
and binary-to-ascii(16, 8, ".", option agent.remote-id) = "0.6.c0.a0.bb.48.e5.b0";
}
# собственно выдаем IP классу
pool {
range 10.10.0.5;
allow members of "p5";
}
}
}
config traffic control 1-8 broadcast enable multicast enable unicast disable action drop threshold 64 countdown 5 time_interval 5
#Это спасет от множественных броадкастов, генерируемых клиентами
enable loopdetect
config loopdetect ports 1-8 state enable
config loopdetect recover_timer 1200 interval 10 mode port-based
#А это спасёт от петель если уж они образовались
IP-адрес свитча должен находиться в той же подсети, что и адреса, выдаваемые абонентам.
Вы напрактике это проверяли? Или это догадки?
default-lease-time 300;
max-lease-time 600;
authoritative;
ddns-update-style none;
ddns-updates off;
log-facility local7;
deny unknown-clients;
deny bootp;
local-address 172.17.255.99;
option ms-classless-static-routes code 249 = array of integer 8;
if exists agent.circuit-id {
log ( info, concat( " Lease for ", binary-to-ascii (10, 8, ".", leased-address),
" Switch port: ", binary-to-ascii (10, 8, ".", option agent.circuit-id),.
" Switch MAC: ", binary-to-ascii(16, 8, ".", option agent.remote-id)));
}
subnet 172.17.255.0 netmask 255.255.255.0 {
deny unknown-clients;
option routers 172.17.255.253;
}
shared-network "global_net" {
subnet 172.17.254.1 netmask 255.255.255.255 {} # Свитч 1
subnet 172.17.254.14 netmask 255.255.255.255 {} # Свитч 2
subnet 172.17.254.49 netmask 255.255.255.255 {} # и т.д.
#Классы пользователей
class "vishnya" {
match if binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 4, 2)) = "22"
and binary-to-ascii(10, 8, ".", packet(24, 4)) = "172.17.254.1"
and binary-to-ascii(16, 8, ":", substring(hardware,1, 6)) = "0:15:58:71:8f:7c"
;
}
class "sogacheva" {
match if binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 4, 2)) = "23"
and binary-to-ascii(10, 8, ".", packet(24, 4)) = "172.17.254.1"
and binary-to-ascii(16, 8, ":", substring(hardware,1, 6)) = "0:25:22:e2:71:8d"
;
}
class "ers0072" {
match if binary-to-ascii(10, 16, "", substring(option agent.circuit-id, 4, 2)) = "4"
and binary-to-ascii(10, 8, ".", packet(24, 4)) = "172.17.254.14"
and binary-to-ascii(16, 8, ":", substring(hardware,1, 6)) = "f8:d1:11:2:e8:b2"
;
}
#------------------Описания network для 172.17.1.0/24---------------------------
subnet 172.17.1.0 netmask 255.255.255.0 {
allow unknown-clients;
option routers 172.17.1.254;
option domain-name-servers 172.17.100.1, 172.17.100.2;
option ms-classless-static-routes 12, 172,16, 172,17,1,254;
pool{
allow members of "vishnya";
range 172.17.1.144;
}
pool{
allow members of "sogacheva";
range 172.17.1.158;
}
pool{
allow members of "ers0072";
range 172.17.1.48;
}
}
}" Вы же рубите порт на 64 пакетах за 5 секунд" Один порт — один клиент. Вполне достаточно.
На практике я писал что у меня freeradius с perl выборкой и snmp правилами для блокировки IP на порту.
В примере для Вас с shared-network класс описан так, что он привязывается к порту любого свитча.
можно ручками у себя прописать IP-соседа из одного влана и когда он выключает комп сидеть под его IP.не сделаешь. Даже попытка прописать себе свой IP статикой проживёт ровно до истечения lease dhcp-ответа. После этого свитч запомненную информацию скинет. Так что пользователь обязан юзать DHCP. И не пропишет своими кривыми ручками что-то не то.
config access_profile profile_id 4 add access_id 1 ip vlan_id $vlanid source_ip 10.5.0.88 port 1 permitотпадает, т.к. это делается динамически.
Готов долго и нудно спорить — но… Думаю бессмысленно. Каждый останется при своём мнении.
#Deny untrast dhcp-server
expect "#$" { send «create access_profile profile_id 2 profile_name 2 ip udp src_port_mask 0xFFFF \n»}
expect "#$" { send «config access_profile profile_id 2 add access_id 1 ip udp src_port 68 port $user_ports permit\n»}
expect "#$" { send «config access_profile profile_id 2 add access_id 2 ip udp src_port 67 port $user_ports deny\n»}
config filter dhcp_server ports 1-25 state enable
config filter dhcp_server ports 1-25 state enable
Практические аспекты использования DHCP relay+option82