LINUX.ORG.RU
ФорумAdmin

Static ARP


0

0

Есть роутер с несколькими интерфейсами. Сеть 192.168.2.0 разбита на три подсети с маской 255.255.255.240. Cоздаем файл /etc/ethers, где про- писываем соответствие IP- MAC для всех адресов подсетей и загружаем его arp -f /etc/ethers. Далее вводим в первую подсеть машину с чужим MAC-ом, пинги на нее с роутера не проходят и она в этой подсети не работает, как и должно быть. Но при подключении ко второй или третьей подсети машины с чужим MAC-ом, пинги на нее с роутера проходят с DUP-ом и зта машина имеет доступ в сеть. Получается, что static arp работает только для первой подсети. Почему static arp не работает на остальных подсетях?

anonymous

1. Пропиши в конфигурации интерфейсов не только ип и маску, но и адрес подсети и броадкаст. 2. Если не поможет, попробуй сначала подцепить к 3-му и-фейсу, потом к 1-му. Может, не в 1-м и-фейсе дело. 3. Если не поможет, /etc/ethers в студию. 4. Смотри сниффером, что происходит. Интересно, вообще, узнать, откуда второй пинг приходит. Если настроена маршрутизация между сетями, и если броадкаст во всех трех сетях стоит 255, то вот тебе и источник dup'ов.

anonymous
()
Ответ на: комментарий от anonymous

Интерфейс eth1 поднят командой ifconfig eth1 192.168.2.1 netmask 255.255.255.240 broadcast 192.168.2.15, eth2 поднят командой ifconfig eth2 192.168.2.33 netmask 255.255.255.240 broadcast 192.168.2.47,eth3 поднят командой ifconfig eth3 192.168.2.65 netmask 255.255.255.240 broadcast 192.168.2.79. Какой такой адрес подсети должен быть указан в ifconfig-е ? Маршрутизации между сетями нет. Файл ethers : 192.168.2.4 00:0a:5e:45:09:0c 192.168.2.5 00:0a:5e:45:08:0b и тд прописаны все адреса сетей.

anonymous
()

Адрес подсети это адрес вида 10.0.0.0, т.е. самый первый IP-адрес в любой сети. Броадкаст - самый последний.

Рекомендую прописать все в файле настроек сетевых интерфейсов, а не поднимать интерфейс из командной строки. Тогда ты четко будешь представлять, какая у тебя сеть и какой адрес присваивается роутеру, более того, принадлежит вообще этот адрес указанной сети или нет.

Сеть 1: 192.168.2.0/28 Сеть 2: 192.168.2.32/28 Сеть 3: 192.168.2.64/28

После того, как пропишешь, проверь все еще раз и проверь сначала к третьей сети подцепить машину. Если не получится - лови снифером.

Spez
()
Ответ на: комментарий от Spez

Вопрос был не о том, что такое адрес подсети и броадкаст сети, Вы наверно не- внимательно читали сообщение. Интерфейсы поднимаются из файла rc.inet1, который при запуске читает rc.inet1.conf. А на счет Сеть 1: 192.168.2.0/28 Сеть 2: 192.168.2.32/28 Сеть 3: 192.168.2.64/28 это я себе четко представляю.

anonymous
()
Ответ на: комментарий от anonymous

Понятно, однако, адреса подсетей все же лучше прописать.

> Интерфейс eth1 поднят командой ifconfig ...

Насколько я знаю, команда ifconfig поднимает интерйфейс, беря аргументы из командной строки, а не из файла конфигурации. Может быть, в этом проблема?

Если все верно, то еще раз говорю, надо смотреть снифером.

Spez
()

Посмотри arp таблицу с помощью команы ip:

ip neigh show

Если окажется, что все MAC-адреса прописались для интерфейса eth0, попробуй прописывать их для требуемых интерфейсов так:

ip neigh add 192.168.25.1 lladdr 00:40:95:0A:E6:E5 nud permanent dev eth4

mky ★★★★★
()
Ответ на: комментарий от Spez

Отрывок из файла rc.inet1 # Set up ethernet card: /sbin/ifconfig eth${1} {IPADDR [$1]} broadcast $ {BROADCAST} netmask $ {NETMASK [$1]}

anonymous
()
Ответ на: комментарий от mky

Команда ip входит в состав пакета iproute2. Такого пакета нет в системе, но команда arp показывает, что MAC-адреса прописались для соотвествующих интерфейсов.

anonymous
()

Вместо arp -f /etc/ethers попробуй создать отдельные файлы для каждого интерфейса и для каждого прописать например:

arp -i интерфейсN -f /etc/ethersN

Schreibikus
()
Ответ на: комментарий от anonymous

Просмотр при помощи tcpdump-а показал, что во второй и третьей подсетях идут arp-запросы типа who-has 192.168.2.39 tell 192.168.2.38, а в первой этого не наблюдается.

anonymous
()
Ответ на: комментарий от anonymous

RE: Static ARP

Попробуй сделать жесткую привязку всех адресов в файле /etc/ethers, отключи ARP на всех интерфейсах (подними интерфейсы с параметром -arp в ifconfig), сделай скриптик типа этого:

#!/bin/sh

# обнуляем всю таблицу arp

arp -ad > null

# к каждому компу в локальной сети привязываем несуществующий (нулевой) # MAC адрес

I=1

while [ $I -le 254 ]

do

arp -s 192.168.0.${I} 0:0:0:0:0:0

I=`expr $I + 1`

done

# к реально существующему компу в сети из базы данных в файле

# /etc/ethers.local привязываем

# правильный MAC адрес

arp -f /etc/ethers

и запусти его.

Schreibikus
()
Ответ на: RE: Static ARP от Schreibikus

RE: Static ARP

Хотя я тут переборщил - если поднимешь интерфейс с параметром -arp, то клиенты не узнают mac сервера, попробуй без этого, просто скрипт.

Schreibikus
()
Ответ на: RE: Static ARP от Schreibikus

На роутере делаю : ping 192.168.2.78 . все нормально arp -s 192.168.2.78 00:00:00:00:00:00 Затем смотрим вывод arp 192.168.2.78 00:00:00:00:00:00 CM eth3 ping 192.168.2.78 . Пинги идут с DUP-ами. В мане arp есть место, где описывается файл ethers, там сказано, что могут быть использованы флаги pub,temp,netmask. Кто-нибудь может показать хотя бы одну полную строку файла ethers.

anonymous
()
Ответ на: комментарий от anonymous

При выводе arp есть поле netmask, которое имеет пустое значение. Как в команду arp добавить netmask для конкретной записи.

anonymous
()
Ответ на: комментарий от anonymous

По абсолютно непонятным причинам все заработало, при зтом никаких перезагрузок роутера и изменений сетевых интерфейсов не производилось. Вывод команды arp , что до и после не изменился. Возможно что-то было с arp-кешем.

anonymous
()
Ответ на: комментарий от anonymous

Вчера на одном из зарубежных форумов нашел подобное сообщение о неработоспособности static arp, но там зтот эффект наблюдался при количестве записей в ARP-таблицу > 800 , при меньшем связка IP+MAC работала.

anonymous
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.