можно сделать так что бы arp lookup вообще не работал, и записи в таблицу можно было вносить исключительно с помощью arp. Тогда не придется присваивать нули всем пустым адресам.
Делается это так:
Добавляем флаг -arp на интерфейс:
ifconfig fxp0 -arp
и в файле /etc/rc.conf:
ifconfig_fxp0="inet 192.168.1.1 netmask 255.255.255.0 -arp"
Создаем файл, в котором прописываем соответствия ip и MAC-адресов (например, /etc/ether.local) такого вида:
192.168.1.2 00:80:23:5F:65:8C
192.168.2.3 00:5C:67:9A:55:5B
. . .
Очищаем arp-кэш и загружаем статическую таблицу:
arp -ad
arp -f /etc/ether.local
и добавляем последнюю команду в /etc/rc.local
Теперь на этом интерфейсе arp не работает вообще. То есть не только не принимаются обновления в arp-кэш, но и не отсылаются ответы на запросы arp who-has. А это значит, что и на клиентских машинах необходима статическая запись соответствия ip и MAC-адресов маршрутизатора. На Windows-машинах это делается записью вида:
arp -s 192.168.1.1 00-79-36-FC-09-0F
В старых версиях FreeBSD поддержки флага -arp для интерфесов не было. Ниже патч к ядру FreeBSD который это делает(возможно подобные патчи существуют и для других ОС).
--- if_ether.c.stdThu Sep 10 18:22:48 1998
+++ if_ether.cFri 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);
В этом patch'е блокируется только обновление arp-кэша, ответы на запросы не блокируются, поэтому статические записи на клиентских машинах не требуются. В версиях FreeBSD старше чем 4.9-RELEASE патч не требуется, такая функциональность есть out of box. Просто нужно сконфигурировать интерфейс с флагом staticarp.
Способ 2 (дорогой и надежный) Port Security.
Необходимо приобрести свитч, который позволяет сделать привязку MAC к конкретному физическому порту в свитче. А на роутере в свою очередь делается статическая привзяка IP к MAC. Обмануть такую защиту практически невозможно. Однако стоят такие свитчи немало.Один из недостатков данного способа - клиенты будут удивляться, почему не работает интернет после смены сетевой карты.
ну а там смотри в такие варианты как туннелирование (PPTP или L2TP).