LINUX.ORG.RU
ФорумAdmin

centos 7 - не работает механизм arp flux

 ,


1

1

Приветствую. попались мне 2 старые виртуалки Centos 7.7 и по дефолту у них не работает механизм arp flux ( работает по умолчанию, и который часто отключают ) - хост просто не отвечает на arp, который висит на интерфейсе tun0, хотя по дефолту должен. Включение proxy_arp для интерфейса tun0 также не решает проблему - при привязке ip-адреса к интерфейсу в arp-таблицы) - тачка на arp не отвечает

Накидайте мне вариантов куда еще можно посмотреть, а то ничего в голову не приходит.

Параметры Centos 7.7 с OpenVPN 2.6.8

адресация:

ens192 192.168.50.5/24 metric 100
default via 192.168.50.1
tun0 192.168.50.10/24 metric 1

sysctl - измененный

net.ipv4.ip_forward = 1
net.ipv4.ip_nonlocal_bind = 1
default via 192.168.50.1 dev ens192 proto static metric 100
ip route
192.168.50.0/24 dev tun0 proto kernel scope link src 192.168.50.15
192.168.50.0/24 dev ens192 proto kernel scope link src 192.168.50.5 metric 100

Что делал:

  • На тесте проблема не воспроизводиться: Сentos 7.7/7.9 в той же конфигурации - ок
  • Almalinux/свежие дистры в виртуальным интерфейсом dummy - проблема не проявляется.
  • Пробовал обновить проблемные ВМ до 7.9 (ядро 3.10.0-1160.66.1.el7.x86_64) - без результата
  • сравнение sysctl -a по секциям net.ipv4 - без изменений
  • в прочих файлах которые подставляют значения sysctl в систему изменений опций net.ipv4 нет и они не должны работать так как минимум онлайн перетираются

sysctl - сравнивал - по дефолту ens192

net.ipv4.conf.all.accept_local = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.all.arp_accept = 0
net.ipv4.conf.all.arp_announce = 0
net.ipv4.conf.all.arp_filter = 0
net.ipv4.conf.all.arp_ignore = 0
net.ipv4.conf.all.arp_notify = 0
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.all.disable_policy = 0
net.ipv4.conf.all.disable_xfrm = 0
net.ipv4.conf.all.force_igmp_version = 0
net.ipv4.conf.all.forwarding = 1
net.ipv4.conf.all.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.all.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.all.mc_forwarding = 0
net.ipv4.conf.all.medium_id = 0
net.ipv4.conf.all.promote_secondaries = 1
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.all.proxy_arp_pvlan = 0
net.ipv4.conf.all.route_localnet = 0
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.secure_redirects = 1
net.ipv4.conf.all.send_redirects = 1
net.ipv4.conf.all.shared_media = 1
net.ipv4.conf.all.src_valid_mark = 0
net.ipv4.conf.all.tag = 0
net.ipv4.conf.default.accept_local = 0
net.ipv4.conf.default.accept_redirects = 1
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.default.arp_accept = 0
net.ipv4.conf.default.arp_announce = 0
net.ipv4.conf.default.arp_filter = 0
net.ipv4.conf.default.arp_ignore = 0
net.ipv4.conf.default.arp_notify = 0
net.ipv4.conf.default.bootp_relay = 0
net.ipv4.conf.default.disable_policy = 0
net.ipv4.conf.default.disable_xfrm = 0
net.ipv4.conf.default.force_igmp_version = 0
net.ipv4.conf.default.forwarding = 1
net.ipv4.conf.default.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.default.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.default.mc_forwarding = 0
net.ipv4.conf.default.medium_id = 0
net.ipv4.conf.default.promote_secondaries = 1
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.default.proxy_arp_pvlan = 0
net.ipv4.conf.default.route_localnet = 0
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.default.secure_redirects = 1
net.ipv4.conf.default.send_redirects = 1
net.ipv4.conf.default.shared_media = 1
net.ipv4.conf.default.src_valid_mark = 0
net.ipv4.conf.default.tag = 0
net.ipv4.conf.ens192.accept_local = 0
net.ipv4.conf.ens192.accept_redirects = 1
net.ipv4.conf.ens192.accept_source_route = 0
net.ipv4.conf.ens192.arp_accept = 0
net.ipv4.conf.ens192.arp_announce = 0
net.ipv4.conf.ens192.arp_filter = 0
net.ipv4.conf.ens192.arp_ignore = 0
net.ipv4.conf.ens192.arp_notify = 0
net.ipv4.conf.ens192.bootp_relay = 0
net.ipv4.conf.ens192.disable_policy = 0
net.ipv4.conf.ens192.disable_xfrm = 0
net.ipv4.conf.ens192.force_igmp_version = 0
net.ipv4.conf.ens192.forwarding = 1
net.ipv4.conf.ens192.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.ens192.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.ens192.log_martians = 0
net.ipv4.conf.ens192.mc_forwarding = 0
net.ipv4.conf.ens192.medium_id = 0
net.ipv4.conf.ens192.promote_secondaries = 1
net.ipv4.conf.ens192.proxy_arp = 0
net.ipv4.conf.ens192.proxy_arp_pvlan = 0
net.ipv4.conf.ens192.route_localnet = 0
net.ipv4.conf.ens192.rp_filter = 1
net.ipv4.conf.ens192.secure_redirects = 1
net.ipv4.conf.ens192.send_redirects = 1
net.ipv4.conf.ens192.shared_media = 1
net.ipv4.conf.ens192.src_valid_mark = 0
net.ipv4.conf.ens192.tag = 0
net.ipv4.conf.lo.accept_local = 0
net.ipv4.conf.lo.accept_redirects = 1
net.ipv4.conf.lo.accept_source_route = 1
net.ipv4.conf.lo.arp_accept = 0
net.ipv4.conf.lo.arp_announce = 0
net.ipv4.conf.lo.arp_filter = 0
net.ipv4.conf.lo.arp_ignore = 0
net.ipv4.conf.lo.arp_notify = 0
net.ipv4.conf.lo.bootp_relay = 0
net.ipv4.conf.lo.disable_policy = 1
net.ipv4.conf.lo.disable_xfrm = 1
net.ipv4.conf.lo.force_igmp_version = 0
net.ipv4.conf.lo.forwarding = 1
net.ipv4.conf.lo.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.lo.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.lo.log_martians = 0
net.ipv4.conf.lo.mc_forwarding = 0
net.ipv4.conf.lo.medium_id = 0
net.ipv4.conf.lo.promote_secondaries = 0
net.ipv4.conf.lo.proxy_arp = 0
net.ipv4.conf.lo.proxy_arp_pvlan = 0
net.ipv4.conf.lo.route_localnet = 0
net.ipv4.conf.lo.rp_filter = 0
net.ipv4.conf.lo.secure_redirects = 1
net.ipv4.conf.lo.send_redirects = 1
net.ipv4.conf.lo.shared_media = 1
net.ipv4.conf.lo.src_valid_mark = 0
net.ipv4.conf.lo.tag = 0
net.ipv4.conf.tun0.accept_local = 0
net.ipv4.conf.tun0.accept_redirects = 1
net.ipv4.conf.tun0.accept_source_route = 0
net.ipv4.conf.tun0.arp_accept = 0
net.ipv4.conf.tun0.arp_announce = 0
net.ipv4.conf.tun0.arp_filter = 0
net.ipv4.conf.tun0.arp_ignore = 0
net.ipv4.conf.tun0.arp_notify = 0
net.ipv4.conf.tun0.bootp_relay = 0
net.ipv4.conf.tun0.disable_policy = 0
net.ipv4.conf.tun0.disable_xfrm = 0
net.ipv4.conf.tun0.force_igmp_version = 0
net.ipv4.conf.tun0.forwarding = 1
net.ipv4.conf.tun0.igmpv2_unsolicited_report_interval = 10000
net.ipv4.conf.tun0.igmpv3_unsolicited_report_interval = 1000
net.ipv4.conf.tun0.log_martians = 0
net.ipv4.conf.tun0.mc_forwarding = 0
net.ipv4.conf.tun0.medium_id = 0
net.ipv4.conf.tun0.promote_secondaries = 1
net.ipv4.conf.tun0.proxy_arp = 0
net.ipv4.conf.tun0.proxy_arp_pvlan = 0
net.ipv4.conf.tun0.route_localnet = 0
net.ipv4.conf.tun0.rp_filter = 1
net.ipv4.conf.tun0.secure_redirects = 1
net.ipv4.conf.tun0.send_redirects = 1
net.ipv4.conf.tun0.shared_media = 1
net.ipv4.conf.tun0.src_valid_mark = 0
net.ipv4.conf.tun0.tag = 0



Последнее исправление: raikkonen (всего исправлений: 6)

Зачем тебе arp на tun? Ты же в курсе, что TUN интерфейс не умеет форвардить L2 трафик?
Так же спешу заметить, что у 99.9%, что у тебя на tunX интефейсе стоит NOARP флаг в выводе ip addr – он там не просто так.

PS: судя по адресации ты делаешь что-то странное.

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

А) proxy_arp для tun: теперь знаю («no arp» - там и есть), я просто проводил тесты с dummy интерфейсом - на другой виртуалке + перекидывал параметры sysctl на нее - смотрел поведение.

Б) функционал заключается в следующем

с опциями sysctl [code] net.ipv4.ip_forward = 1 net.ipv4.ip_nonlocal_bind = 1 [/code]

на интерфейс ens192 я вешаю arp-запись любого адреса из сети 192.168.50.0/24, в результате на arp отсылается mac-адрес интерфейса ens192. Входящий трафик на данный ip-адрес c интерфейса ens192 перенаправляется на интерфейс tun0 Эта схема рабочая так как не приходиться прописывать на маршрутизаторах статичные маршруты + можно разместить в одном L3-домене несколько виртуалок с одной топологией.

скрипт - можно запускать руками, можно привязывать в openvpn к действию при подключении клиента

[code] #!/bin/bash

sudo /usr/sbin/arp -i ens192 -Ds $ifconfig_pool_remote_ip ens192 pub [/code]

raikkonen
() автор топика
Последнее исправление: raikkonen (всего исправлений: 1)

пока тема такая: NetworkManager с service network входят в конфликт т.к после манипуляций с ними

systemctl disable NetworkManager & reboot systemctl enable NetworkManager & reboot  
  • rm почистил конфиг /etc/sysconfig/network - там были настройки некорректного gateway, хотя корректный был прописан в ifcfg-ens192). Но скорее всего буду перевыкатывать виртуалки.
raikkonen
() автор топика
Последнее исправление: raikkonen (всего исправлений: 1)