pppoetest Опубликовано 10 мая, 2021 · Жалоба 2 часа назад, hiller сказал: Вот решение проблемки со сборкой, которую я описывал чуть выше там есть пулреквест с 2мя коммитами https://github.com/andrsharaev/xt_NAT/pull/2/commits Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 8 июня, 2021 · Жалоба В 12.01.2021 в 22:57, pppoetest сказал: Я немножко переписал, и стала совместима, но пришлось пожертвовать стоповым эвентом. xt_NAT.c Если вдруг кому нужно, вернул стоповый эвент и добавил для всяких сормов требуемые поля в экспорт xt_NAT.c Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ne-vlezay80 Опубликовано 8 июня, 2021 · Жалоба А как эту штуку использовать в netns? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ShumBor Опубликовано 9 июня, 2021 · Жалоба @pppoetest Надо будет попробовать. Так то без отправки на сорм пашет успешно, но наш сорм хочет нетфлоу 9 версии( Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 9 июня, 2021 · Жалоба Вот в9, тренируйся на кошках, сырое. xt_NAT.h xt_NAT.c Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hRUst Опубликовано 18 ноября, 2021 (изменено) · Жалоба для ядер 5.10 xt_NAT.h в git тоже не умею Обновил xt_NAT.c с ktime_get_raw_ts64 xt_NAT.c Изменено 28 января, 2022 пользователем hRUst Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hRUst Опубликовано 12 января, 2022 · Жалоба Проблема: тестовый сервер, один клиент, ноутбук. Перестает натить, на наружном интерфейсе выходят пакеты с внутренним IP, как будто таймер какой протухает и все перестает работать. Если обновить страничку, или перезапустить пинг, опять натит. Когда не натит, в cat /proc/net/NAT/users пусто. Пример: на клиенте ping dns.server -t, на наружном интерфейсе сервера вижу запросы с внутреннего IP, передергиваю патч у клиента и пинг пошел, на наружном интерфейсе пакеты с nat пула. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 13 января, 2022 · Жалоба Юзаешь модуль со своими правками? Если так, то присмотрись к xt_NAT.c, строки 132-133,138-139. Ты убрал getrawmonotonic но не добавил getrawmonotonic64. Возможно причина где-то тут? Хмм, похоже оно давно было депрекейтед, а теперь вообще недоступно. Если не ошибаюсь, использовать ktime_get_raw_ts64 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hRUst Опубликовано 28 января, 2022 (изменено) · Жалоба Да, который чуть выше выложил. этот NAS уже в проде на обычном iptables NAT. Скоро тестовый соберу, буду пробовать дальше. Скомпилировал нормально, обновил пост выше. Изменено 28 января, 2022 пользователем hRUst Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 28 января, 2022 · Жалоба В 28.01.2022 в 09:46, hRUst сказал: Скоро тестовый соберу, буду пробовать дальше. Скомпилировал нормально, обновил пост выше Я запустил в прод на 5.10 с ktime_get_raw_ts64 полторы недели назад, пока жалоб нет. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ingvarrwvw Опубликовано 4 июня, 2023 · Жалоба @pppoetest добрый день! А не могли бы вы выложить версию ,которая собирается на 5.10 ? С патчами из гитхаба не хочет собираться ( Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 5 июня, 2023 · Жалоба У меня только с правками под нетфло в9 nat.zip Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
ingvarrwvw Опубликовано 5 июня, 2023 · Жалоба @pppoetest Спасибо! Он у вас в проде стоит? Попробовал сейчас через него посерфить - часть сайтов еле открывается, скорость до своего же спидтеста упала с 500 до 1мбит. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 5 июня, 2023 · Жалоба Стоит, уже больше года. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
stalker86 Опубликовано 2 августа, 2023 · Жалоба All у кого есть эти патчи в живом виде дайте пожалуйста..а то линки битые Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 4 августа, 2023 · Жалоба https://github.com/gonarh/xt_NAT_with_netflow_v9 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pesvo Опубликовано 11 августа, 2023 · Жалоба @pppoetest Приветствую, собрал xt_NAT с ссылки гита которую Вы кинули с поддержкой netflow 9 на debian 11.7.0 ядро 5.10.0-22-amd64. Вроде натит нормально клиентов, в proc/net/nat есть данные статистика, сессии, юзеры, но когда хочу отправить потоки netflow на коллектор за счет netflow 9 вводя команду которая указана на гите "пул адресов нат , адрес коллектора и порт 2055" , но на коллектор ничего не прилетает , там запущен nfcapd с прослушиванием 2055 порта и по tcpdump тоже нет пакетов каких либо на этот порт от сервера где запущен xt_nat. Как понимаю у вас xt_nat долго стоит в проде и все прекрасно работает с netflow9 , подскажите в чем может быть дело, может надо какие то доп модули подзагрузить чтобы netflow 9 заработал на xt_nat? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vurd Опубликовано 12 августа, 2023 · Жалоба Покажите что передаете модулую в опциях и что в дмесг после его загрузки Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 13 августа, 2023 · Жалоба В 11.08.2023 в 20:10, pesvo сказал: подскажите в чем может быть дело Выгрузить модуль и загрузить заново со всеми параметрами. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Juliett78 Опубликовано 14 августа, 2023 · Жалоба The suggestion indicates that if certain modules are uninteresting, one can experiment by crafting a test rule using raw data and a specific packet selector to determine their presence. If the packets are captured, delving into iptables is advised; if not, exploring tcpdump and ingress filters might be more fruitful. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pesvo Опубликовано 14 августа, 2023 · Жалоба В 12.08.2023 в 13:41, vurd сказал: Покажите что передаете модулую в опциях и что в дмесг после его загрузки modprobe xt_NAT nat_pool=xx.xx.xx.xx-xx.xx.xx.xx modprobe xt_NAT nat_pool=xx.xx.xx.xx-xx.xx.xx.xx nf_dest=127.0.0.1:2055 dmesg | grep xt_NAT [ 50.684198] xt_NAT: loading out-of-tree module taints kernel. [ 50.684310] xt_NAT: module verification failed: signature and/or required key missing - tainting kernel [ 50.685711] Module xt_NAT loaded [ 50.685718] xt_NAT DEBUG: IP Pool from xx.xx.xx.xx to xx.xx.xx.xx [ 50.685721] xt_NAT DEBUG: nat pool table mem: 4 [ 50.685723] xt_NAT DEBUG: NAT hash size: 262144 [ 50.685726] xt_NAT DEBUG: Users hash size: 65536 [ 50.687613] xt_NAT DEBUG: sessions htable inner mem: 4194304 [ 50.689106] xt_NAT DEBUG: sessions htable outer mem: 4194304 [ 50.689191] xt_NAT DEBUG: users htable mem: 1048576 [ 50.689192] xt_NAT DEBUG: nat pool table mem: 4 cat /proc/net/NAT/users 192.168.0.10 -> xx.xx.xx.xx (tcp: 21, udp: 51, other: 0) Total users: 1 cat /proc/net/NAT/statistics Active NAT sessions: 73 Tried NAT sessions: 384 Created NAT sessions: 384 DNAT dropped pkts: 337 Fragmented pkts: 0 Related ICMP pkts: 0 Active Users: 1 Модуль выгружал - загружал с опциями этими, сам сервер перезагружал. для теста отправлял и на Lo адрес тоже ничего не прилетает на nfcapd и в tcpdump ничего нет и на удаленный хост если указать в nf_dest соответственно тоже ничего не прилетает, порты тоже менял вместо дефолта 2055. Может я где-то мог допустить ошибку при настройке/установке модуля(модуль тоже переустанавливал), так как пока пробую переехать с freebsd ipfw nat на debian и провожу тесты, а с debian, к сожалению, пока особо не работал, но вроде все делал по инструкции с гита. Может в iptables надо что-то добавить для передачи по порту 2055? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vurd Опубликовано 14 августа, 2023 · Жалоба По коду модуля при загрузке его и включенном netflow вы должны видеть вот это printk(KERN_INFO "xt_NAT NEL: add destination %s\n", print_sockaddr(&usock->addr)); В вашем логе dmesg я этого не вижу. По какой-то причине в модуль не переданы параметры. Сделайте явно modprobe -r xt_NAT modprobe xt_NAT блаблабла И смотрим в дмесг снова. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pesvo Опубликовано 14 августа, 2023 · Жалоба 53 минуты назад, vurd сказал: По коду модуля при загрузке его и включенном netflow вы должны видеть вот это printk(KERN_INFO "xt_NAT NEL: add destination %s\n", print_sockaddr(&usock->addr)); В вашем логе dmesg я этого не вижу. По какой-то причине в модуль не переданы параметры. Сделайте явно modprobe -r xt_NAT modprobe xt_NAT блаблабла И смотрим в дмесг снова. Нашёл свой косяк... Я думал, что надо вместе modprobe xt_NAT nat_pool=<Start IP>-<End IP> и затем modprobe xt_NAT nat_pool=<Start IP>-<End IP> nf_dest=127.0.0.1:2055 но по факту надо было просто прописать одной командой xt_NAT nat_pool=<Start IP>-<End IP> nf_dest=127.0.0.1:2055 и все. Но смущает один момент, я начал получать потоки в nfcapd на удаленном сервере nfcapd -E -T all -p 2055 -l /nfcap-test при чтение через nfdump nfdump -R nfcapd.202308141352 вижу странный вывод, что во-первых, время не корректное, хотя на обоих сервера время правильное и вкл. ntp, и что в столбце X-Dst IP Addr:Port 0.0.0.0:0 Версия nfdump nfdump -V nfdump: Version: NSEL-NEL1.6.18 nfdump -R nfcapd.202308141352 Date first seen Event XEvent Proto Src IP Addr:Port Dst IP Addr:Port X-Src IP Addr:Port X-Dst IP Addr:Port In Byte Out Byte 1970-01-01 03:00:00.000 DELETE Ignore TCP 192.168.55.55:5309 -> 64.233.165.138:443 xx.xx.xx.xx:5309 -> 0.0.0.0:0 0 0 1970-01-01 03:00:00.000 DELETE Ignore TCP 192.168.55.55:5307 -> 142.250.150.198:443 xx.xx.xx.xx:5307 -> 0.0.0.0:0 0 0 1970-01-01 03:00:00.000 CREATE Ignore UDP 192.168.55.55:54248 -> 64.233.165.104:443 xx.xx.xx.xx:54248 -> 0.0.0.0:0 0 0 1970-01-01 03:00:00.000 CREATE Ignore UDP 192.168.55.55:59572 -> 108.177.14.198:443 xx.xx.xx.xx:59572 -> 0.0.0.0:0 0 0 В сам nfcapd прилетает Flow Record: Flags = 0x46 EVENT, Unsampled label = <none> export sysid = 1 size = 96 first = 0 [1970-01-01 03:00:00] last = 0 [1970-01-01 03:00:00] msec_first = 0 msec_last = 0 src addr = 192.168.55.55 dst addr = 108.177.14.198 src port = 59572 dst port = 443 fwd status = 0 tcp flags = 0x00 ........ proto = 17 UDP (src)tos = 0 (in)packets = 0 (in)bytes = 0 ip router = xx.xx.xx.xx engine type = 0 engine ID = 0 received at = 1692010373229 [2023-08-14 13:52:53.229] src xlt port = 59572 dst xlt port = 0 src xlt ip = xx.xx.xx.xx dst xlt ip = 0.0.0.0 nat event = 1: ADD ingress VRF = 0 egress VRF = 0 Покопался на форме в разделе ipt_netflow у людей это было на старой версии nfdump, но тут у меня новая версия nfdump. Подскажите у тех кто использует этот модуль при отправке netflow 9 дата и время корректное и есть ли адреса в столбце X-Src IP Addr:Port? Спасибо. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pesvo Опубликовано 14 августа, 2023 · Жалоба С гита nfdump поставил версию последнюю nfdump-1.7.2 вместо 1.6.18 nfdump -V nfdump: Version: 1.7.2-696f563 Options: NSEL-NEL Date: 2023-08-12 13:54:54 +0200 запустил и все равно одно и тоже 1970-01-01 03:00:00.000 время и 0 на X-Src IP Addr:Port в nfcapd показывает nfcapd -E -p 2055 -w /tmp/nfcap-test/ Verbose log level: 3 Add flow source: ident: none, IP: any IP, flowdir: /tmp/nfcap-test Bound to IPv4 host/IP: any, Port: 2055 Init v1 Init v5/v7: Default sampling: 1 Init v9: Max number of v9 tags enabled: 105, default sampling: 1 Init IPFIX: Max number of ipfix tags enabled: 91, default sampling: 1 Startup nfcapd. Process_v9: New v9 exporter: SysID: 1, Domain: 0, IP: xx.xx.xx.xx Flow Record: Flags = 0x01 EVENT, Unsampled Elements = 6: 1 2 12 20 22 25 size = 124 engine type = 0 engine ID = 0 export sysid = 1 first = 0 [<unknown>.000] last = 0 [<unknown>.000] received at = 1692020263687 [2023-08-14 16:37:43.687] proto = 1 ICMP tcp flags = 0x00 ........ ICMP = 3.238 type.code in packets = 0 in bytes = 0 src addr = 192.168.55.10 dst addr = 151.101.2.167 ip exporter = xx.xx.xx.xx снова поля first/last пустые , поэтому передает значения 1970-01-01 03:00:00.000 как в версии nfdump 1.6.18, но сути это не меняет. Снял дамп через tcpdump и посмотрел в wireshark что прилетает от nat сервера на этот порт 2055 по netflow v9 User Datagram Protocol, Src Port: 59337, Dst Port: 2055 Source Port: 59337 Destination Port: 2055 Length: 92 Checksum: 0x7b88 [unverified] [Checksum Status: Unverified] [Stream index: 0] [Timestamps] UDP payload (84 bytes) Cisco NetFlow/IPFIX Version: 9 Count: 2 SysUptime: 8155.520000000 seconds Timestamp: Aug 14, 2023 16:28:36.000000000 RTZ 2 (зима) CurrentSecs: 1692019716 FlowSequence: 54 SourceId: 0 FlowSet 1 [id=0] (Data Template): 300 FlowSet Id: Data Template (V9) (0) FlowSet Length: 40 Template (Id = 300, Count = 8) Template Id: 300 Field Count: 8 Field (1/8): PROTOCOL Field (2/8): L4_SRC_PORT Field (3/8): IP_SRC_ADDR Field (4/8): L4_DST_PORT Field (5/8): IP_DST_ADDR Field (6/8): postNATSourceIPv4Address Field (7/8): postNAPTSourceTransportPort Field (8/8): natEvent FlowSet 2 [id=300] (1 flows) FlowSet Id: (Data) (300) FlowSet Length: 24 [Template Frame: 1] Flow 1 Protocol: ICMP (1) SrcPort: 1001 SrcAddr: 192.168.55.10 DstPort: 1001 DstAddr: 151.101.2.167 Post NAT Source IPv4 Address: xx.xx.xx.xx Post NAPT Source Transport Port: 2025 Nat Event: NAT translation delete (Historic) (2) Немного не пойму вывод в pcap в wireshark, но вроде он передает нужные шаблоны Идеи пока закончились куда копать.. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 14 августа, 2023 · Жалоба В 14.08.2023 в 19:46, pesvo сказал: Идеи пока закончились куда копать.. Простейший коллектор, которым я проверял нетфло #!/usr/bin/perl -w use strict; use IO::Socket; #NetFlow port my $port = 2055; #Consts use constant _MAXREAD => 8192; my %v9 = ( #Offset Size _PROTO => [0, 1], _SRC_PORT => [1, 2], _SRC_IP => [2, 4], _DST_PORT => [3, 2], _DST_IP => [4, 4], _NAT_IP => [5, 4], _NAT_PORT => [6, 2], _NAT_EVENT => [7, 1] ); # main datagram receive loop my $_FLOWRECV9_LEN = 0; my ($datagram, $version, $count, $i, $data, $sys_uptime, $unix_secs); my (@flow, @rawdata); my $socket_opened; foreach (keys(%v9)) { $_FLOWRECV9_LEN += ${$v9{$_}}[1]; } while(1){ $socket_opened = 1; my $sock = IO::Socket::INET->new(LocalPort => $port, Proto => 'udp') or $socket_opened = 0; if ($socket_opened == 0) { select(undef, undef, undef, 5); next; } while ($sock->recv($datagram, _MAXREAD)) { ($version, $count, $sys_uptime, $unix_secs) = unpack("nnNN", $datagram); next if ($version ne 9); $count--; substr $datagram, 0, 64, ''; for ($i = 0; $i < $count; $i++) { @flow = unpack("cnNnNNnc", substr($datagram, $i * $_FLOWRECV9_LEN, $_FLOWRECV9_LEN)); my $src_addr = join '.', unpack 'C4', pack 'N', $flow[${$v9{_SRC_IP}}[0]]; my $dst_addr = join '.', unpack 'C4', pack 'N', $flow[${$v9{_DST_IP}}[0]]; my $nat_addr = join '.', unpack 'C4', pack 'N', $flow[${$v9{_NAT_IP}}[0]]; print "ts: $unix_secs, proto: $flow[${$v9{_PROTO}}[0]], src $src_addr:$flow[${$v9{_SRC_PORT}}[0]], "; print "dst: $dst_addr:$flow[${$v9{_DST_PORT}}[0]], nat: $nat_addr:$flow[${$v9{_NAT_PORT}}[0]], event: $flow[${$v9{_NAT_EVENT}}[0]]\n"; } } } Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...