LINUX.ORG.RU

Избранные сообщения pinachet

Резервное копирование виртуальной машины QEMU/KVM с паузой и записью памяти

 , , ,

В интернете есть статьи, где было описано как сделать бэкап работающей виртуальной машины (ВМ) с использованием гостевого агента QEMU (см. например https://bozza.ru/art-337.html ). Что же делать, если в ВМ нельзя установить этот агент? В таком случае поможет кратковременная пауза виртуальной машины и запись её памяти. Перерыв в доступности ВМ будет только на время записи её памяти на диск и чтения обратно.

( читать дальше... )

smola0609
()

Captive Portal для самых маленьких

 , ,

Здравствуйте мои маленькие любители авиационного спирта =) !

Последние пару дней занимался настройкой Wi-Fi, да не простого, а стильного-модного-молодёжного, со своим Captive Portal. Для тех, кто в танке: это когда ты подключаешься к Wi-Fi сети, но прежде чем допускать тебя к интернетам и ЛОРу в частности, нужно пройти какую-никакую дополнительную авторизацию на веб-страничке, third-party так сказать.

Такой подход я считаю более секурным, потому как, доступ каждого клиента по Wi-Fi регулируется лично через iptables, а не тупо форвардится всё подряд. Какой простор для творчества! Во-вторых, авторизация происходит через веб-страничку, а не WPA и прочие нативные механизмы wireless-сетей, которые как и всё в нашем мире, не вечны и надёжность их хромает.

После вступления, приступим.

hostapd? checked!

iptables? checked!

nginx? checked!

Рассказывать о настройке NAT лишний раз не буду, думаю, у вас уже должна быть настроена раздача Wi-Fi, и всё, что вам ненужно, это только Captive Portal.

wlan0 — имя интерфейса Wi-Fi
eth0 — имя интерфейса с интернетами
192.168.0.0/24 — локалка

# создаём кольцо
iptables -t mangle -N captive

# все пакеты из ви-фи отправляем в это кольцо
iptables -t mangle -A PREROUTING -i wlan0 -j captive

# доверенные клиенты из кольца выходят сразу же (адреса инсертим в начало списка)
# фильтр хоть по MAC, хоть по IP
# этот список должен редактироваться через сайт (Captive Portal)
# iptables -t mangle -I captive -m mac --mac-source 00:00:00:00:00:00 -j RETURN
# iptables -t mangle -I captive -s 192.168.0.137 -j RETURN

# если ты всё ещё в кольце, тогда ставим метку
iptables -t mangle -A captive -j MARK --set-mark 1

# всех с меткой перенаправляем к себе, когда они открывают сайты 80
# про 443 забудьте
iptables -t nat -A PREROUTING -i wlan0 -m mark --mark 1 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.1

# всех с меткой при прочем трафике просто дропаем
iptables -t filter -A FORWARD -i wlan0 -m mark --mark 1 -j DROP

# успешно натим оставшихся доверенных
iptables -t filter -A FORWARD -i wlan0 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j MASQUERADE

Вот и всё. Здесь включена проверка через -i wlan0, таким образом это не вызовет никаких конфликтов с другими сетями, т.к. у меня в продакшене под кроватью очень много правил iptables и я знаю, о чём говорю.

Подводные камни, на которые я наткнулся и спешу поделиться с вами. В соседнем треде мне научно-популярно объяснили, что тщетно пытаться настроить редирект по HTTPS на свой Captive Portal, это просто не сработает, это уже MitM атака. Не очень-то и хотелось! ;p

Если у вас используются личные DNS, то наверняка у вас есть правило, разрешающее локальные запросы к серверу (tcp/53 udp/53). Не забудьте разрешить запросы и к локальному веб-серверу (tcp/80). Но а если вы сообщаете Wi-Fi клиентам какие-то публичные NS, то не забудьте разрешить доступ клиентам к ним: iptables -t filter -I FORWARD -i wlan0 -s 192.168.0.0/24 -d 8.8.8.8/32 -j ACCEPT. А суть такова. Когда клиент подключается к Wi-Fi, он проверяет доступность интернета в целом, для этого смартфоны качают со своих серверов файлы и проверяют корректность полученных данных. Если оно не сможет резолвить хост запрашиваемого сайта, то на этом и споткнётся и проверка на наличие Captive Portal в сети не пройдёт.

Собственно, теперь к механизму Captive Portal.

Как уже замечено, это личная прерогатива каждого клиента, проверять доступность интернета, и если в результате проверки что-то пошло не так, — значит либо интернета нет, либо Captive Portal.

Мы перенаправили все запросы на 80 порт к себе, на свой локальный сервер. Теперь nginx должен в ответ на все HTTP запросы отвечать кодом 302. Не 200, не 301, не 511, а именно 302, а затем перенаправлять вас на страничку с third-party авторизацией, и только таким макаром например мой Андрюша-9 смог обнаружить, что у меня таки Captive Portal, а не какой-то сломанный интернет. В результате сразу после подключения к Wi-Fi сети должно появиться Push-уведомление: Скриншот #1, при нажатии которого откроется страничка, куда редиректит nginx Скриншот #2.

Сам скрипт странички я оставляю вам на откуп: думаю, вам не составит никакого труда наслюнявить однострочник на php добавляющий $_SERVER['REMOTE_ADDR'] в iptables через shell_exec(); или типа того. Да? Да. Ваш Captive Portal полностью в ваших руках.

Вот и весь механизм работы Captive Portal. Спрашивайте ответы.

Spoofing
()

Запуск GUI-программы через Ansible на 15-ти хостах

 , , , ,

Мне нужно запустить через Ansible программу сразу на ~15 хостах. Программа GUI-шная, но запустить ее надо в терминале, чтобы в случае вылета программы, терминал остался, можно было быстро посмотреть выхлоп.

  - name: Запуск программы
    shell: "export DISPLAY=:0.0 ; fly-term --noclose --workdir /usr/share/ourProject -e \"./programm\""

Проблема в том, что Ansible ждет завершения всей команды модуля shell. И работает Ansible в 5 потоков, то есть, запускает прогу только на 5 хостах и ждет.

Я пробовал отвязываться от терминала так:
    shell: "export DISPLAY=:0.0 ; (fly-term --noclose --workdir /usr/share/ourProject -e \"./programm\" &)"

Но тогда программа запускается и сразу завершается. Блоками по 5 хостов: сначала на первых 5 хостах, через секунду на следующих 5 и так далее.

Я курил маны на модули shell, raw, command, но ничего работающего как нада сделать не смог.

Что нужно прописать в команду, чтобы программа просто была запущена на хостах, а Ansible поехала работать дальше без ожидания?

Xintrea
()

Туториал или фундаментальные знания

 ,

Коллеги, в виду того, что за компом мы сидим за 8+ часов , хотелось бы что то по типу туториала или ссылку на какой то относительно короткий мануал , как правильно организовать такое рабочее место, чтобы не было проблем со здоровьем или они были минимальны.

В продолжении так сказать этой темы Ищу бюджетный удобный стул

pinachet
()

Перейти c Perl на go

 ,

Коллеги, подскажите маленький проект на go(ну или большой в котором можно относительно быстро разобраться ) для обучения на golang.

Сам сталкиваюсь с тем, что хоть и Perl программист { вот старый пример https://www.youtube.com/watch?v=1ucdC9V-p8Y } с большим опытом разработки в телекомуникациях(в основном OSS/BSS , биллинги ) , но довольно часто стучаться по go .

P.S по книгам - перечитываю Effective Go ( я так понимаю это аналог книги Modern perl ? ) , если есть другие полезные в этом вопросе книги,то буду премного благодарен

pinachet
()

MariaDB-Galera-cluster+corosync+pacemaker несколько вопросов

 , ,

Сейчас занимаюсь постройкой нового кластера MariaDB+Galera. Кластер планируется из трёх нод + арбитратор (на данный момент в наличии только две, для третей и арбитратора ещё железо не готово), на каждой ноде стоит Debian Jessie, запущена MariaDB в режиме MM-репликации, так же стоит corosync и pacemaker для мониторинга состояния MariaDB и в случае её отказа, переноса vip-адреса на живую ноду.

В процессе конфигурирования столкнулся со следующими проблемами: 1. Если демону mysqld сделать kill -9, то corosync, вместо того, что бы передвинуть ip на живую ноду, пытается снова запустить mysqld на этой же ноде. Как сделать так, что бы айпишник переезжал при недоступности, а в идеале, при неработоспособности демона (например, выполнялся тестовый запрос, если результат отличен от ожидаемого, передвинуть адрес на другую ноду и оповестить админа)?

2. При рестарте демона corosync, зачем-то рестартится и MariaDB. Как сделать, что бы оно не трогало mysqld при рестарте?

3. Как при запущенном mysld сбросить статус OFFLINE/Fail/Stopped в corosync? (reprobe не подходит, потому-что при resource reprobe mariadb-01 так же происходит рестарт mysqld).

Зачем оно вообще на каждый чих рестартит то, бесперебойную работу чего должно обеспечивать?

Конфиги: /etc/corosync/corosync.conf:

totem {
        version: 2
        token: 3000
        nodeid: 10
        token_retransmits_before_loss_const: 10
        clear_node_high_bit: yes
        crypto_cipher: none
        crypto_hash: none
        transport: udpu
        interface {
                ringnumber: 0
                bindnetaddr: 10.100.22.50
                mcastaddr: 224.0.0.50
        }
}

logging {
        to_logfile: yes
        logfile: /var/log/corosync/corosync.log
        debug: off
        timestamp: on
        logger_subsys {
                subsys: QUORUM
                debug: off
        }
}

quorum {
        provider: corosync_votequorum
        expected_votes: 3
}

nodelist {
        node {
                ring0_addr: mariadb-01.sdn
        }
        node {
                ring0_addr: mariadb-02.sdn
        }
        node {
                ring0_addr: mariadb-03.sdn
        }
}

crm configure show:

node 10: mariadb-01
node 20: mariadb-02
primitive IP-rsc_mysqld IPaddr2 \
        params ip=10.100.22.50 nic=bond0.22 cidr_netmask=24 \
        meta migration-threshold=2 \
        op monitor interval=2 timeout=20 on-fail=restart
primitive mysqld mysql \
        params binary="/usr/bin/mysqld_safe" config="/etc/mysql/my.cnf" user=mysql group=mysql log="/var/log/mysql/mysql_err.log" pid="/run/mysqld/mysqld.pid" datadir="/var/lib/mysql" socket="/run/mysqld/mysqld.sock" replication_user=root replication_passwd=MY_SECRET_PASS \
        meta migration-threshold=2 target-role=Started is-managed=true \
        op monitor timeout=30s interval=2s on-fail=restart role=Master interleave=true ordered=true \
        op start interval=0 timeout=300s \
        op stop interval=0 timeout=300s
ms mariadb_cluster mysqld \
        meta target-role=Started is-managed=true
colocation ip_with_mariadb inf: IP-rsc_mysqld mariadb_cluster
property cib-bootstrap-options: \
        dc-version=1.1.12-561c4cf \
        cluster-infrastructure=corosync \
        stonith-enabled=no \
        no-quorum-policy=ignore \
        default-resource-stickiness=100 \
        stop-all-resources=no \
        symmetric-cluster=true
property mysql_replication: \
        mysqld_REPL_INFO="mariadb-01|mariadb-bin.000867|345"

dronozavr
()

Error: Let's Encrypt validation status 400

 ,

Добрый день, при добавлении к сайту управляемому VestaCP сертификата SSL от Let's Encrypt происходит данная ошибка.

В логе /var/log/vesta/error.log

2019-10-21 15:01:09 v-add-letsencrypt-domain  'obr86' 'multisite.edu-nv.ru' 'www.multisite.edu-nv.ru,shablon2.edu-nv.ru,shablon.edu-nv.ru,dou66.edu-nv.ru,school18.edu-nv.ru,dou68.edu-nv.ru,dou52.edu-nv.ru,obr86.edu-nv.ru,dou1.edu-nv.ru,dou4.edu-nv.ru,dou5.edu-nv.ru,dou7.edu-nv.ru,dou8.edu-nv.ru,dou9.edu-nv.ru,dou10.edu-nv.ru,dou15.edu-nv.ru,dou17.edu-nv.ru,dou21.edu-nv.ru,dou25.edu-nv.ru,dou27.edu-nv.ru,dou29.edu-nv.ru,dou31.edu-nv.ru,dou32.edu-nv.ru,dou37.edu-nv.ru,dou38.edu-nv.ru,dou40.edu-nv.ru,dou41.edu-nv.ru,dou44.edu-nv.ru,dou45.edu-nv.ru,dou47.edu-nv.ru,dou48.edu-nv.ru,dou49.edu-nv.ru,dou54.edu-nv.ru,dou56.edu-nv.ru,dou60.edu-nv.ru,dou61.edu-nv.ru,dou62.edu-nv.ru,dou67.edu-nv.ru,dou69.edu-nv.ru,dou71.edu-nv.ru,dou77.edu-nv.ru,dou78.edu-nv.ru,dou79.edu-nv.ru,dou80.edu-nv.ru,dou83.edu-nv.ru,dou86.edu-nv.ru,dou90.edu-nv.ru,school1.edu-nv.ru,school2.edu-nv.ru,school3.edu-nv.ru,school5.edu-nv.ru,school6.edu-nv.ru,school7.edu-nv.ru,school8.edu-nv.ru,school9.edu-nv.ru,school10.edu-nv.ru,school11.edu-nv.ru,school12.edu-nv.ru,school14.edu-nv.ru,school15.edu-nv.ru,school17.edu-nv.ru,school19.edu-nv.ru,school22.edu-nv.ru,school23.edu-nv.ru,school24.edu-nv.ru,school25.edu-nv.ru,school29.edu-nv.ru,school30.edu-nv.ru,school31.edu-nv.ru,school32.edu-nv.ru,school34.edu-nv.ru,school40.edu-nv.ru,school42.edu-nv.ru,school43.edu-nv.ru,gymnasium.edu-nv.ru,gymnasium2.edu-nv.ru,lyceum.edu-nv.ru,lyceum2.edu-nv.ru,kunosh.edu-nv.ru,choupg.edu-nv.ru,cdt.edu-nv.ru,patriot.edu-nv.ru' 'no' [Error 15]

Есть ди идеи?

Shulman
()

Perl прямиком из 1987 года

 , , , ,

Прочитав новость «Код интерпретатора Perl официально перенесён на GitHub» я решил взглянуть на репозиторий Perl 5, который теперь уже находится на GitHub’е.

Удивительно, как трепетно и качественно его перенесли, сохранив не только абсолютно всю 32-летнюю историю проекта, но и багрепорты (Issues), патчи (PRs), релизы и ветки. Надпись «32 years ago» рядом с файлами вызывает улыбку.

Что ещё делать в этот унылейший пятничный вечер, когда на улице неприятно моросит дождь со снегом, а все дорожки погрязли в осенней слякоти? Правильно, красноглазить! Так что я ради эксперимента и интереса решил взять и собрать древний Perl на современной x86_64-машинке с gcc (GCC) 9.2.0 в качестве компилятора. Сможет ли такой старый код пройти проверку временем?

Чтобы было совсем уж аутентичненько и некрофильненько, я развернул виртуальную машину с голыми иксами и twm (wikipedia.org), который тоже родом из 1987 года. Кто знает, может быть Larry Wall писал свой Perl используя именно twm, так сказать bleeding edge technology того времени. Используемый дистрибутив – Arch Linux. Просто потому что в его репозитории есть некоторые полезные вещи, которые впоследствии мне пригодились.

( читать дальше... )

EXL
()

SQUID не фильтрует HTTPS

 , ,

Поднял squid по статье https://habr.com/post/354708/ и не работает https. Сборку и настройки делаю на debian 9.6 x64 Сквид запустился.

squid -v
Squid Cache: Version 3.5.27
Service Name: squid
Debian linux

This binary uses OpenSSL 1.0.2l  25 May 2017. For legal restrictions on distribution see https://www.openssl.org/source/license.html

configure options:  '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' 'BUILDCXXFLAGS=-g -O2 -fdebug-prefix-map=/root/SQUIDNEW/squid3-3.5.27-2018=. -fstack-protector-strong -Wformat -Werror=format-security -Wdate-time -D_FORTIFY_SOURCE=2 -Wl,-z,relro -Wl,-z,now -Wl,--as-needed' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--libexecdir=/usr/lib/squid' '--mandir=/usr/share/man' '--enable-inline' '--disable-arch-native' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB' '--enable-auth-digest=file,LDAP' '--enable-auth-negotiate=kerberos,wrapper' '--enable-auth-ntlm=fake,smb_lm' '--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,time_quota,unix_group,wbinfo_group' '--enable-url-rewrite-helpers=fake' '--enable-eui' '--enable-esi' '--enable-icmp' '--enable-zph-qos' '--enable-ecap' '--enable-ssl' '--enable-ssl-crtd' '--with-openssl' '--disable-translation' '--with-swapdir=/var/spool/squid' '--with-logdir=/var/log/squid' '--with-pidfile=/var/run/squid.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--enable-build-info=Debian linux' '--enable-linux-netfilter' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fdebug-prefix-map=/root/SQUIDNEW/squid3-3.5.27-2018=. -fstack-protector-strong -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-z,relro -Wl,-z,now -Wl,--as-needed' 'CPPFLAGS=-Wdate-time -D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fdebug-prefix-map=/root/SQUIDNEW/squid3-3.5.27-2018=. -fstack-protector-strong -Wformat -Werror=format-security'


 systemctl status squid
● squid.service - LSB: Squid HTTP Proxy version 3.x
   Loaded: loaded (/etc/init.d/squid; generated; vendor preset: enabled)
   Active: active (running) since Wed 2018-12-05 15:27:22 +07; 14min ago
     Docs: man:systemd-sysv-generator(8)
  Process: 21303 ExecStop=/etc/init.d/squid stop (code=exited, status=0/SUCCESS)
  Process: 21345 ExecStart=/etc/init.d/squid start (code=exited, status=0/SUCCESS)
 Main PID: 21386 (squid)
    Tasks: 5 (limit: 4915)
   Memory: 22.7M
      CPU: 957ms
   CGroup: /system.slice/squid.service
           ├─21384 /usr/sbin/squid -YC -f /etc/squid/squid.conf
           ├─21386 (squid-1) -YC -f /etc/squid/squid.conf
           ├─21387 (logfile-daemon) /var/log/squid/access.log
           ├─21388 (unlinkd)
           └─21389 (pinger)

Dec 05 15:27:21 vcgateway systemd[1]: Starting LSB: Squid HTTP Proxy version 3.x...
Dec 05 15:27:22 vcgateway squid[21384]: Squid Parent: will start 1 kids
Dec 05 15:27:22 vcgateway squid[21384]: Squid Parent: (squid-1) process 21386 started
Dec 05 15:27:22 vcgateway squid[21345]: Starting Squid HTTP Proxy: squid.
Dec 05 15:27:22 vcgateway systemd[1]: squid.service: PID file /var/run/squid.pid not readable (yet?) after start: No such file or directory
Dec 05 15:27:22 vcgateway systemd[1]: squid.service: Supervising process 21386 which is not our child. We'll most likely not notice when it exits.
Dec 05 15:27:22 vcgateway systemd[1]: Started LSB: Squid HTTP Proxy version 3.x.

Конфиг squid получился следующий:

cat /etc/squid/squid.conf
acl localnet src 192.168.8.0/24 # Ваша локалка

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http
acl CONNECT method CONNECT
acl SSL method CONNECT

#Укажем DNS для Squid. Крайне рекомендую использовать одинаковые DNS тут и у клиентов
dns_nameservers 192.168.8.1 #dns поднят на этом же сервере

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access allow localhost
http_access deny all
icp_access deny all
htcp_access deny all

#прозрачный порт указывается опцией intercept
http_port 192.168.8.1:3128 intercept options=NO_SSLv3:NO_SSLv2

#также нужно указать непрозрачный порт, ибо если захотите вручную указать адрес
#прокси в браузере, указав прозрачный порт, вы получите ошибку доступа, поэтому нужно
#указывать непрозрачный порт в браузере, если конечно такое желание будет, к тому же в логах #сыпятся ошибки о том, что непрохрачный порт не указан=)
http_port 192.168.8.1:3130 options=NO_SSLv3:NO_SSLv2

#и наконец, указываем HTTPS порт с нужными опциями
https_port 192.168.8.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem

sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
#укажем правило со списком блокируемых ресурсов (в файле домены вида .domain.com)
acl blocked ssl::server_name  "/etc/squid/blocked_https.acl"
acl step1 at_step SslBump1
ssl_bump peek step1

#терминируем соединение, если клиент заходит на запрещенный ресурс
ssl_bump terminate blocked
ssl_bump splice all

sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

cache_dir ufs /var/spool/squid 100 16 256
coredump_dir /var/spool/squid
refresh_pattern ^ftp:           1440    20%     10080
refresh_pattern ^gopher:        1440    0%      1440
refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
refresh_pattern .               0       20%     4320
logfile_rotate 4
pid_filename /var/run/squid.pid
squid -k parse
2018/12/05 15:50:47| Startup: Initializing Authentication Schemes ...
2018/12/05 15:50:47| Startup: Initialized Authentication Scheme 'basic'
2018/12/05 15:50:47| Startup: Initialized Authentication Scheme 'digest'
2018/12/05 15:50:47| Startup: Initialized Authentication Scheme 'negotiate'
2018/12/05 15:50:47| Startup: Initialized Authentication Scheme 'ntlm'
2018/12/05 15:50:47| Startup: Initialized Authentication.
2018/12/05 15:50:47| Processing Configuration File: /etc/squid/squid.conf (depth 0)
2018/12/05 15:50:47| Processing: acl localnet src 192.168.8.0/24        # Ваша локалка
2018/12/05 15:50:47| Processing: acl SSL_ports port 443
2018/12/05 15:50:47| Processing: acl Safe_ports port 80         # http
2018/12/05 15:50:47| Processing: acl Safe_ports port 21         # ftp
2018/12/05 15:50:47| Processing: acl Safe_ports port 443                # https
2018/12/05 15:50:47| Processing: acl Safe_ports port 70         # gopher
2018/12/05 15:50:47| Processing: acl Safe_ports port 210                # wais
2018/12/05 15:50:47| Processing: acl Safe_ports port 1025-65535 # unregistered ports
2018/12/05 15:50:47| Processing: acl Safe_ports port 280                # http-mgmt
2018/12/05 15:50:47| Processing: acl Safe_ports port 488                # gss-http
2018/12/05 15:50:47| Processing: acl Safe_ports port 591                # filemaker
2018/12/05 15:50:47| Processing: acl Safe_ports port 777                # multiling http
2018/12/05 15:50:47| Processing: acl CONNECT method CONNECT
2018/12/05 15:50:47| Processing: acl SSL method CONNECT
2018/12/05 15:50:47| Processing: dns_nameservers 192.168.8.1
2018/12/05 15:50:47| Processing: http_access deny !Safe_ports
2018/12/05 15:50:47| Processing: http_access deny CONNECT !SSL_ports
2018/12/05 15:50:47| Processing: http_access allow localhost manager
2018/12/05 15:50:47| Processing: http_access deny manager
2018/12/05 15:50:47| Processing: http_access allow localnet
2018/12/05 15:50:47| Processing: http_access allow localhost
2018/12/05 15:50:47| Processing: http_access deny all
2018/12/05 15:50:47| Processing: icp_access deny all
2018/12/05 15:50:47| Processing: htcp_access deny all
2018/12/05 15:50:47| Processing: http_port 192.168.8.1:3128 intercept options=NO_SSLv3:NO_SSLv2
2018/12/05 15:50:47| Starting Authentication on port 192.168.8.1:3128
2018/12/05 15:50:47| Disabling Authentication on port 192.168.8.1:3128 (interception enabled)
2018/12/05 15:50:47| Processing: http_port 192.168.8.1:3130 options=NO_SSLv3:NO_SSLv2
2018/12/05 15:50:47| Processing: https_port 192.168.8.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem
2018/12/05 15:50:47| Starting Authentication on port 192.168.8.1:3129
2018/12/05 15:50:47| Disabling Authentication on port 192.168.8.1:3129 (interception enabled)
2018/12/05 15:50:47| Processing: sslproxy_cert_error allow all
2018/12/05 15:50:47| Processing: sslproxy_flags DONT_VERIFY_PEER
2018/12/05 15:50:47| Processing: acl blocked ssl::server_name  "/etc/squid/blocked_https.acl"
2018/12/05 15:50:47| Processing: acl step1 at_step SslBump1
2018/12/05 15:50:47| Processing: ssl_bump peek step1
2018/12/05 15:50:47| Processing: ssl_bump terminate blocked
2018/12/05 15:50:47| Processing: ssl_bump splice all
2018/12/05 15:50:47| Processing: sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
2018/12/05 15:50:47| Processing: cache_dir ufs /var/spool/squid 100 16 256
2018/12/05 15:50:47| Processing: coredump_dir /var/spool/squid
2018/12/05 15:50:47| Processing: refresh_pattern ^ftp:           1440    20%     10080
2018/12/05 15:50:47| Processing: refresh_pattern ^gopher:        1440    0%      1440
2018/12/05 15:50:47| Processing: refresh_pattern -i (/cgi-bin/|\?) 0     0%      0
2018/12/05 15:50:47| Processing: refresh_pattern .               0       20%     4320
2018/12/05 15:50:47| Processing: logfile_rotate 4
2018/12/05 15:50:47| Processing: pid_filename /var/run/squid.pid
2018/12/05 15:50:47| Initializing https proxy context
2018/12/05 15:50:47| Initializing https_port 192.168.8.1:3129 SSL context
2018/12/05 15:50:47| Using certificate in /etc/squid/squidCA.pem

 cat /etc/iptables.sh
IPTABLES=/sbin/iptables
INT_IP=192.168.8.1
INT_DEV=enp3s0

EXT_IP=XX.XX.XX.XX
EXT_DEV=ppp777


date
echo 0 > /proc/sys/net/ipv4/ip_forward

$IPTABLES -F
$IPTABLES -t filter   -A FORWARD    -j TCPMSS     -p tcp --tcp-flags SYN,RST SYN --clamp-mss-to-pmtu
$IPTABLES -t filter   -A INPUT      -j ACCEPT     -m state --state RELATED,ESTABLISHED
$IPTABLES -t filter   -A INPUT      -j ACCEPT     -s 127.0.0.1         -d 127.0.0.1
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $INT_DEV   -p udp -m multiport --dport 53,67,68
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $INT_DEV    -p tcp -m multiport --dport 53,80,445,5038,5060,3306,3128
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $INT_DEV    -p tcp --dport 22
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $INT_DEV    -p tcp -m multiport --dport 8006
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $INT_DEV    -p icmp
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $INT_DEV    -p igmp
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $INT_DEV    -p ospf
$IPTABLES -t filter   -A INPUT      -j REJECT  -i $INT_DEV

$IPTABLES -t filter   -A FORWARD    -j TCPMSS     -p tcp --tcp-flags SYN,RST SYN --clamp-mss-to-pmtu
$IPTABLES -t filter   -A INPUT      -j ACCEPT     -m state --state RELATED,ESTABLISHED
$IPTABLES -t filter   -A INPUT      -j ACCEPT     -s 127.0.0.1         -d 127.0.0.1

$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $EXT_DEV   -p tcp --dport 22
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $EXT_DEV   -p tcp -m multiport --dport 10050,8011
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $EXT_DEV   -p icmp
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $EXT_DEV   -p igmp
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $EXT_DEV   -p ospf
$IPTABLES -t filter   -A INPUT      -j ACCEPT  -i $EXT_DEV   -p gre
$IPTABLES -t filter   -A INPUT      -j DROP  -i $EXT_DEV


$IPTABLES -t mangle -F
$IPTABLES -t mangle   -A FORWARD    -j TCPMSS     -p tcp --tcp-flags SYN,RST SYN --clamp-mss-to-pmtu

$IPTABLES -t mangle -A OUTPUT -j TOS -o $INT_DEV -p udp --set-tos 0x10
$IPTABLES -t mangle -A INPUT -j TOS -i $INT_DEV -p udp --set-tos 0x10


$IPTABLES -t nat -F


$IPTABLES -t nat -A PREROUTING  -p tcp -m tcp -s 192.168.8.0/24   --dport 80  -j REDIRECT --to-ports 3128 #redirect HTTP to proxy
$IPTABLES -t nat -A PREROUTING  -p tcp -m tcp -s 192.168.8.0/24   --dport 443 -j REDIRECT --to-ports 3129 #redirect HTTPS to proxy


$IPTABLES -t nat -A POSTROUTING -s 192.168.8.0/24  -j SNAT -o $EXT_DEV --to-source $EXT_IP #internet access

echo 1 > /proc/sys/net/ipv4/ip_forward

С такими настройка http трафик фильтруется и видно в логах сквида, но при открытие сайтов https страница не доступна, в логах сквида никакой инфы не появляется. Подскажите куда копать, уже кучу версий сквида перепробовал и 3.5.X и 4.X и везде одно и тоже http фильтруется, а вот https нет.

Dmit84
()

Передать данные и звук по укв радио

 , , укв

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

Пусть есть комп «передатчик» и множество компов «приемников»
Нужно передать всем одинаковых немного байт и речь ?
Решение примерно видеться такое: через COM|USB|ETH подключаюсь к радиостанции (или промежуточному блоку) и передаю данные, затем передаю речь - со звуковой карты «как есть» в аналоге т.к. скорость канала данных мала (1200 бод) или промежуточный блок принимает по ETH и сам аналог подает на радиостанцию.

Нашел, что так примерно работает mototrbo http://www.sagatelecom.ru/radiosystems/DMR/mototrbo.php, но какое оборудование нужно и описание его для программирования не вижу. Возможно это закрытые решение «по ключ», что не подходит.
Мотороллу смотрю т.к. она наверно наиболее распространена, например в авто, не дорога. Не хотелось бы «уникальных» решений.

Встречал описания разного рода радио модемов для «телеметрии», но мне такое не подойдет т.к. они только данные, без речи толкают.

x905
()

LXC

 ,

Коллеги , а кто как мониторит по ресурсам( i/o , cpu,ram,net ) lxc контейнеры ?
Нужно , icinga/nagios отдавать с клиента ( хост на котором запущенно несколько контейнеров) выдавать по каждому основные метрики загрузки ( то есть по сути не ставить/не настраивать) в каждый контейнер ключ .

Нашел это https://www.claudiokuenzler.com/nagios-plugins/check_lxc.php , насколько оно нормальное , что можете посоветовать взамен этого плагина ?

pinachet
()

Чего мне не хватает в Perl?

 ,

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

Итак, претензии к Perl от человека, который его осилил и знает особенности языка не по наслышке:

1) Не хватает собственно скорости. Скорость исполнения кода, т.е. его непосредственной интерпретации - Ахиллесова пята не только Perl, но и Ruby, и Python, и PHP. Но если интерпретаторы PHP и Python становятся быстрее с каждым годом, то интерпретатор Perl застрял в своём развитии - и при этом язык не имеет LLVM-компиляторов, как тот же Crystal, реализующий очень быстрый диалект Ruby. Для Perl есть RPerl, который непонятно как работает и работает ли у кого-то, кроме самого Вина Бразвелла. Ну и да, RPerl - это всё-таки не вполне Perl, по сути это какой-то «perl'оподобный диалект языка Си»

2) Не хватает адекватной проверки входных параметров. Есть куча сторонних модулей для этого: MooseX::Method::Signatures, Params::Validate и ещё тысячи их, но все они добавляют дикий оверхед к и без того не быстрой работе интерпретатора

3) Отсутствует как класс нормальный параллелизм: без пула потоков работать с потоками невозможно (создание потока - крайне медленная операция), с пулом потоков в принципе удобно, но всё одно памяти они жрут как не в себя. На Perl в 100 раз всё лучше с процессами, в том числе есть неплохие модули для работы с shared memory (правда, Redis для того же самого намного удобнее).

4) CPAN конечно замечательный репозиторий пакетов, но выкладывать что-то туда - это лишняя трата времени, да и все эти инструкции по правильному выкладыванию немного бесят: мне что, заняться больше нечем? ИМХО подход того же Crystal'а с его shards'ами намного удобнее.

5) Отсутствие макрогенерации кода. Есть конечно eval, но это, мягко говоря, всё равно что бульдозером шпалы укладывать: неудобно, анахронично, работает в рантайме (что просто ппц на самом деле), чревато ошибками. Учитывая стоимость вызова процедур в Perl5 отсутствие макрогенерации негативно влияет на потенциальную производительность

Относительно удобства ООП претензий не имею - те, у кого они есть, просто пришли из других языков и пытаются применять к совершенно иначе устроенному Perl'у свои «обобщённые» знания.

DRVTiny
()

Проблема

 , ,

Коллеги, возникла задача по компиляции для модема на arm . доступ на консоль есть . Однако выдает стандартную ошибку :

# ./programm
sh: ./programm: not found

Внутри железки какой-то Dopra Linux .Вывод cpuinfo

BusyBox v1.4.1 (2011-07-29 10:25:20 HKT) Built-in shell (ash)
Enter 'help' for a list of built-in commands.

WAP(Dopra Linux) # cat /proc/cpuinfo 
Processor	: ARMv6-compatible processor rev 7 (v6l)
BogoMIPS	: 532.48
Features	: swp half thumb fastmult edsp java 
CPU implementer	: 0x41
CPU architecture: 6TEJ
CPU variant	: 0x0
CPU part	: 0xb76
CPU revision	: 7
Cache type	: write-back
Cache clean	: cp15 c7 ops
Cache lockdown	: format C
Cache format	: Harvard
I size		: 16384
I assoc		: 4
I line length	: 32
I sets		: 128
D size		: 16384
D assoc		: 4
D line length	: 32
D sets		: 128

Hardware	: SD5113-V100-PILOT-B01
Revision	: 0000
Serial		: 0000000000000000

При компиляции того же софта под raspeberry pi разница в ELF такая

http://quickdiff.net/?unique_id=DDB128D1-B643-C4DB-7450-F11C4705D694

Подскажите флаги и какой gcc( и откуда) мне надо использовать, SDK вестимо под этого китайца нету ?

pinachet
()

Эксперементально подтверждено существование сил Хендрика Казимира

 ,

Группа американских и китайских ученых доказала существование сил Казимира — крошечных объемов энергии, возникающих при сближении объектов на квантовом уровне, пишет


Не так давно считалось, что силы Казимира в принципе не могут существовать, потому что они предполагают наличие своего рода «вечного двигателя», нарушающего законы физики. Однако, как доказали американские и китайские ученые, на квантовом уровне такое «вечное» взаимодействие возможно. После их теоретических и экспериментальных изысканий наличие сил, возникающих из квантовых колебаний атомов в зазоре, окончательно подтверждено.



Сообщение о сабже на русском:https://hightech.fm/2017/04/22/casimir-forces

Оригинал на английском:https://phys.org/news/2017-04-harness-mysterious-casimir-tiny-devices.html

torvn77
()

Линковка статических библиотек

 , , ,

Привет! Меня сегодня кольнуло в задницу, надо мне собрать одну програмку с гита и прилинковать к ней библиотеки libcurl и libcrypto (curl и openssl, если не ошибаюсь). Вот сам гит: https://github.com/lucasjones/cpuminer-multi Опишите нубу, что и как мне делать (там make везде). Где брать библиотеки, как их статически линковать? Надо, чтобы на другом ПК без этих либ программа работала.

AxReal
()

VDI, OPENRDP, BROKER, X2GO, SPICE, FOSS-Cloud etc. Помогите выбрать инфрастуктуру для thin client

 , ,

Привет. В данный момент у меня все работает так: thin client при загрузке получает небольшой имидж с установленным x2go client, с помощью которого пользователь коннектится на через broker на ноды. /home/ на всех нодах подцеплен на файлсервер через NFS. Основная проблема в NX протоколе- он не поддерживает форваринг видео карты и еще кучи всего, туповат протокол. Например, прокрутка в браузере лагает. Есть у кого хорошая рабочая схема? В идеале я бы хотел грузить полноценную ось на thin. Типа загружается клиент, под него создается виртаулка, он на ее использует, после использования виртуалка уничтожается.

constin
()

Какой системой мониторинга пользуетесь?

 , ,

Опрос для тех, кто всё-таки какой-либо СМ пользуется, посему варианта «Не пользуюсь» здесь и не предусмотрено (иначе он просто испортит статистику).

  1. Zabbix 273 (63%)

    ********************************************************************************************************************************************************************************************************************************************************************************************************************************

  2. Nagios (и его клоны) 97 (22%)

    *****************************************************************************************************************

  3. Другая OpenSource СМ 52 (12%)

    ************************************************************

  4. Munin 44 (10%)

    ***************************************************

  5. Cacti 35 (8%)

    *****************************************

  6. Другая проприетарная СМ 31 (7%)

    ************************************

  7. Prometheus 25 (6%)

    *****************************

  8. Microsoft SCOM 10 (2%)

    ***********

  9. ZenOSS 9 (2%)

    **********

  10. OpenNMS 9 (2%)

    **********

  11. NetXMS 9 (2%)

    **********

  12. IBM Tivoli Monitoring 8 (2%)

    *********

  13. HP OpenView 8 (2%)

    *********

Всего голосов: 610, всего проголосовавших: 432

DRVTiny
()

Почему DNAT внутри сети не работает?

 

-A PREROUTING -d 11.11.11.11 -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.11.142:8082

eth1 - LAN интерфейс.

11.11.11.11 это внешний интерфейс.

Вроде по логике:

Заходит пакет на интерфейс eth1, попадает в цепочку PREROUTING, фильтр видит в заголовке адрес направления 11.11.11.11 и порт 80, и перенаправляет пакет на 192.168.11.142:8082

steemandlinux
()

nDPI как замена l7filter [продолжение]

 , ,

Продолжение длинной истории

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

Отдельно и более подробно для Ubuntu и CentOS от as_lan

На большом потоке ( ~300мбит/с ) cо всеми протоколами используется примерно 50-60% одного ядра Intel(R) Xeon(R) CPU E31230@3.20GHz. Если поток больше или процессор слабее, то включаем RPS или используем сетевые карты с multi-queue и irq-affinity. У меня оно тестируется на трафике до 400Мбит/~100к conntrack/~90kpps для x86 и x86_64.

В понятиях netfilter оно умеет проверять пакеты на принадлежность к протоколам (match) и ставить на пакеты метки/классы (target) по аналогии с MARK & CLASSIFY. Есть поддержка NET_NS и IPv6.

Требуется много памяти. На каждое соединение расходуется примерно ~850+280*0.7 байт. Этот объем варьируется в зависимости от 32/64 бита, с/без IPv6.

Исходники теперь есть на https://github.com/vel21ripn/nDPI/tree/netfilter

От основной ветки на github/ntop/nDPI/1.7-stable отличается меньшим потреблением памяти и «улучшением» определения bittorrent.

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

vel
()

Альтернатива RTMP, будущее FLASH

 ,

Какие есть альтернативы протоколу Adobe RTMP для real time вещания? Сейчас тенденция к удалению флеша(в андроиде уже удалили, в ФФ вроде как через год удалят).
WebRTC подходит, в браузерах уже вроде хорошая поддержка, но серверных решений мало, нашел только 1 рабочий вариант - Kurento media server. Но его не получается поставить на Debain(пакеты есть полько под Ubuntu) и вообще у меня он дико тормозит уже на 10-20 стримах. Интересует прежде всего схема peer to many, т.е. чел со своего браузера вещает на сервер, а сервер раздает всем клиентам

Собственно самый главный вопрос: стоит ли вкладываться в flash или ждать развития html5 и тестировать его баги и тормоза..?

gobot
()