Вопрос или проблема
У меня есть ситуация, очень похожая на эту, где пакеты отбрасываются после поступления на интерфейс tun0. Я подтвердил с помощью pwru
, что fib_validate_source
появляется перед тем, как пакет отбрасывается.
лог, когда пакет отбрасывается (отправлено с 172.18.0.4):
0xffff9da411342600 6 ~bin/ssh:1160736 4026531840 0 tun0:92 0x0800 1500 172 172.18.0.4:56050->172.19.0.2:23000(udp) fib_validate_source
0xffff9da411342600 6 ~bin/ssh:1160736 4026531840 0 tun0:92 0x0800 1500 172 172.18.0.4:56050->172.19.0.2:23000(udp) __fib_validate_source
0xffff9da411342600 6 ~bin/ssh:1160736 4026531840 0 tun0:92 0x0800 1500 172 172.18.0.4:56050->172.19.0.2:23000(udp) kfree_skb_reason(SKB_DROP_REASON_NOT_SPECIFIED)
Когда не отбрасывается (отправлено с 172.18.0.2), это:
0xffff9da255b84400 8 ~bin/ssh:1160736 4026531840 0 tun0:92 0x0800 1500 76 172.18.0.2:46311->172.19.0.2:23000(udp) fib_validate_source
0xffff9da255b84400 8 ~bin/ssh:1160736 4026531840 0 tun0:92 0x0800 1500 76 172.18.0.2:46311->172.19.0.2:23000(udp) __fib_validate_source
0xffff9da255b84400 8 ~bin/ssh:1160736 4026531840 0 tun0:92 0x0800 1500 76 172.18.0.2:46311->172.19.0.2:23000(udp) ip_forward
Есть ли способ отключить проверку источника? Решение, предложенное в вопросе, который я привел, заключается в том, чтобы изменить IP-адрес источника этих пакетов; это не то, что я контролирую.
Я попробовал сделать sudo sysctl -w net.ipv4.<interface>.all.rp_filter=0
для каждого из:
- входящий интерфейс
tun0
- ожидаемый исходящий интерфейс
bm
all
default
Но я все равно вижу те же результаты от pwru
.
Ответ или решение
Чтобы разобраться с вашей проблемой, важно сначала понять, что fib_validate_source
является частью обработки IP-пакетов в ядре Linux и предназначен для проверки валидности источника пакета. Когда пакеты отбрасываются, это может указывать на проблему с маршрутизацией или фильтрацией обратного пути (RP filtering).
Определение проблемы
Согласно вашему описанию, вы видите, что пакеты, приходящие на интерфейс tun0
, отбрасываются после попадания на fib_validate_source
, но только для определенных IP-адресов отправителя. Это свидетельствует о том, что валидация источника считается неуспешной для некоторых пакетов.
Возможные решения
-
Проверка RP фильтрации:
Вы уже попробовали изменить параметры RP фильтрации черезsysctl
, что является правильным первым шагом. Убедитесь, что вы правильно применили эти изменения и перезагрузили сеть или весь сервер, если это необходимо. Параметры конфигурации могут включать:sudo sysctl -w net.ipv4.conf.all.rp_filter=0 sudo sysctl -w net.ipv4.conf.default.rp_filter=0 sudo sysctl -w net.ipv4.conf.tun0.rp_filter=0 sudo sysctl -w net.ipv4.conf.<имя_исходящего_интерфейса>.rp_filter=0
-
Просмотр таблиц маршрутизации:
Убедитесь, что таблицы маршрутизации правильно настроены для принятия и отправки пакетов между соответствующими интерфейсами. Для этого используйте команды:ip route show
Убедитесь, что существует корректный маршрут для IP-адресов отправителей и получателей.
-
Конфигурация Netfilter/iptables:
Проверьте наличие правил iptables/netfilter, которые могут блокировать или перенаправлять трафик.sudo iptables -L -v -n
Если какие-либо правила блокируют нужный трафик, внесите необходимые корректировки.
Подведение итогов
Если проблема сохраняется даже после вышеуказанных действий, возможно, стоит рассмотреть обновление конфигурации VPN-сервера или обратитесь за помощью к специалистам по сетевой безопасности. Проблемы с fib_validate_source
часто возникают из-за неправильной маршрутизации или некорректных сетевых политик.
Заключение
Устранение неполадок, связанных с таких аспектами, как отбрасывание пакетов на уровне FIB (Forwarding Information Base), требует тщательного анализа сетевой конфигурации и, возможно, пересмотра политики безопасности. Если изменение параметров RP фильтрации не решает вашу проблему, это может указывать на более глубинные настройки маршрутизации, которые нуждаются в ревизии.