LINUX.ORG.RU

Сообщения Legioner

 

Qazaqstan alǵa!

MITM для всех, даром, и пусть ничто не уйдёт зашифрованным!

Делайте ваши ставки, господа, когда Россия последует передовому примеру южного соседа и защитит своих граждан от злобных американских хакеров?

 ,

Legioner ()

Какие ICMPv6 пакеты нужно разрешить на фаерволе?

На интерфейс прилетают кучи странных пакетов со странными адресами источника и получателя вида fe80:.... Я не совсем до конца понимаю, как это всё работает, не будет ли вреда, если я запрещу весь ICMP 6 кроме пинг-запросов на мой IP? Там всякие ndp не сломаются? У меня тупо один адрес (не подсеть), сконфигурированный статически, никакими броадкастами не пользуюсь, по крайней мере осознанно. NDP мне вроде бы тоже не нужен, но я не уверен.

 ,

Legioner ()

Лишние логи в pflog

Хочу настроить pf так, чтобы логгировались все незаматченные пакеты (чтобы было видно, что я ещё не учёл). Заметил, что на интерфейсе много каких-то icmp6 пакетов и попытался их заматчить по типу. Получился такой вот набросок

set skip on lo

pass log

pass in on vio0 inet6 proto icmp6 icmp6-type {listqry listenrep neighbrsol}

Идея в том, что те пакеты, которые проходят по последнему правилу, логгироваться не должны (т.к. я не указал там log).

Однако по факту они вполне себе логгируются. Причём в правило они, вроде, попадают. Пробовал ставить quick (во втором правиле), то же самое получается. Ещё странность в том, что IP-адреса на этих пакетах по-моему вообще не принадлежат ни мне, ни роутеру, не знаю, влияет ли это на что-либо. Ещё странность в том, что с дефолтным pf.conf-ом, в котором нет никакого упоминания про log, всё равно создаётся /var/log/pflog и туда чего-то там логгирует. В общем не пойму я, как это всё работает.

Пример заматченного пакета

12:51:17.333964 rule 2/(match) pass in on vio0: fe80::225:90ff:fe04:ac74 > ff02::1:ff00:122: HBH icmp6: multicast listener report  [hlim 1]
  0000: 6000 0000 0020 0001 fe80 0000 0000 0000  `.... ..........
  0010: 0225 90ff fe04 ac74 ff02 0000 0000 0000  .%.....t........
  0020: 0000 0001 ff00 0122 3a00 0502 0000 0100  .......":.......
  0030: 8300 4240 0000 0000 ff02 0000            ..B@........
Разбирал его по байтам, вроде обычный пакет, тип 0x83 == 131 == listenrep.

Собственно сделал вообще простейший pf.log с одной строкой: set skip on lo и в логах всё равно пишутся пакеты. Причём вида 13:10:07.313586 rule def/(match) pass in on vio0: fe80::225:90ff:fea1:3104 > ff02::1:ffa1:3104: HBH icmp6: multicast listener report [hlim 1], т.е. тут какое-то правило match по умолчанию стоит. Что за правило такое, где его можно найти и как отключить?

 , , ,

Legioner ()

Как сделать красивый бэкап конфигурации?

Система RHEL/CentOS. В идеале хочется следующего:

скрипт pre:

yum install -y p1 p2 p3 ...

далее идут модификации конфигурационных файлов

patch /etc/f1 -i ./etc/f1.diff
...
cp ./etc/f2 /etc/f2

далее идёт скрипт post:

firewall-cmd --permanent --add-service=http
systemctl enable bla
...

В общем грубо говоря то, что сделал бы человек, настраивая сервер по какой-то инструкции. Но всё скриптуемо и все эти скрипты наглядные. И хочется этот скрипт сгенерировать из текущего сервера. Например взять список пакетов, найти те пакеты, которые были установлены после установки minimal ОС, написать на них yum install, пройтись по /etc и сравнить файлы с теми, что в rpm, если файла нет, значит он копируется, если файл есть, значит делаем diff, если файла нет, а в rpm есть, значит удаляем.

Конечная цель - получить бэкап, но не тупо блоб или весь /etc а, так сказать, наглядный бэкап, в котором хорошо видно, что сделано. Но в то же время такой бэкап, который можно накатить на свежий сервер и он будет идентичен тому, с которого сняли бэкап.

Возможно есть другие подходы с похожим результатом? ansible всякие, не шарю в них, подскажите, куда копать.

 ,

Legioner ()

Минусы IPv6 NAT

Всю жизнь использовал IPv4 NAT но в принципе нынче вроде ничего не мешает использовать IPv6 NAT. Из плюсов - во-первых доступ к, собственно, IPv6 серверам, во-вторых большое адресное пространство позволяет делать всякие прикольные штуки вроде тривиального отображения onion-адресов. Ну главный минус очевиден - нельзя принимать соединения из интернета без проброса порта, это понятно. Есть какие-то ещё неочевидные минусы и проблемы? Использовать планируется современные ОС вроде Windows 10, iOS 12, Android 9 и тд, вроде у них уже IPv6 должен быть нормально реализован.

 ,

Legioner ()

Непонятные ошибки в таблице роутинга ipv6

Centos 7.6, интерфейс настраивал через nmcli просто указав адрес с подсетью и шлюз. Вывод nmcli:

[root@msk ~]# nmcli
eth0: connected to eth0
        "Red Hat Virtio"
        ethernet (virtio_net), 52:54:00:18:80:F7, hw, mtu 1500
        ip4 default, ip6 default
        inet4 194.113.107.147/32
        route4 194.113.107.147/32
        route4 194.113.107.129/32
        route4 0.0.0.0/0
        inet6 2a07:14c0:1:1810:550:5e4d:9634:1cf1/64
        inet6 fe80::66ee:1640:67cc:5d0c/64
        route6 2a07:14c0:1:1810::/64
        route6 ff00::/8
        route6 fe80::/64
        route6 ::/0

lo: unmanaged
        "lo"
        loopback (unknown), 00:00:00:00:00:00, sw, mtu 65536

DNS configuration:
        servers: 1.1.1.1
        interface: eth0

Если написать ip -6 route, выходит что-то непонятное:

unreachable ::/96 dev lo metric 1024 error -113 pref medium
unreachable ::ffff:0.0.0.0/96 dev lo metric 1024 error -113 pref medium
unreachable 2002:a00::/24 dev lo metric 1024 error -113 pref medium
unreachable 2002:7f00::/24 dev lo metric 1024 error -113 pref medium
unreachable 2002:a9fe::/32 dev lo metric 1024 error -113 pref medium
unreachable 2002:ac10::/28 dev lo metric 1024 error -113 pref medium
unreachable 2002:c0a8::/32 dev lo metric 1024 error -113 pref medium
unreachable 2002:e000::/19 dev lo metric 1024 error -113 pref medium
2a07:14c0:1:1810::/64 dev eth0 proto kernel metric 100 pref medium
unreachable 3ffe:ffff::/32 dev lo metric 1024 error -113 pref medium
fe80::/64 dev eth0 proto kernel metric 100 pref medium
default via 2a07:14c0:1:1810::1 dev eth0 proto static metric 100 pref medium
При этом ipv6 нормально работает, пинги туда-сюда идут по крайней мере. Хотелось бы понять, что это там такое в таблице роутинга, что за ошибки и откуда.

 , ,

Legioner ()

Посмотреть, что было сделано после установки

Есть Ubuntu 18.04, в которой после установки что-то сделали. Хочется понять: 1. Список пакетов, который был установлен установщиком (вероятно минимальный). 2. Список пакетов, который был установлен после установки. 3. Список изменённых файлов (т.е. тех файлов, которые отличаются от файлов в пакетах, добавленных, удалённых и тд).

Как такое сделать?

 

Legioner ()

Оставлю для гугла: online.net ipv6 ubuntu 18.04

Тут поковырялся с сабжем, там не всё так просто, как кажется, в итоге вроде разобрался, напишу тут, может кому поможет. В панели получаете сеть /48, при желании делите на подсети, я себе зароутил всю /48. Придумываете себе любой адрес с вашим префиксом, я просто сделал hexdump -n 10 /dev/urandom. Далее пишете такие конфиги и скрипты (где dhcp6.client-id там будет ваш DUID из панели управления):

root@onl:~# cat /etc/netplan/01-netcfg.yaml
# This file describes the network interfaces available on your system
# For more information, see netplan(5).
network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s20:
      dhcp4: yes
      addresses:
        - 2001:bc8:3d28:511a:4670:c4d4:18ba:6998/48

root@onl:~# cat /etc/dhcp/dhclient-6.conf
interface "enp0s20" {
    send dhcp6.client-id 00:xx:xx:xx:xx:xx:xx:xx:xx:77;
}

root@onl:~# cat /etc/systemd/system/dhclient-6.service
[Unit]
Wants=network-pre.target
After=network-pre.target
Before=systemd-networkd.service

[Service]
Type=forking
PIDFile=/run/dhclient-6.pid
ExecStart=/sbin/dhclient -6 -P -pf /run/dhclient-6.pid -cf /etc/dhcp/dhclient-6.conf enp0s20

[Install]
WantedBy=multi-user.target

ну и стандартно

systemctl daemon-reload
systemctl enable dhclient-6
systemctl reboot

вроде нормально работает. Долго ковырялся пытаясь сделать по уму, через этот netplan с networkd но не осилил, кажется не умеют они такого, пришлось колхозить запуск dhclient отдельным сервисом. Если вдруг кто подскажет, как это сделать кошерно, буду благодарен.

 , ,

Legioner ()

CentOS: WARNING jump label: negative count!

При загрузке пишется что-то вроде

WARNING: CPU: 0 PID: 0 at kernel/jump_label.c:90 __static_key_slow_dec+0xa6/0xb0
jump label: negative count!
Modules linked in:
CPU: 0 PID: 0 Comm: swapper/0 Not tainted 3.10.0-957.12.2.el7.x86_64 #1
Hardware name: Online Labs SR/SR, BIOS 00.00.00.0012 01/17/2018
Call Trace:
 [<ffffffff90d63041>] dump_stack+0x19/0x1b
 [<ffffffff906976e8>] __warn+0xd8/0x100
 [<ffffffff9069776f>] warn_slowpath_fmt+0x5f/0x80
 [<ffffffff907b3d16>] __static_key_slow_dec+0xa6/0xb0
 [<ffffffff907b3d42>] static_key_slow_dec+0x22/0x50
 [<ffffffff90640bce>] arch_smt_update+0x7e/0x110
 [<ffffffff913954f9>] check_bugs+0x2de/0x33a
 [<ffffffff9138619d>] start_kernel+0x422/0x46c
 [<ffffffff91385b7b>] ? repair_env_string+0x5c/0x5c
 [<ffffffff91385120>] ? early_idt_handler_array+0x120/0x120
 [<ffffffff9138572f>] x86_64_start_reservations+0x24/0x26
 [<ffffffff91385885>] x86_64_start_kernel+0x154/0x177
 [<ffffffff906000d5>] start_cpu+0x5/0x14

Что это и стоит ли беспокоиться? Появилось вроде после обновления ядра на эту уязвимость MDS. CentOS 7, Atom C2350.

 ,

Legioner ()

На что влияет галочка Enable SELinux в CentOS 7?

В инсталлере есть галочка Enable SELinux. На что она влияет в конечной системе? Конкретно интересует, как его правильно включить после установки, если галочка была снята.

Про /etc/selinux/config SELINUX=disabled поменять на enforcing знаю. Ещё на что-то может влиять?

 ,

Legioner ()

Почему в торрентах не раздают видео, аудио и субтитры отдельно?

Качаю, например, GoT с какого-нибудь трекера. Если бы всё было как в сабже, я легко мог бы это раздавать на том же рутрекере, звуковые дорожки на сотню мегабайтов подкачались бы и всё, а основной размер в видеопотоке оставался бы в оригинальном файле (например хардлинками). Да и в целом все эти странные форматы вроде матроски просто не нужны, положить в папочку все нужные файлики и всё! Какие ещё матроски.

 ,

Legioner ()

Скрипт для билда: обновление во время билда

Делаю скрипт, который будет дёргаться при изменении в репозитории. Смысл в том, чтобы сделать pull, собрать новую версию, установить куда положено. Как обрабатывать ситуацию, когда событие произошло во время билда? Второй билд запускать не хочу. Собственно хочу, чтобы билд дошёл до конца, а потом запустился ещё раз, сбилдив на сей раз последнюю версию.

Пока делаю примерно так:

if [ -e build-in-progress ]; then
  touch rebuild
  exit
fi
touch build-in-progress
...
if [ -e rebuild ]; then
  rm rebuild
  exec $*
fi
rm build-in-progress

но как-то всё это ненадёжно, всякие там гонки могут быть, если запрос придёт прям в то время, когда проверка выполняется.

Есть ли какой-нибудь способ сделать это всё по уму, который будет работать железобетонно?

 

Legioner ()

Ищу VPS, который даёт маршрутизируемую /56 IPv6 подсеть

Собственно сабж. Очень желательно Нидерланды, но в крайнем случае можно и другие европейские страны, можно и российский, если на их серверы не действует великий российский фаервол.

Из известных мне: online.net вроде бы, но там нужно покупать дорогой выделенный сервер, зато даёт /48 на аккаунт. Вроде хвалили linode но просто так не дают, просят обосновать, я попросил, они вроде и не отказывают но автоматом не дают, а настаивать я стесняюсь.

PS неужели IPv6 такой дорогой? У меня сервер с IPv4 арендуется меньше чем за евро в месяц (по акции, правда, но сомневаюсь, что они в минус работают). Я бы тот же бакс в месяц за /48 платил без проблем.

 ,

Legioner ()

Очередной поиск замены микросерверу

В очередной раз интересуюсь заменой Microserver Gen8. Сейчас придумал такой план. Во-первых есть бесшумные компьютеры маленького фактора (вроде Intel NUC, но других производителей), даже без вентиляторов есть. Во-вторых сегодня обнаружил такой класс продуктов, как SATA Backplane. Как я понял, это во-первых корзина для дисков, во-вторых там сзади стоит какая-то микросхема, которая магическим образом соединяет все диски в один шнурок и втыкается куда-то там в компьютер. Информации по такому чудо устройству мало и хотелось бы почитать более детально, если кто знает:

1. Я вообще правильно пишу или что-то путаю?

2. Как это подключается? Можно ли подключить по USB? Для четырёх дисков требуется немалое питание, как его подключать?

3. Требуется ли специальное охлаждение для четырёх дисков? Никогда этим не заморачивался, но четырёх дисков в ряд у меня и не было. В идеале хочется, чтобы всё работало без единого вентилятора. Диски обычные HDD 3.5 класса WD Red или подобного (5400 оборотов в секунду).

4. Как линукс увидит всё это? Просто как 4 обычных диска, а дальше уже моё дело? Не потребует ли это каких-нибудь треклятых проприетарных драйверов?

5. Есть ли дешёвые способы сделать удалённое управление для не-сервера? Т.е. чтобы я мог установить Linux тот же по сети, не таская монитор с клавиатурой туда-сюда?

 ,

Legioner ()

Простой неблокирующий HTTP-стек для Java

Есть ли такой в природе? В первую очередь интересен Android. Вроде nio есть, то бишь неблокирующий код можно писать, но популярная библиотека Volley держит пул потоков (ещё и довольно маленький) для каждого запроса. В том числе DNS, я так понимаю, он по дефолту в жаве блокирует поток, поэтому нужна альтернативная реализация. Какая-то странная ситуация выходит. Ладно серверы, там гонять потоки не проблема, а в мобильном приложении во-первых неблокирующий АПИ позволит убрать всю синхронизацию, т.к. всё будет в одном потоке, во-вторых там же вроде как в принципе должны все экономить циклы, а тут пускаем кучу потоков, жрём память, не нужно ведь всё это. Интересует и сервер и клиент (HTTP везде примерно одинаковый, поэтому по идее разницы большой не должно быть).

 , , ,

Legioner ()

Продвинутый HTML видеоплеер

В очередной раз пытаюсь построить удобную систему для просмотра видео с NAS на телевизоре.

Что мне не нужно: комбайны вроде Emby или Plex.

Что мне нужно: 1. Серверная часть, которая умеет на лету ремуксить файл как положено. Естественно посредством ffmpeg и очень желательно именно на лету, без всяких предобработок по 5 минут. Естественно с оффсетами, то бишь если я перематываю в конец, чтобы там тоже перезапустился процесс. 2. Клиентская часть, которая умеет это всё запрашивать и показывать.

Телевизор умеет показывать всё, что ему скормишь через стандартный HTML-плеер. В плане кодеков. То бишь никакой причины перекодировать что-либо нет. Всё, что надо: сремуксить исходный файл в mkv-поток с выбранным аудио-потоком. Дальше он разберётся. Это раз. Субтитры он умеет только в vtt, субтитры из mkv вытаскивать дело геморное, в общем и целом я считаю, что субтитры нужно прикручивать сверху, тем более, что в качественных релизах субтитры во всяких графических форматах вроде pgs, которые, естественно, хочется показывать как положено: люди стараются, выбирают цвета, позиционирование.

Что я делаю сейчас: если нужный мне аудиопоток не дефолтный, делаю ремукс, иначе кормлю mkv файл как есть. Делаю тупо малюсенький HTML руками, в котором указываю этот файл и vtt. Если субтитры в PGS, вытаскиваю их, делаю перекодирование какой-то жаваутилитой в XML+PNG и простым жаваскриптом показываю поверх видео. В принципе работает, но это всё из дерьма и палок, как говорится. Хочется цельного приятного опенсорс решения.

Озаботился ли кто-то таким или я первый, кому такое в голову пришло? Давно хочу это всё сделать в нормальном виде, вроде всё просто, но нюансов много. Особенно если на входе DVD или BDMV файлы, там, конечно, вообще хочется полноценный интерпретатор этого хозяйства на JavaScript, с менюшками и всем таким, но это, конечно, уже совсем другой уровень. Пока можно и mkv обойтись.

Всякие DLNA лесом, не понимаю я, как оно работает, и понимать не хочу.

 

Legioner ()

VPS в нидерландах дешевле $3.5 в месяц

Есть vultr: 10 GB SSD, 1 CPU, 512 MB, 0.50 TB, $3.50/mo. Накидайте варианты получше.

 

Legioner ()

Кошерный способ распространять APK кому положено

Есть приложение, которое не интересно широкой публике (не секретное, но предназначено для определённых клиентов). Как его правильней распространять? Если просто засунуть в Google Play, то его будет качать кто попало, само по себе пофиг, конечно, но это визуальный мусор, ещё какие-нибудь отзывы и рейтинги начнут ставить, в общем ни к чему. Если просто давать скачивать APK с сайта, то не будет автоматического обновления, к тому же вроде бы в Google Play заливаются краши? В общем какую-то ценность этот Play вроде несёт. Я так понял, там есть какие-то корпоративные каналы, но тут не понятно, сами устройства будут обычные без всяких там управлений. Т.е. в идеале должен быть доступ по ссылке, чтобы оно не показывалось в поисках и тд, а только тем, кто зашёл по прямой ссылке, отключены всякие там рейтинги и прочее.

 

Legioner ()

Любителям перевешивать ssh на другой порт

Серверу один день. Глянул интереса ради

94.191.44.208 - - [19/Feb/2019:16:12:39 +0600] "GET /cacti/plugins/weathermap/editor.php HTTP/1.1" 404 169 "-" "Mozilla/5.0 (Windows NT
94.191.44.208 - - [19/Feb/2019:16:12:39 +0600] "POST /wuwu11.php HTTP/1.1" 404 571 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537
94.191.44.208 - - [19/Feb/2019:16:12:39 +0600] "POST /xw.php HTTP/1.1" 404 571 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
94.191.44.208 - - [19/Feb/2019:16:12:40 +0600] "POST /xw1.php HTTP/1.1" 404 571 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
94.191.44.208 - - [19/Feb/2019:16:12:42 +0600] "POST /9678.php HTTP/1.1" 404 571 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.3
94.191.44.208 - - [19/Feb/2019:16:12:43 +0600] "POST /wc.php HTTP/1.1" 404 571 "-" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36
149.202.191.218 - - [19/Feb/2019:16:12:43 +0600] "\x15\x03\x01\x00\x02\x02P" 400 173 "-" "-" "-"
149.202.191.218 - - [19/Feb/2019:16:12:43 +0600] "\x15\x03\x01\x00\x02\x02P" 400 173 "-" "-" "-"
и такого сотни. На какой порт nginx перевешиваете? :)

 

Legioner ()

Как правильно дробить андроид приложение на опциональные модули?

Сейчас получается, что я сую в приложение кучу всякого мусора. Китайский SDK для RFID-сканера, Zebra SDK для принтера. В итоге ради того, чтобы работала одна кнопочка, приложение пухнет на десяток jar-ок и несколько мегабайтов, ещё и на других платформах запускается с костылями. Тот же proguard нифига не работает, я уж не стал разбираться почему, он мне там простыню выстлал под сотню строк ошибок.

В общем хочется модульности. Чтобы был основной проект и в каком-то виде его компоненты. Если у человека зебровский принтер - ставит компоненту.

По каким словам гуглить такие техники? Вообще на практике я, как юзер, такого пока не видел. Я предполагаю, что мне надо делать отдельные apk, которые будут содержать в себе сервисы специально для моего приложения, а приложение потом будет взаимодействовать с этими сервисами, правильно?

 

Legioner ()

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