Назад | Перейти на главную страницу

2 сетевых адаптера 2 IPS в одной подсети

Я устанавливаю коробку SUSE 11 с двумя сетевыми адаптерами:

eth0 - 192.168.10.150/24 - 00.0C.29.DC.10.CA (MAC)
eth1 - 192.168.10.151/24 - 00.0C.29.DC.10.DE (MAC)

Мне нужны оба в одной подсети, поскольку они будут подключены к другому устройству (хранилищу) точка-точка. Но я кое-что нашел во время установки; выполняя ARP с рабочей станции, я обнаружил следующее поведение

[root@workstation ~]# arp -n
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.10.151           ether   00:0C:29:DC:10:CA   C                     eth0
192.168.10.150           ether   00:0C:29:DC:10:CA   C                     eth0

как вы видите это похоже на eth0 получает все запросы. Фактически, если я отключу кабель от eth1 IP .151 будет по-прежнему доступен для проверки связи; чего я не хочу. И если я отключу кабель от eth0 ни один из IP .150 - .151 пингуются, когда .151 все еще должен быть доступен.

Почему это происходит? я нуждаюсь eth0 привязать только к .150 и eth1 привязать только к .151. Похоже, что IP-адреса принадлежат eth0.

Это не работает:

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

это тоже

net.ipv4.conf.default.arp_filter=1
net.ipv4.conf.all.arp_filter=1

Какие-либо предложения?

Я согласен с ответом womble, но отвечу прямо на ваш вопрос.

Первый
Вы упомянули 2 настройки, которые вам нужны.

net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.all.arp_announce=2

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

arping -U -c 2 -I eth0 192.168.10.150
arping -U -c 2 -I eth1 192.168.10.151

Это отправит широковещательную рассылку ARP для каждого IP-адреса, обновляющего кеш любых соседей.

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

ip route add 192.168.10.0/24 dev eth1 src 192.168.10.151 table 151
ip rule add from 192.168.10.151/32 lookup table 151 prio 10000
ip route del 192.168.10.0/24 dev eth1 src 192.168.10.151 table main

Первая строка создает новое правило маршрутизации для маршрутизации трафика через правильный интерфейс для 192.168.10.151. Вторая строка сообщает ядру использовать это правило маршрутизации, если исходный IP-адрес 192.168.10.151 (этот поиск происходит перед 'основной' таблицей из-за нашего prioритуальность, которую мы ему присвоили). Третья строка удаляет старое правило из «основной» таблицы маршрутизации, поэтому трафик, идущий через другой интерфейс, не использует его случайно.

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

Третий
вещи должен работать без этого, но вы также можете добавить в sysctl следующее:

net.ipv4.conf.eth0.rp_filter=0
net.ipv4.conf.eth1.rp_filter=0

Это не позволит ядру отбрасывать любой трафик, поступающий в неправильный интерфейс.
(ОБНОВЛЕНИЕ: обратите внимание, что это rp_filterне arp_filter. Я думаю, это настройка, которую вы хотели сказать, что уже пробовали)

«Мне нужны оба в одной подсети, поскольку они будут подключены к другому устройству (хранилищу) точка-точка».

Ваше объяснение не имеет смысла. Если они оба находятся в одной подсети, то по определению это не может быть двухточечная связь. Если у вас есть одна и та же IP-подсеть, настроенная на двух разных широковещательных доменах ... ну, вы облажались. Исправьте это, и все ваши проблемы исчезнут.