LINUX.ORG.RU

Сообщения gobot

 

QoS ssh

Форум — Admin

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

 , , ,

gobot
()

На 1 сервер 5000 IP

Форум — Admin

Как на 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

Форум — Admin

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

 ,

gobot
()

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

Форум — Admin

Хочу сделать 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

Форум — Admin

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

-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
()

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

Форум — Admin

Временами бывает что сервер(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

Форум — Web-development

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

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

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

 , ,

gobot
()

nginx MAP из тысячей IP

Форум — Admin

У меня есть в iptables(ipset) список около 20000 IP, которые заблокированы. Хотелось бы убрать их из iptables и перенести блокировку в nginx. На ум приходит только MAP


  • Будет ли она тормозить nginx c таким списком?
  • Как бы ее обновлять динамически? На ум приходит только include, генерить файлик с адресами и nginx reload
  • Можно ли генерировать http ответ средством iptables?



Собственно задача, дать блокируемому адресу подключиться к 443 порту и выдать статичную страницу с уведомлением о блокировке. Сейчас же блокируемый тупо не может даже законнектиться к серверу и думает что ничего не работает.

 , , , ,

gobot
()

Nginx установка переменной

Форум — Admin

Хочу динамический fastcgi_read_timeout в зависимости от URL. Например при /stats 1m, /ajax 1s, остальные 3s
Пытаюсь

map $uri  $tm  {
	default "3s";
	"/stats" "1m";
        "/ajax"  "1s"
}
fastcgi_read_timeout $tm;

или даже проще
set $tm "1s";
fastcgi_read_timeout $tm;


Ругается «fastcgi_read_timeout» directive invalid value"
Хотя
set $fpm_sock "/run/php/prod.sock";
fastcgi_pass  unix:$fpm_sock;

работает

 

gobot
()

Nginx таймайт ожидания

Форум — Admin

Есть nginx+php-fpm через unix socket.
Пул static

...
pm = static
pm.max_children = 300
pm.max_requests = 1000
request_terminate_timeout = 60s
listen.backlog = -1
...

Когда одновременных клиентов >= 300, новые клиенты ожидают освобождения места в пуле(как я предполагаю :)). Это ожидание иногда доходит до минуты. Увеличивать max_children нет смысла, т.к. в нормальном режиме active processes < 10. Хотелось бы ограничить это время и сбрасывать принудительно

Пробовал в nginx
fastcgi_connect_timeout 1s;

Не помогло

 

gobot
()

Safari HLS отсутствует плагин

Форум — Web-development

На MacOS 10.13, Safari 11.1.2 при открывании напрямую файла .m3u8 выходит сообщение о том, что отсутствует плагин. Также не работают плееры, которые используют HLS в качестве доставки видео. Вроде как HLS родной формат Apple, что ж ему надо собаке?

 , ,

gobot
()

Странности nginx

Форум — Admin

С таким конфигом сервер выдает всегда 404, когда запрос по http идет. Если https использутся то норм

location / {

  if ($scheme = "http") {

  }

  try_files $uri $uri/ @php;
}


С этим конфигом нормально
location / {
  try_files $uri $uri/ @php;
}


Т.е. если if(true) то выдает 404. В IF можно подставлять любую проверку, главное чтобы было TRUE, даже если $uri = «/» будет, то сервер опять же выдает 404. Ничего не понимаю, почему он не доходит до try_files, а попадает в IF(){} и там как я понял затыкается

 ,

gobot
()

Тест сайта на IOS Safari

Форум — Web-development

Раньше был сафари под винду, сейчас его нет. Есть какие то эмуляторы

iPadian - платный, пробовал какую то бесплатную версию, ничего не получилось
MobiOne Studio - проект официально прекращен
Air iPhone - не удалось установить
Xamarin - не понятно, вроде какой то фреймворк для Visual Studio

Appetize.Io - онлайн сервис, реально работает, но не удобно. Нет консоли, лимит по времени, маленький экран

Что ещё есть??

 , , ,

gobot
()

Symfony маршрут /images/*

Форум — Web-development

Как в Symfony 2 сделать route, чтобы в него попадали все картинки

/images/*
/images/dir/3/pic.jpg
/images/pic.jpg
/images/subdir/pic.jpg



Делаю так

/**
* @Route("/images/*", name="img")
*/
public function image(Request $request){}

но ничерта не работает. неужели нельзя написать regexp?

 

gobot
()

В хроме приостанавливается видео

Форум — Web-development

В последнем хроме почему то примерно через 30-120 сек приостанавливается видео. При этом звук продолжает идти
Навесил уже все события(error, abort, pause, suspend, interruptend, ended...) - ничего подозрительного нет. Событие progress генерируется, но видео остановлено. Ошибок нет video.error = null. С сетью все норм, в консоле пусто. Проверял в Опере - нормально идет уже пол часа.
Параметры такие

autoplay=false 
muted=true

Заметил, что перестает расти счетчик video.webkitDecodedFrameCount

 , ,

gobot
()

ffmpeg i-frame

Форум — Development

Делаю стрим: rtp => ffmpeg => rtmp

Ffmpeg берет поток из RTP(h264+aac), без перекодировки видео и шлет его на rtmp сервер. Все нормально работает, но если видео остановить(нажать на паузу), то в rtmp не будут передаваться ключевые кадры(iframe) и клиент не увидит статичной картинки. Если нажать на play, то нормально, видео пойдет.

Можно как-нибудь заставить ffmpeg генерировать i-frame(ключевой) без перекодировки(-vcodec copy) видео? Точнее нужно отправлять последний iframe(кэшировать?), если он не был отправлен допустим последние 3 сек. В нормальном режиме интервал около 2-3 сек.

Делала через -force_key_frames 0:00:01 не помогает

Или как заставить слать этот кадр источник(в моем случае браузер, webrtc). Получаю поток через getUserMedia(mediaConstraints), но в параметрах нет возможности указать что то типа force keyframe interval

 , , , ,

gobot
()

ISO/IEC

Форум — Development

Мне нужна таблица audioProfileLevelIndication Values из ISO/IEC 14496-1 Coding of audio-visual objects — Part 1

Вот эта
https://www.iso.org/standard/55688.html

Неужели я должен ее покупать и почему? Неужели эта информация такая секретная?

 , , ,

gobot
()

Расшифровка параметров кодека

Форум — Development

Хочу настроить aac и h264 кодеки
Читаю https://tools.ietf.org/html/rfc3640#section-3.3.6

Настройка такая(5.1 channel AAC stream with a
sampling rate of 48 kHz)

streamtype=5;profile-level-id=16;mode=AAC-hbr;config=11B0;sizelength=13;indexlength=3;indexDeltaLength=3

Хочу понять как генерировать profile-level-id и config, для настройки профилей

написано что config это шестнадцатеричное число которое является AudioSpecificConfig в ISO/IEC 14496-3. Открываю http://read.pudn.com/downloads98/doc/comm/401153/14496/ISO_IEC_14496-3 Part 3...

Там поиском нахожу AudioSpecificConfig
Table 1.8 – Syntax of AudioSpecificConfig()
AudioSpecificConfig ()
{
audioObjectType; 5 bslbf
samplingFrequencyIndex; 4 bslbf
if ( samplingFrequencyIndex==0xf )
samplingFrequency; 24 uimsbf
channelConfiguration; 4 bslbf
if ( audioObjectType == 1 || audioObjectType == 2 ||
audioObjectType == 3 || audioObjectType == 4 ||
audioObjectType == 6 || audioObjectType == 7 )
GASpecificConfig();
if ( audioObjectType == 8 )
CelpSpecificConfig();
if ( audioObjectType == 9 )
HvxcSpecificConfig();
if ( audioObjectType == 12 )
TTSSpecificConfig();
if ( audioObjectType == 13 || audioObjectType == 14 ||
audioObjectType == 15 || audioObjectType==16)
StructuredAudioSpecificConfig();
if ( audioObjectType == 17 || audioObjectType == 19 ||
audioObjectType == 20 || audioObjectType == 21 ||
audioObjectType == 22 || audioObjectType == 23 )
GASpecificConfig();
if ( audioObjectType == 24)
ErrorResilientCelpSpecificConfig();
if ( audioObjectType == 25)
ErrorResilientHvxcSpecificConfig();
if ( audioObjectType == 26 || audioObjectType == 27)
ParametricSpecificConfig();
if ( audioObjectType == 17 || audioObjectType == 19 ||
audioObjectType == 20 || audioObjectType == 21 ||
audioObjectType == 22 || audioObjectType == 23 ||
audioObjectType == 24 || audioObjectType == 25 ||
audioObjectType == 26 || audioObjectType == 27 ) {
epConfig; 2 bslbf
if ( epConfig == 2 || epConfig == 3 ) {
ErrorProtectionSpecificConfig();
}


Из этой каши как я понял мне нужно определить

AudioObjectType
samplingFrequencyIndex - мне нужно 0x3 48000Khz
channelConfiguration - 2 - стерео

Вот как это все связать с config & profile-level-id не понятно

Как они получили эти цифры?
profile-level-id=16
config=11B0


Ранее в такие дебри не влезал, но без этого не настроить правильно кодек )

AudioObjectType
A five bit field indicating the audio object type
Допустим я выбираю AudioObjectType=1(AAC Main), что значит пятибитное поле, как куда его писать?

 ,

gobot
()

Интересный вопросик)

Форум — Web-development

Заметил, что на многих сайтах сейчас есть всплывашка «у нас есть куки(внезапно!), а вы не знали?».

Ну потом:
Да, я знаю идите нах.

Или:
Ох тыж, вот херня, я и не знал что тут есть куки, наверное я должен покинуть этот сайт.

Для чего, для кого эта дичь рассчитана?

 

gobot
()

Помогите сделать импорт проекта на github

Форум — Development

Мне нужно в проекте https://github.com/ant-media/Ant-Media-Server изменить пару строчек и пересобрать все это дело. Опыт был только с проектами Android, но там сырой Java и вроде как с maven. Недолго думая установил IntelliJ Idea, скачал репозиторий, распаковал папку и сделал импорт Maven project из idea. Вроде как все импортировал, проиндексировал, но когда нажимаю Rebuild Project, то вылазит куча ошибок непонятных мне.
Типа таких

Error:(21, 33) java: cannot find symbol
  symbol:   class IScope
  location: package org.red5.server.api.scope
import org.red5.server.api.scope.IScope;

Документации по сборке вообще нет никакой. Хочу понять правильно ли я вообще начал его собирать и тем ли софтом. Подскажите с чего вообще начать

 , , , ,

gobot
()

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