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

Целевой хост не принимает UDP, если нет маршрута к источнику

У меня есть три хоста со следующей конфигурацией:

Host A: IP:192.168.1.1/24
Host B: IP:192.168.1.2/24
Host C: IP:192.168.3.1/24

Все происходит в CentOS 6, и все интерфейсы имеют теги VLAN (если здесь это имеет значение).

Я отправляю UDP-трафик по направлениям B->A и C->A. Это чистый однонаправленный трафик, поэтому не настроен любая маршрутизация на хосте A

Зачем C->A трафик не принимается на А сторона, если не направляется на C настроен на А. (это видно на уровне tcpdump, но не получено сокетом)

Я трачу много времени на устранение неполадок. Я ожидал множество причин: настройки iptables, selinux и даже rp_filter, но решение оказалось таким простым.

Я хотел бы услышать, в чем причина такого поведения, и есть ли конфигурация, отвечающая за необходимость наличия маршрута источника в случае UDP.

Вы, вероятно, ограничены фильтром uRPF Linux, который предназначен для предотвращения спуфинга пакетов, но нарушает настройки асимметричной маршрутизации. Отключите это с помощью

sysctl net.ipv4.conf.all.rp_filter=0
sysctl net.ipv4.conf.eth0.rp_filter=0

(Да, вам нужно отключить как all запись и конкретная для интерфейса.)