LINUX.ORG.RU

Сообщения AngryElf

 

Подбираю камеры для видеонаблюдения

Ищу камеры для уличного видеонаблюдения. В системе хотелось бы иметь 2-4 камеры, врядли больше. Софт наколхозю сам (опыт есть), нужно именно железо.

Требования - IP, уличные, POE не принципиален, ночные. Разрешение хотелось бы хотя бы HD для фоток, 640x480 для видео. Т.е. ничего запредельного. Проблема в бюджете - базовые камеры hikvision и конкурентов - начинаются от 100 баксов за штуку. Китайские «аналоги» начинаются от 20-30 баксов, но качество там аховое. Причем, проблема не в железе, а в глюкодромном софте, китайском интерфейсе и плагинах для IE6 для доступа к картинке. Да, везде, как правило, можно выковырять видео по секретному урлу rtsp, но хотелось бы минимально рабочий веб-интерфейс. Те что мне попадались - был просто ад, требовали свою утилиту (для винды) для настройки, onvif был очень условный, некоторые тупо не умели DHCP и т.п.

С другой стороны, для RPI есть камеры в CSI-порт, даже ночные, в пределах 20-30 баксов. Что в сумме с самой RPI дают и процессорные ресурсы для обработки видео, например, и всё еще дешевле базовых hikvision (корпус, допустим, напечатаю на 3д-принтере).

Итого, несколько конкретных вопросов:

1. Есть ли качественные уличные ночные IP-камеры ценой до 100 баксов за штуку?
2. На сколько хорошо работают CSI-камеры на RPI?

 , , , ,

AngryElf ()

Иконка в статусбар со статусом gsm-модема

Ищу софтину, которая будет молча висеть в статусбаре lxde и отсвечивать туда статус подключения к интернету через модем. Ну как на телефонах обычно - уровень сигнала там, название сети, роуминг, может трафик туда-сюда, что б понимать, что связь есть.

Есть что-то такое (хоть что-то из перечисленного)? Нужно для Raspberry, так что хотелось бы не требовательное к ресурсам.

Пока нарыл AT-команды для искомого или gammu, в консольке, опять же. Садиться писать, что ли?

 ,

AngryElf ()

Проектирование с допусками при печати на 3д-принтере (FreeCAD)

Я немножко занимаюсь 3D-печатью и столкнулся с необходимостью печатать точные размеры, для последующего соединения обьектов. Условно, что б крышка надевалась на коробочку, защелкиваясь в нужны пазы.

Эмпирически выяснилось, что деталь всегда выступает примерно за половину размера сопла. Т.е. при сопле 0.5мм, деталь становится толще на 0.2мм по каждой выступающей грани. Т.е. если я хочу сделать отверстие 5мм и шпильку 5мм, которая будет туда входить, диаметр отверстия должен быть больше на 0.4мм (2 раза по 0.2мм), а диаметр шпильки - меньше на 0.4мм.

Для дизайна я использую freecad. Я нашел вариант, при котором я задаю допуски в spreadsheet, а потом, при выставлении constraint указываю их формулой, условно, как 5мм базового диаметра минус 2x0.2mm (ссылкой на ячейку). Потом, если надо, я могу подкрутить в ячейке допуски.

Но это всё не очень удобно, потому что вместо быстрого ввода размеров приходится каждый раз вводить формулу. Может есть более простой вариант, который я не знаю?

 

AngryElf ()

Оконный менеджер с виртуальными экранами на несколько физических мониторов

Гуглить трудно (или не знаю кивордов), поэтому спрашиваю у всезнающего ALL.

Есть желание подключить второй монитор (а там и третий, четвёртый и т.д.). Но обычная конфигурация в X-ах - когда второй монитор растягивает картинку, т.е. увеличивает виртуальный экран собой. Соответственно, если я переключаюсь с первого десктопа на второй, на обоих мониторах меняется картинка.

Хотелось бы другого поведения. Например, что б первые 6 виртуальных десктопов переключались на одном мониторе, а следущие 2, например, на другом.

Пример
1. Изначальная ситуация - на первом мониторе десктоп1. На втором мониторе - десктоп7.
2. Жму Alt-2. На первом мониторе появляется десктоп2, на втором остаётся десктоп7.
3. Жму Alt-8. На первом мониторе остаётся десктоп2, на втором появляется десктоп8.

Такое вообще бывает?

Я встречал костыли, вида запуска двух X-серверов, каждый на своем мониторе (или даже видеокарте), с пробросом мышки туда-сюда через какой-то костыль. Неужто без костылей никто ничего не сделал и почему? Вдруг я сяду какой-нить wm допилить до нужного состояния (если ничего нету, то придется садиться, видимо). Казалось бы, у WM есть виртуальный экран, а окна надо всего лишь ограничивать геометрией мониторов, а дальше простая логика группировки десктопов и привязки их к мониторам.

 , ,

AngryElf ()

Диагностика ipv6

Раз уж тут у RIPE опять кончились v4, вопрос про v6 :)

Конфигурация домашней сети у меня такая:

  1. Модем (DOCSIS) провайдера, с NAT.
  2. Apple Timecapsule (NAT) в качестве роутера.
  3. Домашняя сеть.

До недавнего времени ipv6 от провайдера работал как-то автоматом. На таймкапсуле я включил «нативный ipv6» и «шарить ipv6» и всё заработало - оно получало какой-то префикс от модема провайдера и раздавало его по локальной сети.

Недавно мне поменяли модем провайдера на другой, типа для гигабита (было 500мегабит). ipv6 остался, но только когда подключаюсь напрямую к модему. Таймкапсула ipv6 от провайдера больше не видит. Точнее, в настройках (их там мало очень), показывает некий ipv6-префикс, но ничего по сети не раздаёт. Если я подключаюсь к модему провайдера напрямую, то получаю ipv6-адрес из совсем из другого диапазона. Не понятно, то ли таймкапсула запомнила старый v6-адрес, то ли получает невесть что, но не может раздавать, хз.

На сколько я помню, в v6 была опция, когда провайдер шлет несколько диапазонов v6 даунлинкам, один /64, мол, роутеру для своих целей и еще /64 или больше - для раздачи по локалке. Может у меня эта ситуация и таймкапсуле чего-т не хватает для полного счастья (например, длины префикса)?.

Как это вообще дебажить? Может есть какие-то тулзы, показывающие внятно, что происходит? Или запрягать wireshark и листать талмуды?

 ,

AngryElf ()

Разные DPI внутри разных окон - скачет размер курсора

После последнего апгрейда иксов, началась пляска с DPI. Эффект настолько стрёмный, что затрудняюсь сформулировать запрос в гугль, поэтому ничего толком найти не могу.

Пример: http://elfov.net/tmp/2/xorg.mp4

На примере, я перетаскиваю курсор из окна браузера (chromium) на десктоп и обратно.

Десктоп - lxde (openbox).

Я игрался, выставляя разный DPI, но не то что б это сильно помогало. Я так понимаю, это какая-то новая фича xorg (стоит 1.20.5).

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

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

Я так понимаю, что где-то на этапе загрузки выставляется DPI, а потом некоторые проги (chromium, Telegram, vivaldi) выставляют себе другой DPI. Как узнать, какой у них стоит? Может где-то в /proc? Или какой-нить вариант xprop?..

 ,

AngryElf ()

Qemu - рассинхронизация времени с хостом

Наблюдаю сильную рассиинхронизацию времени внутри kvm (qemu) с хостом.

qemu запускается так:

qemu-system-x86_64 -net bridge,br=brqemu -net nic,model=virtio,macaddr=xx:xx:xx:00:00:03 -enable-kvm \
 -drive file=/dev/storage/kvm-root,if=virtio \
 -drive file=/dev/storage/kvm-home,if=virtio -m 4096 -vnc 127.0.0.1:0 -kernel bzImage -append root=/dev/vda

Т.е. ничего про rtc нету, в надежде на дефолты. Был -smp 6, потом убрал, не помогло (кому-то в гугле помогало, я надеялся на то же).

Версия qemu - 3.1.0, до этого была 2.3.0, с тем же эффектом.

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

Скорость рассинхрона - 1 миллисекунда за секунду, что как-то дохера, по-моему. Т.е. буквально запускаешь ntpdate -q pool.ntp.org и на каждом запуске видишь, как уплывает время в даль.

Ещё данные:

# ntpq -c rv
associd=0 status=c018 leap_alarm, sync_unspec, 1 event, no_sys_peer,
version="ntpd 4.2.8p13@1.3847-o Mon Sep 16 09:36:00 UTC 2019 (1)",
processor="x86_64", system="Linux/3.18.12-gentoo", leap=11, stratum=16,
precision=-10, rootdelay=0.000, rootdisp=47.745, refid=STEP,
reftime=(no time),
clock=e12b1e52.0e2f50b6  Tue, Sep 17 2019 10:56:50.055, peer=0, tc=6,
mintc=3, offset=0.000000, frequency=56.721, sys_jitter=0.976562,
clk_jitter=0.977, clk_wander=0.000

При старте ntpd в логах ошибка:

Sep 17 10:58:15 qemu-03 ntpd[9231]: kernel reports TIME_ERROR: 0x6041: Clock Unsynchronized
Sep 17 10:58:15 qemu-03 ntpd[9231]: kernel reports TIME_ERROR: 0x6041: Clock Unsynchronized

Какое-то время ntpd пытается синхронизировать часы (бывает stratum 3), но потом уходит в stratum 16 и всё.

(ntpd запущен пару минут назад):

# ntpq -c pe 

     remote           refid      st t when poll reach   delay   offset  jitter
==============================================================================
 stratum2-2.NTP. 129.70.130.71    2 u    6   64    3   15.934  1019.81 788.720
 stratum2-4.NTP. 129.70.130.70    2 u    5   64    3   14.933  1042.84 811.482
 sv1.ggsrv.de    205.46.178.169   2 u    3   64    3    0.977  1099.32 855.223
 server1.sim720. 193.190.230.65   2 u    4   64    3    0.977  1089.37 835.586

Куда вообще копать и что с этим можно сделать? Тупо обновляться до последних версий ядра и qemu в надежде на фикс не хочется, хотелось бы знать причину.

Ядро на хосте: 3.18.11

Ядро на kvm: 3.18.12

 ,

AngryElf ()

Поругайте схему: haproxy + varnish

Здравствуй, All.

Решил поднять кэширующий прокси для веб-сервиса. Остановился на varnish (раньше с ним не работал вообще, ну, разве что 500-е ошибки видел с ним).

Хочу поднять следущий конфиг:

На 80-м порту - varnish. На 443-м порту - haproxy.

Дальше есть множественные бэкенды (апач, к слову). Лоад-балансер для бэкендов сделан средствами haproxy.

Хочу сделать так:

80-й порт: varnish -> haproxy_backends -> backend1/backend2/.../backendN.

443-й порт: haproxy -> varnish -> см. выше.

Почему хочу лоадбалансер на haproxy - банально приятнее его веб-админка, по сравнению с консольными тулзами varnish. Haproxy, как минимум, уже есть, настроен, освоен и работает как надо.

Чем нравится эта схема:

1. минимум вмешательств по сравнению с текущей (сейчас просто haproxy с 80/443 шлют запросы на бэкенды).

2. varnish вообще опционален (настрою haproxy, что б был fallback на свои же бэкенды, если varnish не отвечает).

На какие подводные камни я могу напороться и почему так никто не делает? :)

 , ,

AngryElf ()

ЛОР на ipv6 - когда?

Когда уже у linux.org.ru появится AAAA? Перед пацанами должно быть стыдно.

 

AngryElf ()

ipv6-туннель. Что сейчас модно?

Sixxs - RIP.

HE требует, что б у меня был белый ipv4-адрес (геморройно получать его у моего провайдера).

Что еще модно сейчас? Желательно, vpn/sixxs-like, т.е. без наличия публичного v4-адреса (за двойным NAT'ом я)

P.S. Географически - Чехия (устраивает выходная точка в западной европе).

 ,

AngryElf ()

ipv6 роутинг /126 на виртуалку

Получаю от хостера /64, хочу привязать v6-адрес к виртуалке на этом же хосте.

Конфиг выглядит так:

server eth0 - XXX::2/64

server tap1 - XXX::101/126

server routes:

XXX::100/126 dev tap1  proto kernel  metric 256  pref medium
XXX::/64 dev eth0  proto kernel  metric 256  pref medium
fe80::/64 dev eth0  proto kernel  metric 256  pref medium
fe80::/64 dev tap1  proto kernel  metric 256  pref medium
ff00::/8 dev eth0  metric 256  pref medium
ff00::/8 dev tap1  metric 256  pref medium
default via XXX::1 dev eth0  metric 1024  pref medium

qemu eth0 - XXX::102/126

qemu routes:

XXX::100/126 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
fe80::/64 dev eth0  proto kernel  metric 256  mtu 1500 advmss 1440 hoplimit 4294967295
default via XXX::101 dev eth0  metric 1024  mtu 1500 advmss 1440 hoplimit 4294967295

с сервера доступен адрес как на tap1, так и внутри qemu с qemu доступны адреса сервера (XXX::2, XXX::101), но не доступно ничего дальше.

С внешнего мира доступен только адрес сервера на eth0 (XXX::2), но не доступны на tap1 (XXX::101) и внутри qemu.

Выглядит, как будто отключен форвардинг, но он включен:

net.ipv6.conf.all.forwarding = 1

При попытке пинга хоста внутри qemu или адреса на tap1, в tcpdump вижу:

12:46:53.281508 IP6 fe80::fa:55ff:fe00:2123 > ff02::1:ff00:102: ICMP6, neighbor solicitation, who has XXX::102, length 32

При этом, адрес fe80::fa:55ff:fe00 - вообще не мой, а роутера провайдера, что ли...

iptables/ip6tables пустой, всё ACCEPT.

Куда копать?

 ,

AngryElf ()

SSD при смерти?

smartctl -a:


smartctl 6.4 2015-06-04 r4109 [x86_64-linux-4.1.15-gentoo-r1] (local build)
Copyright (C) 2002-15, Bruce Allen, Christian Franke, www.smartmontools.org

=== START OF INFORMATION SECTION ===
Model Family:     Crucial/Micron MX100/MX200/M5x0/M600 Client SSDs
Device Model:     Crucial_CT500MX200SSD1
Serial Number:    160211756B50
LU WWN Device Id: 5 00a075 111756b50
Firmware Version: MU03
User Capacity:    500 107 862 016 bytes [500 GB]
Sector Sizes:     512 bytes logical, 4096 bytes physical
Rotation Rate:    Solid State Device
Form Factor:      2.5 inches
Device is:        In smartctl database [for details use: -P show]
ATA Version is:   ACS-3 T13/2161-D revision 4
SATA Version is:  SATA 3.2, 6.0 Gb/s (current: 6.0 Gb/s)
Local Time is:    Mon Mar 27 09:49:33 2017 CEST
SMART support is: Available - device has SMART capability.
SMART support is: Enabled

=== START OF READ SMART DATA SECTION ===
SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.
No failed Attributes found.

General SMART Values:
Offline data collection status:  (0x85)	Offline data collection activity
					was aborted by an interrupting command from host.
					Auto Offline Data Collection: Enabled.
Self-test execution status:      (  64)	The previous self-test completed having
					a test element that failed and the test
					element that failed is not known.
Total time to complete Offline 
data collection: 		( 1389) seconds.
Offline data collection
capabilities: 			 (0x7b) SMART execute Offline immediate.
					Auto Offline data collection on/off support.
					Suspend Offline collection upon new
					command.
					Offline surface scan supported.
					Self-test supported.
					Conveyance Self-test supported.
					Selective Self-test supported.
SMART capabilities:            (0x0003)	Saves SMART data before entering
					power-saving mode.
					Supports SMART auto save timer.
Error logging capability:        (0x01)	Error logging supported.
					General Purpose Logging supported.
Short self-test routine 
recommended polling time: 	 (   2) minutes.
Extended self-test routine
recommended polling time: 	 (   7) minutes.
Conveyance self-test routine
recommended polling time: 	 (   3) minutes.
SCT capabilities: 	       (0x0035)	SCT Status supported.
					SCT Feature Control supported.
					SCT Data Table supported.

SMART Attributes Data Structure revision number: 16
Vendor Specific SMART Attributes with Thresholds:
ID# ATTRIBUTE_NAME          FLAG     VALUE WORST THRESH TYPE      UPDATED  WHEN_FAILED RAW_VALUE
  1 Raw_Read_Error_Rate     0x002f   100   100   000    Pre-fail  Always       -       0
  5 Reallocate_NAND_Blk_Cnt 0x0032   100   100   010    Old_age   Always       -       0
  9 Power_On_Hours          0x0032   100   100   000    Old_age   Always       -       9546
 12 Power_Cycle_Count       0x0032   100   100   000    Old_age   Always       -       4
171 Program_Fail_Count      0x0032   100   100   000    Old_age   Always       -       0
172 Erase_Fail_Count        0x0032   100   100   000    Old_age   Always       -       0
173 Ave_Block-Erase_Count   0x0032   001   001   000    Old_age   Always       -       2000
174 Unexpect_Power_Loss_Ct  0x0032   100   100   000    Old_age   Always       -       2
180 Unused_Reserve_NAND_Blk 0x0033   000   000   000    Pre-fail  Always       -       5577
183 SATA_Interfac_Downshift 0x0032   100   100   000    Old_age   Always       -       0
184 Error_Correction_Count  0x0032   100   100   000    Old_age   Always       -       0
187 Reported_Uncorrect      0x0032   100   100   000    Old_age   Always       -       0
194 Temperature_Celsius     0x0022   055   047   000    Old_age   Always       -       45 (Min/Max 23/53)
196 Reallocated_Event_Count 0x0032   100   100   000    Old_age   Always       -       0
197 Current_Pending_Sector  0x0032   100   100   000    Old_age   Always       -       0
198 Offline_Uncorrectable   0x0030   100   100   000    Old_age   Offline      -       0
199 UDMA_CRC_Error_Count    0x0032   100   100   000    Old_age   Always       -       0
202 Percent_Lifetime_Used   0x0030   000   000   001    Old_age   Offline  FAILING_NOW 100
206 Write_Error_Rate        0x000e   100   100   000    Old_age   Always       -       0
210 Success_RAIN_Recov_Cnt  0x0032   100   100   000    Old_age   Always       -       0
246 Total_Host_Sector_Write 0x0032   100   100   000    Old_age   Always       -       82976267424
247 Host_Program_Page_Count 0x0032   100   100   000    Old_age   Always       -       2611998525
248 Bckgnd_Program_Page_Cnt 0x0032   100   100   000    Old_age   Always       -       64509752994

SMART Error Log Version: 1
No Errors Logged

SMART Self-test log structure revision number 1
Num  Test_Description    Status                  Remaining  LifeTime(hours)  LBA_of_first_error
# 1  Short offline       Self-test routine in progress 90%      9522         -
# 2  Vendor (0xff)       Completed without error       00%      7688         -

SMART Selective self-test log data structure revision number 1
 SPAN  MIN_LBA  MAX_LBA  CURRENT_TEST_STATUS
    1        0        0  Not_testing
    2        0        0  Not_testing
    3        0        0  Not_testing
    4        0        0  Not_testing
    5        0        0  Not_testing
Selective self-test flags (0x0):
  After scanning selected spans, do NOT read-scan remainder of disk.
If Selective self-test is pending on power-up, resume after 0 minute delay.

Вроде как явно написано:

SMART overall-health self-assessment test result: FAILED!
Drive failure expected in less than 24 hours. SAVE ALL DATA.

Но смущает это:

No failed Attributes found.

Хотя вон дальше атрибут 202 говорит, что он FAILING_NOW.

Диск умер и надо срочно менять (свиду он пашет как обычно) или smart дурит?

 ,

AngryElf ()

Помогите с электротехникой

Делаю солнечную электростанцию в доме. Хочу точно считать (с красивыми графиками), сколько солнце мне «подарило». Задумано считать следующим способом:

1. Ставлю два электросчётчика, один на вход в дом, второй на выход с панелей (выходит 220V, схема подключения - grid-tie). Соответственно, снимая показатели с обоих счётчиков я могу получать потребление дома и экономию за счёт панелей.

2. Показатели снимаю с помощью Raspberry Pi, в виде импульсов, которые генерируют счётчики (по номиналу 1600 импульсов на KWh, т.е. разрешение нормальное вполне).

3. Простенькой програмкой конвертирую снятые импульсы в поток данных для InfluxDB, потом, с помощью Grafana, рисую красивые графики.

По причине полной электронеграмотности, застопорился на пункте 2 - снимать импульсы с электросчётчика. Отсих нужна помощ.

Тут (https://www.gme.cz/data/attachments/dsh.769-350.1.pdf) даташит на электросчётчик. Электроимпулсы он генерит на выходах S0+ и SO-.

Там сказано следущее (если кому лень pdf качать):

The device is equipped with an impulse output on terminals SO+ and SO-, which generates impulses proportionately according to the measured electricity. This output is used for remotely measuring electricity consumption. This impulse output is galvanically separated (by octocoupler) from internal circuits and is therefore potential-free. For correct function, it is therefore necessary to connect to the terminal SO+ supply voltage +5 VDC to 50 VDC (anode). The pulse signal can then be read on the terminal SO-. The specification is 1600 imp / kWh.

Я подключил выходы к Raspberry Pi, по схеме подключения кнопки на цифровой вход (https://www.cl.cam.ac.uk/projects/raspberrypi/tutorials/robot/buttons_and_swi...). Но что-то оно не пашет. Подозреваю, что может быть связано с тем, что в даташите счётчика написано +5..+50V, а в RPI только 3.3. Не пашет оно странно - какое-то время работало, импульсы ловились, я даже програмно нивелировал «дребезг» контактов. А потом, через пару часов (оставил на ночь) оно тупо перешло в режим «всегда закорочено» и обратно выходить не захотело. Грешил на то, что чё-то сжёг, поменял порты и rpi - не помогло. Знакомых электронщиков под рукой нету, спросить не у кого. Верю, что упираюсь в какую-нить нелепую херню.

Помогите собрать из подручных (и магазинных) деталек работающую схему. У меня есть под рукой breadboard и набор всяких резисторов и прочего, т.е. могу экспериментировать и докладывать о процессе.

 

AngryElf ()

gentoo - сервис не стартует по start, в состоянии crashed

Глупый, наверное, вопрос, особенно ввиду того, что использую Генту уже больше 10 лет, но всё же.

В Gentoo, при использовании openrc, у сервисов может быть больше состояний, чем просто started/stopped. Например, crashed. При этом, по команте /etc/init.d/example start он не стартанёт, ругнётся на то, что crashed нельзя стартануть, можно только zap'нуть.

Это создает определенную моральную дилемму - как прописывать идеологически правильно сервис в мониторинг, например, monit'ом? Там есть два параметра у сервисов - start command и stop command. При этом прописать в start-command сразу две команды через запятую («/etc/init.d/example zap; /etc/init.d/example start») не даёт ограничение синтаксиса конфигов monit. Создать свой шелл-скрипт для этой цели считаю костылём.

Как правильно делать-то? Может я просмторел в мануале какой-нить ключ к start/stop, по которому оно игнорирует/очищает состояние сервиса?

 ,

AngryElf ()

Что происходит за пару секунд до вмешательства OOM-киллера?

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

Через некоторое время (до минуты в среднем), вмешивается OOM-killer и отстреливает жрущий процесс.

При этом свопа на компьютере нету, поэтому интересно - с чем связаны тормоза? Когда был своп, всё было понятно по невыключающемуся индикатору жёсткого диска. Но без свопа причина тормозов не понятна абсолютно. Память либо есть, либо нету. Если нету, oom-killer должен сделать, что есть. Чего тормозит тогда всё?

 ,

AngryElf ()

TOTP в качестве первого и единственного фактора аутентификации

Time-based OTP - удобная штука. Но, почему-то, всегда используется только в качестве второго фактора аутентификации.

Есть ли какие-нибудь предпосылки не использовать одноразовые пароли, основанные на времени, в качестве первого и единственного фактора?

Речь не идёт о банковском секторе, важной электронной почте и т.п.

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

Да, я в курсе про методики типа «добавлять к паролю суффикс из домена» и т.п., но это всё полумеры.

Если у меня есть уверенность, что телефон не попадёт в руки злоумышленников, а даже если попадёт, я всегда могу пойти и физически на сервере сбросить все пароли, то что меня должно ограничить от использования апликации google authenticator в качестве ключа к моим сервисам?

 

AngryElf ()

Haproxy остаётся старый процесс после reload

Добрый день.

Сталкиваюсь постоянно с проблемой, что старые процессы haproxy остаются висеть на 80-м сокете после reload.

Система - debian разных версий. Например, 8.5.

Haproxy - 1.5.8, 1.6.4 (сталкивался в совсем разных версиях).

systemd, да, куда без него.

Обычная ситуация:

# cat /run/haproxy.pid 
17693


# ps auxf|grep haproxy
root      9813  0.0  0.1  12664  1552 pts/1    S+   11:33   0:00          \_ grep haproxy
haproxy  28308  0.0  0.2  42428  2944 ?        Ss   Aug30   1:13 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 23644
haproxy   4840  0.0  0.2  42428  2928 ?        Ss   Aug30   1:11 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 28315
haproxy   5477  0.0  0.2  42432  2928 ?        Ss   Aug30   1:11 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 4847
haproxy   4320  0.0  0.2  42428  2932 ?        Ss   Sep02   0:43 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 5483
haproxy  12241  0.0  0.2  42428  3064 ?        Ss   Sep02   0:42 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 4329
haproxy  20062  0.0  0.2  42428  2944 ?        Ss   Sep02   0:42 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 12249
haproxy  18867  0.0  0.2  42428  2856 ?        Ss   Sep02   0:37 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 20070
haproxy  32211  0.0  0.2  42428  3068 ?        Ss   Sep03   0:29 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 18876
haproxy    427  0.0  0.2  42428  2988 ?        Ss   Sep03   0:29 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 32217
haproxy   1779  0.0  0.2  42428  2932 ?        Ss   Sep03   0:29 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 436
haproxy  11346  0.0  0.2  42428  2928 ?        Ss   Sep03   0:26 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 1788
haproxy   6691  0.0  0.2  42432  2992 ?        Ss   Sep03   0:21 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 11354
haproxy   1876  0.0  0.2  42428  2944 ?        Ss   Sep04   0:10 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 6700
haproxy  17684  0.0  0.2  42428  2920 ?        Ss   04:30   0:04 /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /var/run/haproxy.pid -D -st 1883
root     17689  0.0  0.0   4084   628 ?        Ss   04:30   0:00 /usr/sbin/haproxy-systemd-wrapper -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid
haproxy  17692  0.0  0.6  42428  6256 ?        S    04:30   0:00  \_ /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds
haproxy  17693  0.0  0.2  42428  2928 ?        Ss   04:30   0:04      \_ /usr/sbin/haproxy -f /etc/haproxy/haproxy.cfg -p /run/haproxy.pid -Ds

При этом, каждый из них слушает на сокете 80 и отвечает:

# netstat -nlp|grep 80
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      17693/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      17684/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1876/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      6691/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      11346/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      1779/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      427/haproxy     
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      32211/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      18867/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      20062/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      12241/haproxy   
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4320/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      5477/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      4840/haproxy    
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      28308/haproxy   
unix  2      [ ACC ]     STREAM     LISTENING     136804890 20062/haproxy       /run/haproxy/admin.sock.20061.tmp
unix  2      [ ACC ]     STREAM     LISTENING     138008774 6691/haproxy        /run/haproxy/admin.sock.6690.tmp

То что отвечают разные процессы, видно тут:

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 4840</h2>
<p><b>pid = </b> 4840 (process #1, nbproc = 1)<br>

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 4320</h2>
<p><b>pid = </b> 4320 (process #1, nbproc = 1)<br>

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 18867</h2>
<p><b>pid = </b> 18867 (process #1, nbproc = 1)<br>

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 18867</h2>
<p><b>pid = </b> 18867 (process #1, nbproc = 1)<br>

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 427</h2>
<p><b>pid = </b> 427 (process #1, nbproc = 1)<br>

# curl -s http://haproxy:**********@localhost/haproxy?stats|grep pid
<h2>Statistics Report for pid 18867</h2>
<p><b>pid = </b> 18867 (process #1, nbproc = 1)<br>

Пробовал править инит-скрипт, менял флаг -sf на -st - эффекта не дало.

Так-то haproxy работает, все инстансы отвечают нормально, без проблем, но конфиг используют каждый свой, старый :)

По netstat -np|grep <pid> по процессам ничего нету, т.е. не осталось какого-то висящего коннекта, из-за которого старый инстанс haproxy не хочет завершаться.

Кто-нибудь сталкивался с таким?

 

AngryElf ()

Множестенные домены-альясы на главный домен - как проще?

Добрый день.

Есть задача - поддерживать N (N - до 10) доменов.

Есть основной домен, например, example.com

Есть сайт, висящий на нём. Например, http://www.example.com редиректит на example.com, т.е. example.com - основной домен.

Кроме этого домена есть еще несколько, типа example2.com (с http://www.example2.com), example3.com (тоже с www), exampleN.com (может с www, а может и без). Проблема в том, что доменов много и список их постепенно увеличивается. Отказаться от них нельзя, потому что есть миллионы ссылок, ведущих на них.

Все зоны имеют свои A-записи, ведущие на один хост, например, HOST.

Суть в том, что сервер, где держат example.com, иногда переезжает. И, соответственно, все А-записи всех доменов приходится менять.

В начале была мысль, что CNAME всех спасёт, но оказалось, что CNAME не может быть для основного домена, только для поддоменов. Т.е. я могу прописать

www.example2.com CNAME example.com

Но не могу

example2.com CNAME example.com

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

 

AngryElf ()

Отправка процессам разных сигналов, с веб-интерфейсом

Допустим, имеется система, где запущено N сервисов. Часть запущена через инит-скрипты (не systemd, скорее openrc). Часть - из-под supervisord'а или аналогов (runit).

Есть потребность иметь на ними некий внешний контроль.

Чаще всего, просто reload, но иногда бывает и что-то более хитрое. Например, [g]unicorn управляется через сигналы - добавляя/убавляя воркеры. Понятно, что подавляющее большинство умеет по сигналу переоткрывать логи, релоадить конфигурацию.

Вот хотелось бы иметь к этому внешний ручной и автоматический контроль.

Впринципе, всё что мне надо - специальная кнопка внутри админки supervisord'а или monit. Сейчас же там, к сожалению, только start/stop, никаких больше нету. Можно, конечно, настроить тот же monit, что б по каким-то внешним событиям (типа таймстемпов где-то) творил то что мне нужно, но это совсем уж кривой костыль.

Или может я не туда смотрю?

В сторону систем оркестрации пока смотреть не хочу, оверкилл оно для меня пока.

 , ,

AngryElf ()

Правила хорошего тона при настройке ipv6

Есть где-то сабжевая подборка?

Применительно к SOHO, скажем так, т.е. мелкий офис или домашняя сеть, то есть до 10-15 машин в доверенной сети.

В v4-сетях всё было как-то проще - брали серый диапазон /24, раздавали с помощью dhcp и горя не знали. Все хосты знали свой шлюз по-умолчанию, могли достучаться друг до друга напрямую, просто и понятно.

В v6-же всё как-то странно, скажем так.

Пример конфига dnsmasq:

port=53
domain-needed
interface=br0 (eth0 + wlan0)
dhcp-range=192.168.2.13, 192.168.2.200, 10h
dhcp-range=2001:xxxx:xxxx:xxxx::dead:10, 2001:xxxx:xxxx:xxxx::dead:fff0, 64
enable-ra
dhcp-host=id:00:01:00:01:xx:xx:xx:xx:xx:6c:8f:37:d6:1e, laptop, [2001:xxxx:xxxx:xxxx::dead:beef]
dhcp-authoritative

В итоге с v4 всё как ожидалось, а вот v6 приходит таким (на laptop):

# ip -6 addr show dev eth0
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 2001:xxxx:xxxx:xxxx::dead:beef/128 scope global dynamic 
       valid_lft 2663sec preferred_lft 2663sec
    inet6 fe80::xxxx:xxxx:xxxx:d61e/64 scope link 
       valid_lft forever preferred_lft forever
# ip -6 r
2001:xxxx:xxxx:xxxx::dead:beef dev eth0  proto kernel  metric 256  expires 2622sec
fe80::/64 dev eth0  proto kernel  metric 256 
ff00::/8 dev eth0  metric 256 

На роутере:

# ip -6 addr show dev br0
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 
    inet6 2001:xxxx:xxxx:xxxx::2/64 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::xxxx:xxxx:xxxx:35bc/64 scope link 
       valid_lft forever preferred_lft forever

Почему выдаёт /128 при наличии /64? Почему не роутить через 2001:xxxx:xxxx:xxxx::2? Почему, в конце концов, дефолтный роут отваливается раз в N часов (пока пытаюсь отловить ситуацию, но, с виду, RA не отправляется почему-то постоянно, а только по запросу с клиента (dhcpcd -n eth0)?

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

 ,

AngryElf ()

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