NiOl
21-03-2018, 01:55
На одном из объектов жуткий бардак.
Некоторые товарищи поставили несколько точек доступа. В принципе, в проекте было оснащение помещений WiFi, но подрядчики поленились и кабель в нужных местах не заложили.
Проблема началась не сразу, а только когда охранникам кто-то по-секрету слил пароль к сети. Через пару недель, добрая половина поселка, уткнувшись в мобильники, тусовалась если не в помещении, то как минимум под окнами. Мне чужого инета не жалко, мне просто стремно, что какой-нить школьник накроет сервак со всеми бэкапами... Смена пароля решала проблему всего на несколько дней, зато поднимала волну недовольства офисных работников, видите ли из-за меня у них всякие фкантахты неработают, ахахах!
Сеть - классика, 192.168.0.0/24. Адреса выдаю файловым сервером на 2003. Есть компы на ХР, некоторые мириться с тормозами не желают, потому носят свои ноуты. Статика только на сервере и сетевом железе, остальным DHCP, все же люди свои ноуты не только на работе используют, им каждый день адреса прописывать/сбрасывать - неразумно.
Захотелось распределить сетевое пространство следующим образом:
1-31 - Различные сервера, статика (резерв)
32-127 - Рабочие станции, DHCP, есть доступ к IP серверов
128-159 - VoIP телефоны, DHCP, есть доступ к IP серверов
160-191 - reserved
193-223/26 - Гостевая сеть "D", DHCP, все мобилки, планшетки и прочая ересь, притащенная с собой и воткнутое в розетку или в вафлю без согласования. IP серверов, пользователей и телефонов недоступны (маска)
224-247 - Принтеры, МФУ и прочее офисное железо
248-254 - Рутеры и т.п. (Сейчас рутера 2, 254 и 253 адреса соответственно. Есть еще 3й, фиктивный, о нем позже)
Практически реализовать это 1 сервером MS невозможно, т.к. нельзя делать пересекающиеся диапазоны. Т.е. сделать подсеть с адресами 192-224 и маской 192 строго-настрого нельзя, т.к. она внутри сети 0-255 с маской 0.
Тогда я стал искать на просторах бесплатный сервак, работающий не только на серверной ОС. Сначала попался Turbo DHCP, который когда-то с ограничениями был бесплатным, но сейчас очень даже не бесплатный.
Следом попался Open DHCP Server, по обзору вообще зверь, разве что кофе в постель носить не умеет, да тапочки с газетой подавать, на нем и остановился. Вот тут проблемы и начались...
Легкое отвлечение. Гостевая подсеть должна быть внутри основной сети только из-за доступности рутеров. На свежих смартах несложно посмотреть адрес и маску, что выдал DHCP-сервер, и маска вида 255.255.255.192 должна навести на мысль, что стоит подключиться со стаикой с нормальной маской и покапаться/нагадить в сети. Мне этого не нужно. Поэтому пришла мысль выдавать в гостевую сеть адреса 192.168.1.0/24, тогда сервер MS может выдавать адреса 2го диапазона, поскольку они не пересекаются, но сервер MS не может их выдавать, если сам не имеет адрес в сети 192.168.1.0. Выдавать адреса гостевой сети рутером не катит (для гостевой подсети пришлось воткнуть 3й рутер, у которого WAN 192.168.0.252/29, т.е. на сервер никак не попасть, а LAN - 192.168.1.254.). Проблема в том, что в обычных рутерах нельзя прописать черный список, что бы офисные компы не получили гостевой IP. Хотел использовать User class, но тут же вспомнил про домашние ноуты, которые после моих манипуляций не будут работать дома... Более того, с 3м рутером пришлось повозиться, т.к. на WAN-порту он игнорировал маску /29, показывая ее в настройках, но заменяя на /24, т.е. сервак становился доступен, такое часто встречал )))
Итак, решено все это сделать на Open DHCP. Для пробы взял комп, за который обычно никто не садится (одноядерный целерон + 512 оперативы), сделал на нем статику в диапазоне серверов и временно (для пробы) дописал статику в гостевой сети.
Принцип распределения DHCP:
Телефоны имеют не сильно разбросанный диапазон маков, их сунул в отдельную подсеть, и эта часть вроде работает исправно, т.е. все телефоны получили адреса из этого диапазона и никто посторонний там не оказался:
[RANGE_SET]
# Phones
DHCPRange=192.168.0.128-192.168.0.159
FilterMacRange=00:0b:82:4d:c3:65-00:0b:82:61:da:33
Router=192.168.0.2
Шлюз для телефонов несуществующий, поскольку им инет не нужен. Потом вообще оставлю строку пустой, что бы параметра не было.
Дальше идет основная подсеть, кроме как по разрешенным MACам объединить компы не придумал. По доке, диапазоны маков объединяются по "или", но их всего 32 (мне достаочно).
А все, что не попадет в этот диапазон, будет считаться гостем и пойдет в третий диапазон:
[RANGE_SET]
# Office network
DHCPRange=192.168.0.32-192.168.0.95
FilterMacRange=00:1a:4d:73:9e:20-00:1a:4d:73:9e:20
FilterMacRange=00:1e:8c:9f:ba:5b-00:1e:8c:9f:ba:5b
FilterMacRange=00:21:91:8a:9b:ff-00:21:91:8a:9b:ff
FilterMacRange=40:8d:5c:c0:34:25-40:8d:5c:c0:34:25
FilterMacRange=4c:49:e3:17:f2:b9-4c:49:e3:17:f2:b9
FilterMacRange=64:66:b3:f3:9b:dd-64:66:b3:f3:9b:dd
FilterMacRange=90:2b:34:15:cc:9a-90:2b:34:15:cc:9a
FilterMacRange=94:de:80:7e:85:9d-94:de:80:7e:85:9d
FilterMacRange=94:de:80:7f:fc:a8-94:de:80:7f:fc:a8
FilterMacRange=94:de:80:c6:72:fb-94:de:80:c6:72:fb
FilterMacRange=bc:ae:c5:cf:09:e7-bc:ae:c5:cf:09:e7
Router=192.168.0.253, 192.168.0.254
NETBIOSNameSrv=192.168.0.1
DomainServer=192.168.0.253,192.168.0.254,192.168.0.1,8.8.8.8,77.88.8.8
[RANGE_SET]
# Guest network
DHCPRange=192.168.1.32-192.168.1.127
Router=192.168.1.254
DomainServer=192.168.1.254,8.8.8.8
AddressTime=3600
К этим всем диапазонам общие настройки:
[GLOBAL_OPTIONS]
SubNetMask=255.255.255.0
AddressTime=86400
Сразу же после пробного запуска обнаружилось 2 неприятности:
1. Выданные старым сервером адреса пересеклись с новыми, выданными новым сервером (мой косяк, нужно было сначала сделать общую конфигурацию на диапазон, не пересекающийся с диапазоном старого сервера, а через пару дней перейти на конечную конфигурацию). Но пришлось потерпеть 1 день расколбаса.
2. Измененная конфигурация не подцепляется сервером автоматически и в доке нет никакого упоминания, как заставить сервер перечитать новую конфигурацию, приходится рестартить сервис, что не очень удобно.
Остальное - ошибки.
Ни одной мобилки не появилось в гостевой сети, все преспокойно разместились в рабочей. А в гостевой оказался толко один из прописанных компов, которому сервер упорно отказывал в выдаче адреса. В списке фильтров он идет первым, как буд-то запись сделана с ошибкой.
Лог на начало суток, и так каждую секунду, весь день:
[20-Mar-18 00:00:00] DHCPREQUEST from Host 00:1a:4d:73:9e:20 (sz13) without Discover, NAKed
[20-Mar-18 00:00:01] DHCPREQUEST from Host 00:1a:4d:73:9e:20 (sz13) without Discover, NAKed
[20-Mar-18 00:00:02] DHCPREQUEST from Host 00:1a:4d:73:9e:20 (sz13) without Discover, NAKed
...
А вот телефон получает IP рабочего диапазона:
[20-Mar-18 12:56:22] Host d0:81:7a:73:68:fc (iPhone-Tatana) allotted 192.168.0.86 for 86400 seconds
Хотя этот мак нигде не прописан.
Есть и другие непонятки, но сначала хочу разобраться с важной частью. Есть вариант воспользоваться static-DHCP, но он некрасив и громоздок.
* На случай, если кто-то преположет, что список маков набран ручками и там ошибки - увы, экспортировал список из старого DHCP от MS и обработав батником воткнул в конфигурацию.
Некоторые товарищи поставили несколько точек доступа. В принципе, в проекте было оснащение помещений WiFi, но подрядчики поленились и кабель в нужных местах не заложили.
Проблема началась не сразу, а только когда охранникам кто-то по-секрету слил пароль к сети. Через пару недель, добрая половина поселка, уткнувшись в мобильники, тусовалась если не в помещении, то как минимум под окнами. Мне чужого инета не жалко, мне просто стремно, что какой-нить школьник накроет сервак со всеми бэкапами... Смена пароля решала проблему всего на несколько дней, зато поднимала волну недовольства офисных работников, видите ли из-за меня у них всякие фкантахты неработают, ахахах!
Сеть - классика, 192.168.0.0/24. Адреса выдаю файловым сервером на 2003. Есть компы на ХР, некоторые мириться с тормозами не желают, потому носят свои ноуты. Статика только на сервере и сетевом железе, остальным DHCP, все же люди свои ноуты не только на работе используют, им каждый день адреса прописывать/сбрасывать - неразумно.
Захотелось распределить сетевое пространство следующим образом:
1-31 - Различные сервера, статика (резерв)
32-127 - Рабочие станции, DHCP, есть доступ к IP серверов
128-159 - VoIP телефоны, DHCP, есть доступ к IP серверов
160-191 - reserved
193-223/26 - Гостевая сеть "D", DHCP, все мобилки, планшетки и прочая ересь, притащенная с собой и воткнутое в розетку или в вафлю без согласования. IP серверов, пользователей и телефонов недоступны (маска)
224-247 - Принтеры, МФУ и прочее офисное железо
248-254 - Рутеры и т.п. (Сейчас рутера 2, 254 и 253 адреса соответственно. Есть еще 3й, фиктивный, о нем позже)
Практически реализовать это 1 сервером MS невозможно, т.к. нельзя делать пересекающиеся диапазоны. Т.е. сделать подсеть с адресами 192-224 и маской 192 строго-настрого нельзя, т.к. она внутри сети 0-255 с маской 0.
Тогда я стал искать на просторах бесплатный сервак, работающий не только на серверной ОС. Сначала попался Turbo DHCP, который когда-то с ограничениями был бесплатным, но сейчас очень даже не бесплатный.
Следом попался Open DHCP Server, по обзору вообще зверь, разве что кофе в постель носить не умеет, да тапочки с газетой подавать, на нем и остановился. Вот тут проблемы и начались...
Легкое отвлечение. Гостевая подсеть должна быть внутри основной сети только из-за доступности рутеров. На свежих смартах несложно посмотреть адрес и маску, что выдал DHCP-сервер, и маска вида 255.255.255.192 должна навести на мысль, что стоит подключиться со стаикой с нормальной маской и покапаться/нагадить в сети. Мне этого не нужно. Поэтому пришла мысль выдавать в гостевую сеть адреса 192.168.1.0/24, тогда сервер MS может выдавать адреса 2го диапазона, поскольку они не пересекаются, но сервер MS не может их выдавать, если сам не имеет адрес в сети 192.168.1.0. Выдавать адреса гостевой сети рутером не катит (для гостевой подсети пришлось воткнуть 3й рутер, у которого WAN 192.168.0.252/29, т.е. на сервер никак не попасть, а LAN - 192.168.1.254.). Проблема в том, что в обычных рутерах нельзя прописать черный список, что бы офисные компы не получили гостевой IP. Хотел использовать User class, но тут же вспомнил про домашние ноуты, которые после моих манипуляций не будут работать дома... Более того, с 3м рутером пришлось повозиться, т.к. на WAN-порту он игнорировал маску /29, показывая ее в настройках, но заменяя на /24, т.е. сервак становился доступен, такое часто встречал )))
Итак, решено все это сделать на Open DHCP. Для пробы взял комп, за который обычно никто не садится (одноядерный целерон + 512 оперативы), сделал на нем статику в диапазоне серверов и временно (для пробы) дописал статику в гостевой сети.
Принцип распределения DHCP:
Телефоны имеют не сильно разбросанный диапазон маков, их сунул в отдельную подсеть, и эта часть вроде работает исправно, т.е. все телефоны получили адреса из этого диапазона и никто посторонний там не оказался:
[RANGE_SET]
# Phones
DHCPRange=192.168.0.128-192.168.0.159
FilterMacRange=00:0b:82:4d:c3:65-00:0b:82:61:da:33
Router=192.168.0.2
Шлюз для телефонов несуществующий, поскольку им инет не нужен. Потом вообще оставлю строку пустой, что бы параметра не было.
Дальше идет основная подсеть, кроме как по разрешенным MACам объединить компы не придумал. По доке, диапазоны маков объединяются по "или", но их всего 32 (мне достаочно).
А все, что не попадет в этот диапазон, будет считаться гостем и пойдет в третий диапазон:
[RANGE_SET]
# Office network
DHCPRange=192.168.0.32-192.168.0.95
FilterMacRange=00:1a:4d:73:9e:20-00:1a:4d:73:9e:20
FilterMacRange=00:1e:8c:9f:ba:5b-00:1e:8c:9f:ba:5b
FilterMacRange=00:21:91:8a:9b:ff-00:21:91:8a:9b:ff
FilterMacRange=40:8d:5c:c0:34:25-40:8d:5c:c0:34:25
FilterMacRange=4c:49:e3:17:f2:b9-4c:49:e3:17:f2:b9
FilterMacRange=64:66:b3:f3:9b:dd-64:66:b3:f3:9b:dd
FilterMacRange=90:2b:34:15:cc:9a-90:2b:34:15:cc:9a
FilterMacRange=94:de:80:7e:85:9d-94:de:80:7e:85:9d
FilterMacRange=94:de:80:7f:fc:a8-94:de:80:7f:fc:a8
FilterMacRange=94:de:80:c6:72:fb-94:de:80:c6:72:fb
FilterMacRange=bc:ae:c5:cf:09:e7-bc:ae:c5:cf:09:e7
Router=192.168.0.253, 192.168.0.254
NETBIOSNameSrv=192.168.0.1
DomainServer=192.168.0.253,192.168.0.254,192.168.0.1,8.8.8.8,77.88.8.8
[RANGE_SET]
# Guest network
DHCPRange=192.168.1.32-192.168.1.127
Router=192.168.1.254
DomainServer=192.168.1.254,8.8.8.8
AddressTime=3600
К этим всем диапазонам общие настройки:
[GLOBAL_OPTIONS]
SubNetMask=255.255.255.0
AddressTime=86400
Сразу же после пробного запуска обнаружилось 2 неприятности:
1. Выданные старым сервером адреса пересеклись с новыми, выданными новым сервером (мой косяк, нужно было сначала сделать общую конфигурацию на диапазон, не пересекающийся с диапазоном старого сервера, а через пару дней перейти на конечную конфигурацию). Но пришлось потерпеть 1 день расколбаса.
2. Измененная конфигурация не подцепляется сервером автоматически и в доке нет никакого упоминания, как заставить сервер перечитать новую конфигурацию, приходится рестартить сервис, что не очень удобно.
Остальное - ошибки.
Ни одной мобилки не появилось в гостевой сети, все преспокойно разместились в рабочей. А в гостевой оказался толко один из прописанных компов, которому сервер упорно отказывал в выдаче адреса. В списке фильтров он идет первым, как буд-то запись сделана с ошибкой.
Лог на начало суток, и так каждую секунду, весь день:
[20-Mar-18 00:00:00] DHCPREQUEST from Host 00:1a:4d:73:9e:20 (sz13) without Discover, NAKed
[20-Mar-18 00:00:01] DHCPREQUEST from Host 00:1a:4d:73:9e:20 (sz13) without Discover, NAKed
[20-Mar-18 00:00:02] DHCPREQUEST from Host 00:1a:4d:73:9e:20 (sz13) without Discover, NAKed
...
А вот телефон получает IP рабочего диапазона:
[20-Mar-18 12:56:22] Host d0:81:7a:73:68:fc (iPhone-Tatana) allotted 192.168.0.86 for 86400 seconds
Хотя этот мак нигде не прописан.
Есть и другие непонятки, но сначала хочу разобраться с важной частью. Есть вариант воспользоваться static-DHCP, но он некрасив и громоздок.
* На случай, если кто-то преположет, что список маков набран ручками и там ошибки - увы, экспортировал список из старого DHCP от MS и обработав батником воткнул в конфигурацию.