LINUX.ORG.RU
решено ФорумAdmin

Отсутствие nf_conntrack_proto_gre.ko в Ubuntu 20.04

 , ,


0

1

Столкнулся с такой проблемой, после апгрейда 16.04 LTS до 20.04 LTS.

Есть сотрудники, которые из локалки подключаются по IPSEC поверх L2TP к стороннему внешнему серверу из винды. В качестве шлюза стоит Ubuntu 20.04 LTS. До апгрейда на шлюзе стояла 16.04 LTS, был загружен модуль nf_conntrack_proto_gre.ko, который превосходно обрабатывал эти подключения из за NAT. После перехода на 20.04 LTS - модуль nf_conntrack_proto_gre.ko отсутствует в ядре 5.4.0-53-generiс, подключение по IPSEC поверх L2TP к стороннему внешнему серверу не работает. Я пытался скомпилировать nf_conntrack_proto_gre.ko из исходников, модуль успешно компилируется, но не загружается с ошибкой:

insmod: ERROR: could not insert module nf_conntrack_proto_gre.ko: Unknown symbol in module

в DMESG - следующее:

[Вс ноя 22 13:23:08 2020] nf_conntrack_proto_gre: Unknown symbol nf_ct_port_nlattr_tuple_size (err -2) [Вс ноя 22 13:23:08 2020] nf_conntrack_proto_gre: Unknown symbol nf_ct_port_nla_policy (err -2) [Вс ноя 22 13:23:08 2020] nf_conntrack_proto_gre: Unknown symbol nf_ct_port_tuple_to_nlattr (err -2) [Вс ноя 22 13:23:08 2020] nf_conntrack_proto_gre: Unknown symbol nf_ct_port_nlattr_to_tuple (err -2) [Вс ноя 22 13:23:08 2020] nf_conntrack_proto_gre: Unknown symbol kfree_call_rcu (err -2) [Вс ноя 22 13:23:08 2020] nf_conntrack_proto_gre: Unknown symbol __nf_ct_refresh_acct (err -2)

при этом, например, nf_conntrack_tftp.ko компилируется и загружается успешно.

Помогите советом, как грамотно компилировать модуль, либо найти ядро с работающим модулем. Не остается выхода, кроме как откатиться на 18.04 - там nf_conntrack_tftp.ko еще есть в системе



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

проверяй версию ядра и установленных модулей - они у тебя не совпадают

Начни с обновления системы до упора, потом показывай uname -a и modinfo nf_conntrack_proto_gre

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

обновил.

uname -a:

5.4.0-53-generic #59-Ubuntu SMP Wed Oct 21 09:38:44 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

modinfo nf_conntrack_proto_gre:

filename: /install/gre/nf_conntrack_proto_gre.ko srcversion: C2223EF76BCA86BC3C71B27 depends: nf_conntrack retpoline: Y name: nf_conntrack_proto_gre vermagic: 5.4.0-53-generic SMP mod_unload

kos96
() автор топика
Ответ на: комментарий от stels

все, что есть.

/lib/modules/5.4.0-53-generic/kernel/net/ipv4/gre.ko /lib/modules/5.4.0-53-generic/kernel/net/ipv4/ip_gre.ko /lib/modules/5.4.0-53-generic/kernel/net/ipv6/ip6_gre.ko /lib/modules/5.4.0-53-generic/kernel/net/openvswitch/vport-gre.ko

kos96
() автор топика
Ответ на: все, что есть. от kos96

Как загружаешь модуль? через insmod или через modprobe?

Так, стоп. Модуля нет в стандартной поставке? Что вообще есть из nf_conntrack? Что в конфигурации ядра(в /boot/config-*) сказано на этот счет?

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 2)
Ответ на: комментарий от Pinkbyte

в стандартной есть только:

/usr/src/linux-headers-5.4.0-53/include/linux/netfilter/nf_conntrack_proto_gre.h

в конфиге:

cat /boot/config-5.4.0-53-generic | grep PROTO_GRE CONFIG_NF_CT_PROTO_GRE=y

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

Так модуль вкомпилирован прямо в ядро у тебя. Ничего грузить не надо.

Показывай файрвол, может у тебя helper-ы в цепочке raw/PREROUTING не привязаны?

И да, я еще раз перечитал содержимое темы. Ты точно правильно определил проблему? Каким боком вообще у тебя GRE относится к IPSEC и L2TP? GRE может относится к PPTP, это да, но в L2TP другая инкапсуляция и GRE там не используется.

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)

При компиляции make ругался на лицензию:

WARNING: modpost: missing MODULE_LICENSE() in /install/gre/nf_conntrack_proto_gre.o

добавил в исходник - MODULE_LICENSE(«GPL»);

сделал make clean / make all

размер модуля вырос, но теперь insmod nf_conntrack_proto_gre.ko говорит: insmod: ERROR: could not insert module nf_conntrack_proto_gre.ko: Invalid module format

в DMESG теперь:

nf_conntrack_proto_gre: exports duplicate symbol nf_ct_gre_keymap_add (owned by nf_conntrack)

kos96
() автор топика
Ответ на: комментарий от Pinkbyte

Да, может и неверно выразился… В обмене участвуют порты UDP 500,4500 и TCP 1701. Это IPSEC поверх L2TP

В фаерволе всего одна строка - полный NAT на сервер с L2TP:

$IPT -t nat -A POSTROUTING -s $LOCNET -d X.X.X.X/32 -j SNAT –to $EXTADDR

До апгрейда с 16 до 20 LTS все работало.

в 16.04 были дополнительно загружены модули:

ip_nat_pptp ip_conntrack_pptp

в 20.04 они так же загружены, но соединение не устанавливается. Я вижу с внешнего VPN сервера X.X.X.X исходящие пакеты ко мне, с порта 1701, но до Y.Y.Y.Y они не долетают. Соответсвенно, conntrack не понимает, что это за протокол.

В качестве эксперимента, открывал полный DNAT с внешнего X.X.X.X сервера на комп пользователя, и VPN поднимался:

#$IPT -t nat -A PREROUTING -s X.X.X.X -d $EXTADDR -j DNAT –to-destination Y.Y.Y.Y

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

conntrack_gre и conntrack_pptp на озвученную тобой проблему НИКАК не могут повлиять.

Показывай ВЕСЬ конфиг ядра(на pastebin, ибо там простыня) и ВЕСЬ файрвол

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

В общем, это оказался простой PPTP… TCP 1723 порт. Сотрудники меня изначально запутали…

Поменял в винде тип ВПН на PPTP, соединение устанавливается, проходит проверка PPTP логина и пароля, затем висит, и не может соединиться. Винда умничает про отсутствие поддержки GRE у роутера. В tcpdump на внещнем интерфейсе следующее:

15:34:29.727220 IP VPN_SRV > LINUX_GW: GREv1, call 31734, seq 6, ack 3, length 41: LCP, Conf-Ack (0x02), id 3, length 23 15:34:29.727290 IP LINUX_GW > VPN_SRV: ICMP LINUX_GW protocol 47 unreachable, length 69 15:34:29.847848 IP VPN_SRV > LINUX_GW: GREv1, call 31734, seq 7, length 69: LCP, Conf-Request (0x01), id 3, length 55 15:34:29.847918 IP LINUX_GW > VPN_SRV: ICMP LINUX_GW protocol 47 unreachable, length 97

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

Это временное решение, данную опцию могут выпилить в любой момент. Правильно - добавить правило в файрвол в таблицу raw, например так:

iptables -t raw -A PREROUTING -p tcp --dport 1723 -j CT --helper pptp

Заодно туда же добавить аналогичные правила для tftp и sip-трафика

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

Спасибо за помощь! Переделаю firewall

kos96
() автор топика
Ответ на: комментарий от Pinkbyte

О, спасибо, что-то пропустил такое.

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