The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

[FreeBSD] патч который делает arp-таблицу статической (mac freebsd kernel patch ip)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: mac, freebsd, kernel, patch, ip,  (найти похожие документы)
From: "Anton L. Vinokurov" <anton@inorg.chem.msu.ru> Date: Tue, 31 Aug 99 16:33:21 +0800 Subject: [FreeBSD] патч который делает arp-таблицу статической > Появились у нас в конторе шибко умные юзеры. > Сидя во внутренней сети на IPX+Novell прописывают себе сами IP адрес и > лазят, черти, в Интернет через прокси сервер. Административные меры > применить не удается (администрация ..., госконтора). > Так вот, как бы отрезать им Инет напрочь ? Прокси (Squid), он же роутер > между двумя физическими сегментами сети (внутр. и внешней), работает на > FreeBSD. При этом известны МАС-адреса сетевых карт всех юзеров. Как бы > эффективнее отсекать таких "умников" с учетом того, что они периодически > меняют себе IP-адреса ? Есть патч к ядру FreeBSD, который делает arp-таблицу статической. Он внизу. Соответственно man arp на предмет -f и грузить всю таблицу при загрузке машины. Это не спасет от умников, которые на своих машинах перепрошивают MAC-адрес (для некоторых типов плат это возможно). -- Anton Vinokurov, ALV-RIPN, ALV9-RIPE, ALV26 anton@inorg.chem.msu.ru ICQ:29041781 ------------------------------- - --- netinet/if_ether.c.orig Wed Mar 17 10:37:34 1999 +++ netinet/if_ether.c Wed Mar 17 11:41:02 1999 @@ -482,6 +482,19 @@ itaddr = myaddr; goto reply; } +#ifdef ARP_PERMNOOVER + la = arplookup(isaddr.s_addr, 0, 0); + if (la && (rt = la->la_rt)) + if (!rt->rt_expire) { + if ((sdl = SDL(rt->rt_gateway)) && sdl->sdl_alen && + bcmp((caddr_t)ea->arp_sha, LLADDR(sdl), sdl->sdl_alen)) + log(LOG_ERR, + "arp: %6D is using permanent IP address %s of %6D\n", + ea->arp_sha, ":", + inet_ntoa(isaddr), (u_char *)LLADDR(sdl), ":"); + goto reply; + } +#endif /* ARP_PERMNOOVER */ la = arplookup(isaddr.s_addr, itaddr.s_addr == myaddr.s_addr, 0); if (la && (rt = la->la_rt) && (sdl = SDL(rt->rt_gateway))) { if (sdl->sdl_alen && --------------------------------------------------------------------------- после этого патча флаг NOARP на интерфейсе полностью замораживает ARP-таблицу. содержимое таблицы может быть изменено только с помощью /usr/sbin/arp --- if_ether.c.std Thu Sep 10 18:22:48 1998 +++ if_ether.c Fri Sep 11 16:53:22 1998 @@ -482,6 +482,7 @@ itaddr = myaddr; goto reply; } +/*VV*/ if (!(ac->ac_if.if_flags & IFF_NOARP)) { la = arplookup(isaddr.s_addr, itaddr.s_addr == myaddr.s_addr, 0); if (la && (rt = la->la_rt) && (sdl = SDL(rt->rt_gateway))) { if (sdl->sdl_alen && @@ -501,6 +502,7 @@ la->la_hold = 0; } } +/*VV*/ } reply: if (op != ARPOP_REQUEST) { m_freem(m);

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




Закладки на сайте
Проследить за страницей
Created 1996-2019 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру
Hosting by Ihor