LINUX.ORG.RU

Сообщения gobot

 

Вставить в слово невидимый символ

 , ,

Хочу придать некоторым словам некоторое колдовство. Например, в обычное слово ПРИВЕТ, вставить некоторый управляющий символ utf, и потом при парсинге текста проверять, присутствует он или нет и производить с этим словом некоторые махинации(обрезать букву последнюю, например)

https://ru.wikipedia.org/wiki/Управляющие_символы
Тут описаны невидимые символы, мне надо их добавлять в начале слова. Какой символ правильней будет добавить и вообще в том направлении я иду? Как проще сделать такое? Обрамлять в теги и придавать какие то классы - не вариант

gobot
()

Как пользоваться cloudflare если он заблочен

 ,

Как пользоваться cloudflare если его некоторые(в частности 104.28.8.104) адреса заблочены в путинской России? Стоит ли писать в поддержку? Или забить и не пользоваться им?

Да, не работает только https, пишет connection reset(у половины). По http работает.

Роскомпозор
http://prntscr.com/prrmhn

gobot
()

soft restart сервиса на node

 , ,

Есть у меня на node сервер websocket. Хочу его перезагружать, но чтобы подключенные клиенты не сбрасывались. Типа как ngix reload. Размышляю так: нужно сначала убирать listen на порту и...продолжать работу сервера? До тех пор пока последний клиент не отключился? Как снимать listen не знаю, сервер при этом отрубает всех клиентов. Какие размышления будут?

gobot
()

Восстановление файлов

 

После некоторого шаманства с GIT, исчезла папка upload, точнее вместо нее стала ссылка на саму же себя. Произошло это после pull репы, в которой upload была указана как ссылка. Предполагаю что git существующую папку перезатер ссылкой. Файлы удалились или нет? Если удалить эту ссылку, то что останется? В общем как вернуть папку?
Пока что пробовал через ext4magic, но что то не видит он этой папки и зависает или я не так делаю

gobot
()

Нужен ли мне vue, react, angular?

 , ,

Этот вопрос меня преследует уже год. Никак не могу понять нужен ли мне vue. Обновлять дом? Да, в некоторой степени это удобно, но и накладывает некоторые ограничения. Бесят эти v-onclick, я привык навешивать события не в тегах, а сразу на множество элементов по селекторам в jquery. Вся html разметка в бесконечных v-if v-html. Ну да, это здорово, меняешь 1 свойство и весь шаблон сказочно перерисовывается. Но чем больше я погружаюсь в vue, тем больше времени я трачу на решение поисков ответов на элементарные вопросы как сделать нечто по философии vue, не используя костыли.

Также пробовал ангяляр, хорошо все получалось, писал контролеры, растыкивал также как и в vue по всей разметке ng*, но и он не прижился в моем миру. Приходилось больше гуглить и искать также ответы на элементарные вопросы, чем делать

Меньше пробовал react, уже не стал эксперементировать, посмотрел, такое же vue собственно, реактивность, шаблонны

На данный момент есть мысли что vue а тем более ангуляр не то чтобы упрощают разработку, а наоборот тормозят ее, отбирая время на бесконечное гугление и написание костылей. Больше разбираешься в устройстве молотка, чем забиваешь гвозди

Наверное я просто не вник в эти инструменты достаточно и у меня ничего не выходитс ними или использую устаревшую концерцию генерации шаблонов на сервере. Я просто не понимаю для чего нужен vue

gobot
()

vue затирает h1

 

<div id="app">
<h1 v-html="header">страница</h1>
</div>
var app = new Vue({
  el: '#app',
  data: {
      header: null
  }
});



После загрузки страницы h1 затирается. Как установить начальное значение header, чтобы vue брал за основу уже имеющийся текст внутри h1?

gobot
()

JS фреймворк для ajax api, подгрузки блоков

 ,

Может есть что-либо готовое... С готовым АПИ для дергания ajax запросов типа request.api(url, success, fail) с интеграцией в UI(например пока идет загрузка крутится шарик, а потом контент вставляется сам в блок). Ещё нужно подгружать блоки с сервера, открывать их в modal окнах и прочие рутинные штучки. Есть всякие VUE, angular. Куда смотреть? Или такое самому только делать?

gobot
()

Не загружается GRUB: invalid arch independent ELF magic

 ,

После некоторого шаманства с RAID перестал загружатся дебиан.
Конфигурация такова: есть 4 диска sda, sdb, sdc, sdd и 1 RAID6 в который входят эти диски(потом я удалил 2). Ранее(когда не было raid) система нормально загружалась через sda, на котором находился grub.
После добавления 4 дисков к массиву при загрузке выдает такое сообщение «invalid arch independent ELF magic».

Что я делал в grub rescue

ls
(hd0) (hd0,msdos5) (hd0,msdos1) (hd1) (hd1,msdos5) (hd1,msdos1) (hd2) (hd2,msdos5) (hd2,msdos1) (hd3) (hd3,msdos5) (hd3,msdos1) (md/0)
set prefix=(md/0)/boot/grub
set root=(md/0)
ls /boot/grub
... i386-pc/ locale/ fonts/ grub.cfg ...
insmod ext2
insmod normal
error: invalid arch independent ELF magic


Потом загружался через live-cd kali, запускал RAID массив, монтировал его и пытался восстановить grub
mdadm -A --scan /dev/md0 /dev/sda1
mdadm: /dev/md/0 has been started with 2 drives (out of 4)
cat /proc/mdstat
Personalities : [raid6] [raid5] [raid4]
md0 : active (auto-read-only) raid6 sdd1[4] sdc1[2]
      4190208 blocks super 1.2 level 6, 512k chunk, algorithm 2 [4/2] [U_U_]

mount /dev/md0 /mnt

apt-get install grub-pc
grub-probe: error: failed to get canonical path of `overlay'.
grub-probe: error: failed to get canonical path of `overlay'.
grub-probe: error: failed to get canonical path of `overlay'.


grub-install --root-directory=/mnt /dev/md0

Installing for i386-pc platform.
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: warning: Couldn't find physical volume `(null)'. Some modules may be missing from core image..
grub-install: warning: File system `ext2' doesn't support embedding.
grub-install: warning: Embedding is not possible.  GRUB can only be installed in this setup by using blocklists.  However, blocklists are UNRELIABLE and their use is discouraged..
grub-install: error: will not proceed with blocklists.


Дальше не знаю что делать

вывод fdisk -l
Disk /dev/sda: 3 GiB, 3221225472 bytes, 6291456 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sda1  *       2048 4196351 4194304    2G 83 Linux
/dev/sda2       4198398 6289407 2091010 1021M  5 Extended
/dev/sda5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris


Disk /dev/sdc: 3 GiB, 3221225472 bytes, 6291456 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdc1  *       2048 4196351 4194304    2G 83 Linux
/dev/sdc2       4198398 6289407 2091010 1021M  5 Extended
/dev/sdc5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris


Disk /dev/sdb: 3 GiB, 3221225472 bytes, 6291456 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *       2048 4196351 4194304    2G 83 Linux
/dev/sdb2       4198398 6289407 2091010 1021M  5 Extended
/dev/sdb5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris


Disk /dev/sdd: 3 GiB, 3221225472 bytes, 6291456 sectors
Disk model: VBOX HARDDISK
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdd1  *       2048 4196351 4194304    2G 83 Linux
/dev/sdd2       4198398 6289407 2091010 1021M  5 Extended
/dev/sdd5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris


Disk /dev/loop0: 752.14 MiB, 788676608 bytes, 1540384 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes


Disk /dev/md0: 3.102 GiB, 4290772992 bytes, 8380416 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 524288 bytes / 1048576 bytes



вывод lsblk -f
NAME    FSTYPE            LABEL     UUID                                 FSAVAIL FSUSE% MOUNTPOINT
loop0   squashfs                                                               0   100% /usr/lib/live/mount/rootfs/filesystem.squashfs
sda
├─sda1  linux_raid_member debian:0  8cb56d09-785b-65db-d7b6-fae1f53ff0f4
├─sda2
└─sda5  swap                        80ef77ee-860d-4d2d-b60f-79e922fbd0ad
sdb
├─sdb1  linux_raid_member debian:0  8cb56d09-785b-65db-d7b6-fae1f53ff0f4
├─sdb2
└─sdb5  swap                        80ef77ee-860d-4d2d-b60f-79e922fbd0ad
sdc
├─sdc1  linux_raid_member debian:0  8cb56d09-785b-65db-d7b6-fae1f53ff0f4
│ └─md0 ext4                        dc2f4298-25af-4bda-abbf-a3c0a8fc9592  873.2M    49% /mnt
├─sdc2
└─sdc5  swap                        80ef77ee-860d-4d2d-b60f-79e922fbd0ad
sdd
├─sdd1  linux_raid_member debian:0  8cb56d09-785b-65db-d7b6-fae1f53ff0f4
│ └─md0 ext4                        dc2f4298-25af-4bda-abbf-a3c0a8fc9592  873.2M    49% /mnt
├─sdd2
└─sdd5  swap                        80ef77ee-860d-4d2d-b60f-79e922fbd0ad
sr0     iso9660           Kali Live 2019-08-27-11-08-45-00                     0   100% /run/live/medium

gobot
()

Не могу примонтировать склонированный диск

 , , , ,

Хочу склонировать диск /dev/sda на /dev/sdb, оба они 3GB.

fdisk -l /dev/sda
Disk /dev/sda: 3 GiB, 3221225472 bytes, 6291456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sda1  *       2048 4196351 4194304    2G 83 Linux
/dev/sda2       4198398 6289407 2091010 1021M  5 Extended
/dev/sda5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris



Делаю полный клон с таблицей разделов
dd if=/dev/sda of=/dev/sdb

В итоге получаю склонированный диск
fdisk -l /dev/sdb
Disk /dev/sdb: 3 GiB, 3221225472 bytes, 6291456 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x866231b5

Device     Boot   Start     End Sectors  Size Id Type
/dev/sdb1  *       2048 4196351 4194304    2G 83 Linux
/dev/sdb2       4198398 6289407 2091010 1021M  5 Extended
/dev/sdb5       4198400 6289407 2091008 1021M 82 Linux swap / Solaris


Потом делаю
mount /dev/sdb1 /mnt/
mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error


Что ему надо? Что за /dev/loop0 ?

До этого делал
dd if=/dev/sda1 of=/dev/sdb1

заметил что
file /dev/sdb1
/dev/sdb1: Linux rev 1.0 ext4 filesystem data, UUID=dc2f4298-25af-4bda-abbf-a3c0a8fc9592 (needs journal recovery) (extents) (64bit) (large files) (huge files)

определяется как файл, вместо block special

Удалил rm /dev/sdb1 сделал повторно клон и примонтировался. Что было не совсем пойму. dd сначала файл создал обычный /dev/sdb1 ?

gobot
()

Резко участились deadlock

 ,

Что то резко участились deadlock в mysql, в одной таблице. Раньше раз в год был 1 deadlock сейчас в день по 2-3 раза. После чего это произошло будет описано ниже.

Решил я создать индекс дополнительный. Вот собственно и все. После этого посыпались deadlock.

gobot
()

swap постоянно забит

 ,

На сервере debian почти постоянно забит на 100% swap, хотя память используется на 70% и ни разу не превышала этот порог.
Был давно установлен

vm.swappiness = 10

Но почему некоторые процессы продолжают скидывать в своп данные?

for file in /proc/*/status ; do awk '/VmSwap|Name|^Pid/{printf $2 " " $3}END{ print ""}' $file; done | sort -k 3 -n | awk '$3 > 5000'

php-fpm7.0 15939 5080 kB
php-fpm7.0 6023 5080 kB
nginx 12113 5104 kB
php-fpm7.0 6019 5116 kB
php-fpm7.0 6018 5120 kB
php-fpm7.0 6015 5172 kB
php-fpm7.0 6021 5172 kB
php-fpm7.0 6017 5200 kB
php-fpm7.0 6010 5212 kB
php-fpm7.0 5997 5236 kB
php-fpm7.0 6013 5252 kB
php 25432 5288 kB
php-fpm7.0 6022 5304 kB
php-fpm7.0 6020 5308 kB
php-fpm7.0 6016 5356 kB
php-fpm7.0 6025 5804 kB
php-fpm7.0 6031 6308 kB
php-fpm7.0 6026 6456 kB
php 30006 7160 kB
php-fpm7.0 6030 7228 kB
php 31132 7328 kB
nginx 8061 8136 kB
nginx 12112 8204 kB
php-fpm7.0 6028 9252 kB
node 11408 9364 kB
node 7240 11812 kB
containerd 9854 12192 kB
node 8063 12732 kB
mysqld 23504 20824 kB
dockerd 7924 21808 kB
node 12525 35868 kB

gobot
()

php fpm убить запрос если клиент отсоединился

 ,

Есть связка nginx+php-fpm. Хочу чтобы убивались запросы со стороны php, если клиент отсоединился

Например клиент запрашивает http://host/script.php

wget --read-timeout=1 --no-check-certificate -t 1 https://host/script.php

Через 1 сек. клиент закрывает соединение(--read-timeout=1), но nginx не закрывает соединение с сокетом /run/php-fpm.sock
netstat -nap | grep php | grep CONNECTED | grep -v mast
unix  2      [ ]         STREAM     CONNECTED     51186    21008/php-fpm: pool  /run/php-fpm.sock

и скрипт продолжает работать

Сам script.php засыпает за 10000 сек.
<?php
sleep(10000);


fastcgi_ignore_client_abort on в nginx не помогает

Да, можно поставить в самом php лимиты max_execution_time или request_terminate_timeout, но хотелось бы чтобы nginx закрывал сам соединение c php, если клиент уже отсоединился и не ждет результата работы скрипта

gobot
()

Чтение файла с конца

 , ,

Ищу быстрый способ чтения построчно большого файла с конца.
Нашел такой вариант с fseek https://werxltd.com/wp/2010/10/29/reading-a-file-line-by-line-in-reverse-with... но он тормозной. Все примеры в гугле основаны на перемещении указателя, но почему то все тормозное. Неужели fseek операция такая ресурсоемкая?
Собственно нужно вот что. Анализ лог-файла за последний час(в кроне скрипт запускается каждый час) и отыскивание ошибок с оповещением админу. Читаю файл с конца и когда дохожу до строки X, то прерывается

Замерил

Считывание 10 000 строк с начала файла
time loganalizer.php
real    0m0.020s

Считывание 50 000 строк с начала файла
time loganalizer.php
real    0m0.036s

Считывание 10 000 строк с конца файла
time loganalizer.php
real    0m3.105s

Считывание 50 000 строк с конца файла
time loganalizer.php
real    0m15.547s


stat /var/log/nginx/access.log.1
Size: 2 497 557 076



разница просто сумасшедшая, с конца файла в 155 и 500 раз дольше

gobot
()

QoS ssh

 , , ,

Можно ли в linux использовать этот самый QoS, чтобы ssh был доступен, даже когда весь канал забивается? Или не qos, может через TC?

gobot
()

На 1 сервер 5000 IP

 , , , ,

Как на 1 интерфейс навешать 5000 адресов и чтобы запросы шли рэндомно с этих IP?

Хочу что-то типа

iptables -A POSTROUTING -d 10.0.0.2/32 -j SNAT --to-source x.x.x.x

Но чтобы x.x.x.x подменялся рэндомно. Или нужно прописать в iptables 5000 правил?
Хочу потестировать сайт, но чтобы запросы на nginx шли со случайных адресов. Как лучше сделать? На тестируемом сервере думаю делать маршрут по умолчанию на 10.0.0.3(сервер с которого будут запросы идти)

gobot
()

Spoofing ip

 ,

Насколько велика вероятность того, что запрос на сервер пришел с фейкового(подмененого) IP? Насколько я знаю, маршрутизаторы у ISP блокируют такие пакеты(если SRC изменен), то есть если клиенту выдали 3 IP, то в пакете SRC должен быть именно эти адреса, а не другие. Или есть такие ISP которые не делают таких проверок? Насколько их много?

gobot
()

Тестирую SYNPROXY, куки не отправляются

 , , ,

Хочу сделать SYNPROXY, для смягчения syn флуда. Вроде все понятно, делаю как тут https://www.opennet.ru/tips/info/2928.shtml или тут https://habr.com/ru/company/infobox/blog/232227/

Общий смысл ясен, исключить из conntrack syn, метить INVALID ложные ACK, отправлять куку, потом все это дело отправлять в SYNPROXY, там проверяется ACK от клиента и если он правильный, то создавать соединение, если нет, то следующее правило дропает пакеты.

Не пойму почему не отправляются куки, смотрю изменения через

netstat -s | grep -Ei "cook"
10 SYN cookies sent
2 SYN cookies received


Видно, что куки не отсылаются, хотя пакеты SYN идут с бешеной скоростью ~50 000PPS

Переполнения очереди SYN тоже нет
netstat -s | grep -Ei "listen"
0 SYNs to LISTEN sockets dropped



Однако, tcpdump показывает, что SYN+ACK пакеты отсылаются

tcpdump -i any -n port 80 and src 10.0.0.2
23:22:03.259081 IP 10.0.0.2.80 > 46.39.196.229.5827: Flags [S.], seq 515620665, ack 1531057089, win 0, length 0
23:22:03.259094 IP 10.0.0.2.80 > 191.24.222.41.5829: Flags [S.], seq 2946937250, ack 1684158566, win 0, length 0
23:22:03.259305 IP 10.0.0.2.80 > 73.95.252.199.5830: Flags [S.], seq 4071935182, ack 825496706, win 0, length 0
23:22:03.259382 IP 10.0.0.2.80 > 68.156.77.164.5831: Flags [S.], seq 3453282316, ack 1806698451, win 0, length 0
23:22:03.259417 IP 10.0.0.2.80 > 136.74.64.98.5832: Flags [S.], seq 966049922, ack 1438489520, win 0, length 0
23:22:03.259443 IP 10.0.0.2.80 > 5.39.64.98.5833: Flags [S.], seq 3456217848, ack 1877534406, win 0, length 0
23:22:03.259567 IP 10.0.0.2.80 > 75.2.162.73.5834: Flags [S.], seq 2934636789, ack 2019708598, win 0, length 0
23:22:03.259658 IP 10.0.0.2.80 > 151.8.33.142.5835: Flags [S.], seq 923844625, ack 176880257, win 0, length 0
23:22:03.259849 IP 10.0.0.2.80 > 141.122.230.196.5836: Flags [S.], seq 2816293618, ack 666495559, win 0, length 0
23:22:03.259892 IP 10.0.0.2.80 > 247.21.5.9.5837: Flags [S.], seq 2611127790, ack 1590842067, win 0, length 0
23:22:03.260048 IP 10.0.0.2.80 > 24.170.93.203.5841: Flags [S.], seq 2875532378, ack 1007533654, win 0, length 0
23:22:03.260099 IP 10.0.0.2.80 > 243.236.162.73.5839: Flags [S.], seq 4142336230, ack 855143884, win 0, length 0
23:22:03.260100 IP 10.0.0.2.80 > 106.106.151.181.5840: Flags [S.], seq 3272823395, ack 1830105953, win 0, length 0
23:22:03.260186 IP 10.0.0.2.80 > 46.79.157.229.5842: Flags [S.], seq 464842204, ack 958111797, win 0, length 0
23:22:03.260215 IP 10.0.0.2.80 > 95.152.222.141.5843: Flags [S.], seq 69167228, ack 1910363156, win 0, length 0
23:22:03.262073 IP 10.0.0.2.80 > 73.88.143.121.5844: Flags [S.], seq 404959580, ack 21012037, win 0, length 0
23:22:03.262219 IP 10.0.0.2.80 > 208.27.201.254.5847: Flags [S.], seq 2806492340, ack 715377600, win 0, length 0
23:22:03.262246 IP 10.0.0.2.80 > 154.236.128.246.5846: Flags [S.], seq 3797225913, ack 1438349079, win 0, length 0
23:22:03.262309 IP 10.0.0.2.80 > 157.45.122.93.5848: Flags [S.], seq 2918462004, ack 2056743493, win 0, length 0^C


Если очистить iptables -F то куки начинают отсылаться (смотрю через netstat -s SYN cookies sent)

В принципе, можно вообще отказаться от conntrack и все будет хорошо, но тогда не будут работать правила, которые используют состояния --state

Счечтик SYNPROXY растет, и попутно 1 ядро проца используется на 100%, растут пинги и потери пакетов.

Почему 1 ядро загружено на 100% ksoftirq (думаю отправка SYN+ACK?), хотя прерывания все распределил через rss-ladder и autorps и при входящем все ядра используются пропорционально

Тестирую так(2 виртуалки debian, 10.0.0.2(жертва) и 10.0.0.3(флудер))
hping3  --syn 10.0.0.2  -p 80  --rand-source -i u100
hping3  --syn 10.0.0.2  -p 80  --rand-source --flod


cat /etc/sysctl.conf

fs.file-max = 999999
net.core.netdev_max_backlog=10000
net.core.somaxconn=512 //больше нет смысла ставить, у nginx по умолчанию backlog=512
net.ipv4.tcp_syncookies=2 //отправлять куки всегда
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_max_tw_buckets = 65536
net.ipv4.tcp_tw_recycle = 0
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_tw_reuse = 0
net.ipv4.tcp_fin_timeout = 5
net.ipv4.tcp_keepalive_time = 1800
net.ipv4.tcp_keepalive_probes = 7
net.ipv4.tcp_keepalive_intvl = 75
net.core.wmem_max = 33554432
net.core.rmem_max = 33554432
net.core.rmem_default = 8388608
net.core.wmem_default = 4194394
net.ipv4.tcp_rmem = 4096 8388608 16777216
net.ipv4.tcp_wmem = 4096 4194394 16777216

net.netfilter.nf_conntrack_max=3000000
net.netfilter.nf_conntrack_tcp_loose = 0
net.netfilter.nf_conntrack_tcp_timeout_syn_recv = 1
net.netfilter.nf_conntrack_tcp_timeout_syn_sent = 1
net.ipv4.ip_forward = 0
net.ipv4.tcp_synack_retries = 1



iptables -t raw -nvL
Chain PREROUTING (policy ACCEPT 2871K packets, 115M bytes)
 pkts bytes target     prot opt in     out     source               destination
2851K  114M CT         tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp flags:0x17/0x02 CT notrack

Chain INPUT (policy ACCEPT 21481 packets, 1127K bytes)
 pkts bytes target     prot opt in     out     source               destination
2602K  104M SYNPROXY   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp ctstate INVALID,UNTRACKED SYNPROXY sack-perm timestamp wscale 7 mss 1460
    6   240 DROP       all  --  *      *       0.0.0.0/0            0.0.0.0/0            ctstate INVALID

gobot
()

iptables syn flood

 , , ,

Почему такое не работает?

-A INPUT -p tcp --dport 80 -m state --state NEW -m hashlimit --hashlimit-above 3/sec --hashlimit-burst 1 --hashlimit-mode srcip   --hashlimit-name syn -j DROP

Запускаю с другой
hping3  --syn 10.0.0.2  -p 80 -i u10000

Смотрю tpcdump
tcpdump -n -i any port 80 and src 10.0.0.3
130866 packets captured
131283 packets received by filter
417 packets dropped by kernel

пакеты идут со скоростью 100/sec, но счетчик на этом правиле не увеличивается
iptables -nvL INPUT
 pkts bytes target     prot opt in     out     source               destination
    0     0 DROP       tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 state NEW limit: above 3/sec burst 1 mode srcip


cat /proc/net/ipt_hashlimit/syn
3600 10.0.0.3:0->0.0.0.0:0 0 0 0
3252 10.0.0.1:0->0.0.0.0:0 0 0 0

gobot
()

Пропадает сеть

 , ,

Временами бывает что сервер(Debian 9.4) недоступен по сети, не знаю то ли у провайдера (сапорт пока молчит), то ли на сервере проблемы.

Симптомы
* Zabbix(на этом же сервере) показывает падение трафика почти до 0
* PPS тоже 0
* Пинг с другого сервера FAIL
* Нагрузка на проц падает
* netstat -na | grep SYN_RECV | wc -l = 502
* dropped\missed\fifo по нулям (network-top)
* В syslog пусто

Единственная аномалия это возросшие записи conntrack c ~7000 до 441 389 записей с флагом SYN_SENT UNREPLIED. Но переполнения таблицы не регистрируется.
/etc/sysctl.conf

net.core.somaxconn = 65535
net.core.netdev_max_backlog = 10000
net.core.netdev_budget = 600
net.netfilter.nf_conntrack_max=1048576
net.netfilter.nf_conntrack_tcp_loose = 0
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_syncookies = 1
net.netfilter.nf_conntrack_tcp_timeout_established = 7200


Что может быть? Похоже на syn flood, но в syslog пусто и нагрузки на проц нет

gobot
()

Регулярка по замене hex

 , ,

Есть hex последовательность символов E2808c(utf-8 ZERO WIDTH NON-JOINER) в строке, их надо удалять. Как написать регулярку по их замене?
Пробую

text.replace(/\xe2\x80\x8c/gm, "")
не заменяет
text.match(/\xe2\x80\x8c/gm)
null

Ничего не заменяет

gobot
()

RSS подписка на новые темы