Iluffka Опубликовано 19 августа, 2020 · Жалоба 30 minutes ago, Ivan_83 said: Без таблицы стейтов делать можно, но продумайте как пакеты в обратном направлении должны идти. в целом, подумал, что можно натить внутрь и обратным правилом наружу, самое главное чтобы состояния не отслеживались, типа вот так iptables -t nat -I POSTROUTING -s 10.32.173.16/32 -o eth0 -p tcp -m tcp --sport 22 -m comment --comment SNAT-PORT-ANSWER -j SNAT --to-source 14.1.1.1:22211 iptables -t nat -I PREROUTING -d 14.1.1.1/32 -i eth0 -p tcp -m tcp --dport 22211 -m comment --comment DNAT-PORT -j DNAT --to-destination 10.32.173.16:22 Может кто знает ещё решение подобное, помимо этого? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sdy_moscow Опубликовано 19 августа, 2020 · Жалоба @Iluffka Насколько помнится штатные SNAT и DNAT все равно требуют контрак. Даже если схема ип в ип. Нужен дополнительный модуль в иптабл подгрузить, какой - не знаю. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Iluffka Опубликовано 19 августа, 2020 · Жалоба да, они всё равно попадают в контрак, как убрать это поведение я как раз и ищу Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sdy_moscow Опубликовано 19 августа, 2020 · Жалоба @Iluffka Код такого НАТа реализован в последних версия ассел пптп для режима ип овер ип. В догонку. Посмотри -j masquerade https://webhamster.ru/mytetrashare/index/mtb0/28 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Iluffka Опубликовано 19 августа, 2020 · Жалоба masquarade это типа сурс ната, когда сервер перебивает src чтобы обратный трафик вернулся к нему... это не то. мне нужно чтобы сервер тупо делал то что написано - видит трафик по заданным критериями - меняет dst adrr + port и\или src addr + port без отслеживания состояния, чтобы трафик мог выходить через другой сервер, а не там где зашёл Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Mystray Опубликовано 19 августа, 2020 · Жалоба 9 минут назад, Iluffka сказал: masquarade это типа сурс ната, когда сервер перебивает src чтобы обратный трафик вернулся к нему... это не то. мне нужно чтобы сервер тупо делал то что написано - видит трафик по заданным критериями - меняет dst adrr + port и\или src addr + port без отслеживания состояния, чтобы трафик мог выходить через другой сервер, а не там где зашёл Погуглите tc nat он именно это и делает. Только селектор наверное надо будет городить, да и вообще у tc синтаксис марсианский. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Iluffka Опубликовано 20 августа, 2020 · Жалоба 1к1 нат получился через tc, но как выборку по портам сделать (перенаправление портов с, допустим, 22 на 232) не разберусь. Подозреваю что так нельзя Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
acutus Опубликовано 23 августа, 2020 · Жалоба Помогите разобраться. Поднял тестовый сервер. Centos 7. ядро 4.4.232-1.el7.elrepo.x86_64 Модуль загружен. Правила: $IPTABLES -t raw -A PREROUTING -s 10.36.0.0/24 -j CT --notrack $IPTABLES -t raw -A PREROUTING -d x.xxx.xxx.0/24 -j NAT --dnat $IPTABLES -A FORWARD -d 10.36.0.0/24 -j ACCEPT $IPTABLES -A FORWARD -s 10.36.0.0/24 -j NAT --snat В принципе все работает. Но на ряде ресурсов (в частности mail.ru) наблюдается следующая картина: Открывается первая страница ресурса, но при переходе по ссылкам (на этом же домене, либо сабдоменах) страницы уже не открываются. Где я мог накосячить? Или с какой стороны подойти к диагностике проблемы хотя бы. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
kayot Опубликовано 23 августа, 2020 · Жалоба 4 часа назад, acutus сказал: Где я мог накосячить? Это нормально для настроек по умолчанию, разные хосты внутри одного доменного имени открываются с разных NAT IP. Добавь --persistent в правило NAT. пардон Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vurd Опубликовано 23 августа, 2020 · Жалоба 15 минут назад, kayot сказал: Это нормально для настроек по умолчанию, разные хосты внутри одного доменного имени открываются с разных NAT IP. Добавь --persistent в правило NAT. не поможет. модуль не стандартный же, там по определению персистент. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 14 октября, 2020 · Жалоба Народ, кто пользует модуль, кто-нибудь пробовал грузить его с параметром nat_hash_size большим дефолтного? У меня крашится с таким вот логом: [4072873.552030] Module xt_NAT loaded [4072873.552033] xt_NAT DEBUG: IP Pool from 127.0.0.1 to 127.0.0.1 [4072873.552034] xt_NAT DEBUG: nat pool table mem: 4 [4072873.552035] xt_NAT DEBUG: NAT hash size: 524288 [4072873.552036] xt_NAT DEBUG: Users hash size: 16384 [4072873.552036] ------------[ cut here ]------------ [4072873.552040] WARNING: CPU: 0 PID: 5352 at mm/slab_common.c:657 kmalloc_slab+0x2e/0x86() [4072873.552041] Modules linked in: xt_NAT(O+) xt_CHECKSUM iptable_mangle ipt_MASQUERADE nf_nat_masquerade_ipv4 iptable_nat nf_nat_ipv4 nf_nat nf_conntrack_ipv4 nf_defrag_ipv4 xt_conntrack nf_conntrack ipt_REJECT nf_reject_ipv4 xt_tcpudp tun ebtable_filter nbd ib_iser rdma_cm iw_cm ib_cm ib_sa ib_mad ib_core ib_addr iscsi_tcp libiscsi_tcp libiscsi scsi_transport_iscsi vmwgfx video usbhid ttm sr_mod snd_intel8x0 snd_ac97_codec snd_pcm snd_timer snd soundcore rng_core parport_pc parport ohci_pci ohci_hcd loop joydev iptable_filter ip_tables ip6table_filter ip6_tables i2c_piix4 hid_generic hid ext4 jbd2 mbcache ebtable_nat ebtables x_tables e1000 drm_kms_helper drm i2c_core dm_mod crc16 cdrom bridge battery ahci libahci ac97_bus ac 8021q garp stp llc sg ata_generic sd_mod usb_storage iTCO_wdt iTCO_vendor_support evdev kvm_intel kvm crc32c_intel ghash_clmulni_intel aesni_intel aes_x86_64 glue_helper lrw gf128mul ablk_helper cryptd microcode pcspkr psmouse ata_piix hpwdt serio_raw ipmi_si hpilo ipmi_msghandler uhci_hcd sb_edac acpi_power_meter edac_core lpc_ich wmi mfd_core thermal hpsa tg3 ehci_pci ehci_hcd ptp pps_core usbcore usb_common libphy ioatdma dca button processor thermal_sys [4072873.552081] CPU: 0 PID: 5352 Comm: modprobe Tainted: G O 3.18.19 #1 [4072873.552082] Hardware name: ************************************************** [4072873.552083] 0000000000000000 0000000000000009 ffffffff81400dd0 0000000000000000 [4072873.552084] ffffffff8104af97 ffffffff81818250 ffffffff810f95b0 ffff88081ce0f240 [4072873.552086] 0000000000000000 0000000000800000 0000000000000000 00000000000080d0 [4072873.552087] Call Trace: [4072873.552091] [<ffffffff81400dd0>] ? dump_stack+0x41/0x51 [4072873.552094] [<ffffffff8104af97>] ? warn_slowpath_common+0x78/0x90 [4072873.552095] [<ffffffff810f95b0>] ? kmalloc_slab+0x2e/0x86 [4072873.552097] [<ffffffff810f95b0>] ? kmalloc_slab+0x2e/0x86 [4072873.552100] [<ffffffff8111eb66>] ? __kmalloc+0x23/0xf0 [4072873.552102] [<ffffffffa05aa114>] ? nat_tg_init+0x114/0x1000 [xt_NAT] [4072873.552104] [<ffffffffa05aa114>] ? nat_tg_init+0x114/0x1000 [xt_NAT] [4072873.552108] [<ffffffffa05aa000>] ? 0xffffffffa05aa000 [4072873.552110] [<ffffffffa05aa000>] ? 0xffffffffa05aa000 [4072873.552113] [<ffffffff81002149>] ? do_one_initcall+0xe3/0x17e [4072873.552115] [<ffffffff810a0f4a>] ? load_module+0x1a69/0x1dbb [4072873.552117] [<ffffffff810a0f92>] ? load_module+0x1ab1/0x1dbb [4072873.552118] [<ffffffff8109e183>] ? show_initstate+0x43/0x43 [4072873.552122] [<ffffffff81407078>] ? page_fault+0x28/0x30 [4072873.552123] [<ffffffff810a132c>] ? SyS_init_module+0x90/0x9b [4072873.552126] [<ffffffff814051c9>] ? system_call_fastpath+0x12/0x17 [4072873.552134] ---[ end trace 74e5ed02d028161d ]--- [4072873.552168] xt_NAT DEBUG: users htable mem: 262144 [4072873.552168] xt_NAT DEBUG: nat pool table mem: 4 [4072873.552425] xt_NAT SESSIONS CLEAN ERROR: Found null ptr for ht_inner/ht_outer Опытным путём было выяснено что краш происходит в момент выделения памяти в строчке ht_inner = kzalloc(sz, GFP_KERNEL); sz = 8388608 функции nat_htable_create. Не подскажете куда копать? free total used free shared buffers cached Mem: 32978200 364980 32613220 0 18876 186768 -/+ buffers/cache: 159336 32818864 Swap: 0 0 0 uname -a Linux hp2 3.18.19 #1 SMP Tue Aug 11 14:13:12 ALMT 2015 x86_64 GNU/Linux Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
sdy_moscow Опубликовано 14 октября, 2020 · Жалоба @pppoetest Вернулся ptr=0? Вставьте проверку. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 14 октября, 2020 · Жалоба 1 час назад, sdy_moscow сказал: @pppoetest Вернулся ptr=0? Вставьте проверку. Там эта проверка есть, только в дальнейшем нет нигде анализа возвращаемого значения функции: sz = sizeof(struct xt_nat_htable) * nat_hash_size; ht_inner = kzalloc(sz, GFP_KERNEL); if (ht_inner == NULL) return -ENOMEM; Ковырнул include/linux/slab.h, таки да, больше 4Мб низя printk(KERN_INFO "max %d\n", KMALLOC_MAX_SIZE); max 4194304 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
NiTr0 Опубликовано 14 октября, 2020 · Жалоба мож того... vmalloc заюзать? вроде как физически непрерывный кусок памяти же не нужен. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 15 октября, 2020 · Жалоба Я не погромист, раз никто не сталкивался и у всех всё работает, значит хватает дефолтного значения. Оставлю так, тестирую дальше. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
acutus Опубликовано 28 октября, 2020 (изменено) · Жалоба del Изменено 28 октября, 2020 пользователем acutus Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Igor Diakonov Опубликовано 13 ноября, 2020 · Жалоба В 19.08.2020 в 13:01, sdy_moscow сказал: @Iluffka Насколько помнится штатные SNAT и DNAT все равно требуют контрак. Даже если схема ип в ип. Нужен дополнительный модуль в иптабл подгрузить, какой - не знаю. Древний RAWSNAT + напильник Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sacrament Опубликовано 12 января, 2021 · Жалоба Кто-то юзает экспорт статистики NAT events? Совместима ли она с ipt_netflow? Сейчас есть несколько тазиков с НАТ и все они шлют события НАТ на один коллектор, хотел попробовать данный модуль и боюсь не будет ли каши. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 12 января, 2021 · Жалоба 4 часа назад, Sacrament сказал: Кто-то юзает экспорт статистики NAT events? Совместима ли она с ipt_netflow? Я немножко переписал, и стала совместима, но пришлось пожертвовать стоповым эвентом. xt_NAT.c Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
vurd Опубликовано 12 января, 2021 · Жалоба 1 час назад, pppoetest сказал: Я немножко переписал, и стала совместима, но пришлось пожертвовать стоповым эвентом. xt_NAT.c У вас там правки под kernel 5.x добавлены? Вообще неплохо бы это PR кинуть в гитхаб к проекту, мало ли кому пригодится. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 13 января, 2021 · Жалоба 9 часов назад, vurd сказал: У вас там правки под kernel 5.x добавлены? Вообще неплохо бы это PR кинуть в гитхаб к проекту, мало ли кому пригодится. Нет, я не погромист, да и в гитхаб не умею. Если хочешь сделай дифф и сам кинь пр. Хотя, кмк, безсмысленно, ибо автор сказал: В 14.07.2019 в 15:37, uzd сказал: 2. Дальнейшая поддержка не планируется Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
Sacrament Опубликовано 13 января, 2021 · Жалоба 18 часов назад, pppoetest сказал: Я немножко переписал, и стала совместима, но пришлось пожертвовать стоповым эвентом. xt_NAT.c Благодарю Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 9 мая, 2021 · Жалоба Чем закончилась история с тестированием xt_NAT? У кого-нибудь в продакшине стоит? Пытался сейчас собраться под Debian 4.19.0-16-amd64, не горит желанием собираться: make make -C /lib/modules/4.19.0-16-amd64/build/ M=/root/install/xt_NAT modules CONFIG_DEBUG_INFO=y make[1]: Entering directory '/usr/src/linux-headers-4.19.0-16-amd64' CC [M] /root/install/xt_NAT/xt_NAT.o /root/install/xt_NAT/xt_NAT.c: In function ‘stat_seq_show’: /root/install/xt_NAT/xt_NAT.c:1547:43: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘s64’ {aka ‘long long int’} [-Wformat=] seq_printf(m, "Active NAT sessions: %ld\n", atomic64_read(&sessions_active)); ~~^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %lld /root/install/xt_NAT/xt_NAT.c:1548:42: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘s64’ {aka ‘long long int’} [-Wformat=] seq_printf(m, "Tried NAT sessions: %ld\n", atomic64_read(&sessions_tried)); ~~^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %lld /root/install/xt_NAT/xt_NAT.c:1549:44: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘s64’ {aka ‘long long int’} [-Wformat=] seq_printf(m, "Created NAT sessions: %ld\n", atomic64_read(&sessions_created)); ~~^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %lld /root/install/xt_NAT/xt_NAT.c:1550:41: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘s64’ {aka ‘long long int’} [-Wformat=] seq_printf(m, "DNAT dropped pkts: %ld\n", atomic64_read(&dnat_dropped)); ~~^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %lld /root/install/xt_NAT/xt_NAT.c:1551:39: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘s64’ {aka ‘long long int’} [-Wformat=] seq_printf(m, "Fragmented pkts: %ld\n", atomic64_read(&frags)); ~~^ ~~~~~~~~~~~~~~~~~~~~~ %lld /root/install/xt_NAT/xt_NAT.c:1552:41: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘s64’ {aka ‘long long int’} [-Wformat=] seq_printf(m, "Related ICMP pkts: %ld\n", atomic64_read(&related_icmp)); ~~^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %lld /root/install/xt_NAT/xt_NAT.c:1553:36: warning: format ‘%ld’ expects argument of type ‘long int’, but argument 3 has type ‘s64’ {aka ‘long long int’} [-Wformat=] seq_printf(m, "Active Users: %ld\n", atomic64_read(&users_active)); ~~^ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %lld /root/install/xt_NAT/xt_NAT.c: In function ‘nat_tg_init’: /root/install/xt_NAT/xt_NAT.c:1664:5: error: implicit declaration of function ‘setup_timer’; did you mean ‘sk_stop_timer’? [-Werror=implicit-function-declaration] setup_timer( &sessions_cleanup_timer, sessions_cleanup_timer_callback, 0 ); ^~~~~~~~~~~ sk_stop_timer cc1: some warnings being treated as errors make[4]: *** [/usr/src/linux-headers-4.19.0-16-common/scripts/Makefile.build:315: /root/install/xt_NAT/xt_NAT.o] Error 1 make[3]: *** [/usr/src/linux-headers-4.19.0-16-common/Makefile:1562: _module_/root/install/xt_NAT] Error 2 make[2]: *** [Makefile:146: sub-make] Error 2 make[1]: *** [Makefile:8: all] Error 2 make[1]: Leaving directory '/usr/src/linux-headers-4.19.0-16-amd64' make: *** [Makefile:11: xt_NAT.ko] Error 2 Кто-нибудь решал эту проблемку? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
pppoetest Опубликовано 9 мая, 2021 · Жалоба 2 часа назад, hiller сказал: Чем закончилась история с тестированием xt_NAT? У кого-нибудь в продакшине стоит? Стоит. Натит. Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
hiller Опубликовано 10 мая, 2021 · Жалоба Вот решение проблемки со сборкой, которую я описывал чуть выше: https://github.com/DmitriyEshenko/vyos-cgnat/commit/b50e09b3141be657d5bb03891e3e530d8c3416c9 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...