<?xml version="1.0" encoding="utf-8" ?><feed xmlns="http://www.w3.org/2005/Atom" xmlns:tt="http://teletype.in/" xmlns:opensearch="http://a9.com/-/spec/opensearch/1.1/"><title>Chudik</title><subtitle>Я работаю в должности Devops.
Часто работаю с linux, веб-приложениями.
Многие меня знают под никнеймами: sx66627, Chudik.
Иногда я стримлю, играю.</subtitle><author><name>Chudik</name></author><id>https://teletype.in/atom/sx66627</id><link rel="self" type="application/atom+xml" href="https://teletype.in/atom/sx66627?offset=0"></link><link rel="alternate" type="text/html" href="https://blog.chudik.pro/?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><link rel="next" type="application/rss+xml" href="https://teletype.in/atom/sx66627?offset=10"></link><link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></link><updated>2026-04-29T11:09:29.574Z</updated><entry><id>sx66627:HmTUsj8U3SF</id><link rel="alternate" type="text/html" href="https://blog.chudik.pro/HmTUsj8U3SF?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><title>Балансировщик для видео хостинга</title><published>2025-04-15T16:36:37.492Z</published><updated>2025-04-15T16:39:19.104Z</updated><category term="it" label="IT"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/c2/50/c25084a8-5bac-4cb6-8a61-82b6100bfc9f.jpeg&quot;&gt;Сразу же скажу, что это статья не про громадные хостинги по типу youtube, rutube, vimeo и т.д. А гораздо в меньших масштабах.</summary><content type="html">
  &lt;figure id=&quot;gbOh&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c2/50/c25084a8-5bac-4cb6-8a61-82b6100bfc9f.jpeg&quot; width=&quot;2048&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;SJlv&quot;&gt;Сразу же скажу, что это статья не про громадные хостинги по типу youtube, rutube, vimeo и т.д. А гораздо в меньших масштабах.&lt;/p&gt;
  &lt;p id=&quot;QeiK&quot;&gt;Но все же я получил некоторый опыт и хотел бы поделиться им с вами.&lt;/p&gt;
  &lt;h2 id=&quot;38I5&quot;&gt;Задача&lt;/h2&gt;
  &lt;p id=&quot;hceM&quot;&gt;У меня был вэб-сервер на базе nginx + vod_module. На сервере была примонтирована директория с видеофайлами в формате mp4. Они были достаточно большие от 10 до 40Гб в среднем. Поэтому мне и пригодился модуль VOD, что бы отдавать видео контент в формате HLS. Подробнее об этом можно найти информацию в интернете. Я сейчас не буду об этом, статья у меня немного о другом. Так вот, модуль VOD довольно ресурсоемкий, особенно при большом количестве запросов. Он отъедает процессорное время и в лучшем случае видео загружается дольше. В худшем, их невозможно смотреть. И именно с этим я и столкнулся в конечном итоге.&lt;/p&gt;
  &lt;p id=&quot;dcOJ&quot;&gt;Мне нужно было решить, как оптимизировать все это. Либо найти способы как сделать масштабирование.&lt;/p&gt;
  &lt;h2 id=&quot;QgST&quot;&gt;Процесс&lt;/h2&gt;
  &lt;p id=&quot;qWuE&quot;&gt;Сперва, я сделал небольшую оптимизация путем более тонкой настройки модуля. Но это не дало сильного прироста производительности.&lt;/p&gt;
  &lt;p id=&quot;CotJ&quot;&gt;Тогда я начал рассматривать вариант с масштабированием. Проект у меня бесплатный, поэтому я искал дешевые vps. Не очень хотелось платить еще за несколько vps из своего кармана.&lt;/p&gt;
  &lt;p id=&quot;BkXb&quot;&gt;В итоге, я нашел вполне хорошего хостера во всех смыслах. И цены приятные, ниже рынка и при этом отличная поддержка. Заказал у них сперва один сервер, настроил его. А после, попросил через поддержку склонировать виртуальные диски еще на 2 сервера.&lt;/p&gt;
  &lt;p id=&quot;iugI&quot;&gt;Что получилось: 3 абсолютно идентично настроенных сервера.&lt;/p&gt;
  &lt;p id=&quot;jqYW&quot;&gt;Далее я настроил DNS, добавив 3 A-записи по типу hls.example.com с разными ip-адресами. Которые принадлежали этим серверам соответственно.&lt;/p&gt;
  &lt;p id=&quot;IuRc&quot;&gt;Это решило для меня:&lt;/p&gt;
  &lt;ul id=&quot;b351&quot;&gt;
    &lt;li id=&quot;dDU6&quot;&gt;Распределение нагрузки по серверам (round robin)&lt;/li&gt;
    &lt;li id=&quot;Er0B&quot;&gt;Распределение трафика&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;KWE1&quot;&gt;&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(199, 50%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;AMKf&quot;&gt;Но самое интересное, это настройка самого nginx. Ниже я опишу 2 способа конфигурации. Т.к. чуть позже &lt;a href=&quot;https://habr.com/ru/news/896920/&quot; target=&quot;_blank&quot;&gt;РКН подпортили&lt;/a&gt; мне все и пришлось сделать еще один вариант.&lt;/p&gt;
  &lt;/section&gt;
  &lt;h2 id=&quot;MeEj&quot;&gt;Решение&lt;/h2&gt;
  &lt;p id=&quot;5vtq&quot;&gt;Способ 1. Подключаем CloudFlare.&lt;/p&gt;
  &lt;p id=&quot;sIsy&quot;&gt;&lt;em&gt;Cloudflare — это глобальная сеть доставки контента (CDN), которая предоставляет решения для повышения безопасности и производительности веб-сайтов.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;9Bxy&quot;&gt;Я решил, что было бы не лишним подключить CF. Что бы получить дополнительное кеширование + защиту от ddos и т.д.&lt;/p&gt;
  &lt;p id=&quot;OSbP&quot;&gt;В общем, для начале я закрыл все соединения извне. Разрешив обращаться к вэб-серверу только с ip-адресов CF. Найди их можно здесь: &lt;a href=&quot;https://www.cloudflare.com/ips-v4&quot; target=&quot;_blank&quot;&gt;https://www.cloudflare.com/ips-v4&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;mPnX&quot;&gt;Для автообновления этого списка я сделал небольшой скрипт:&lt;/p&gt;
  &lt;pre id=&quot;XDMm&quot;&gt;#!/usr/bin/env bash

file=&amp;#x27;cloudflare&amp;#x27;;

rm -f $file
touch $file

for i in &amp;#x60;curl https://www.cloudflare.com/ips-v4&amp;#x60;; do echo &amp;#x27;set_real_ip_from &amp;#x27;$i&amp;#x27;;&amp;#x27; &amp;gt;&amp;gt; $file; done
echo &amp;#x27;real_ip_header CF-Connecting-IP;&amp;#x27; &amp;gt;&amp;gt; $file
&lt;/pre&gt;
  &lt;p id=&quot;yBz5&quot;&gt;Он создает файл cloudflare с заполненными в правильном формате данными для nginx.&lt;/p&gt;
  &lt;p id=&quot;Stws&quot;&gt;Поставил, что бы он запускался раз в день по крону и забыл о нем.&lt;/p&gt;
  &lt;p id=&quot;DSyZ&quot;&gt;Пример:&lt;/p&gt;
  &lt;pre id=&quot;Fvvn&quot;&gt;0 0 * * * cd /usr/local/nginx/conf &amp;amp;&amp;amp; ./update_cloudflare.sh&lt;/pre&gt;
  &lt;p id=&quot;oDxx&quot;&gt;Обновляем в 12 ночи каждый день.&lt;/p&gt;
  &lt;p id=&quot;HWFu&quot;&gt;Далее подключаем его в секцию http конфига nginx:&lt;/p&gt;
  &lt;pre id=&quot;XXYa&quot;&gt;#cloudflare
include cloudflare;&lt;/pre&gt;
  &lt;p id=&quot;rHeZ&quot;&gt;Чуть не забыл сказать, что делает этот файл :) Он нам нужен для того, что бы nginx принимал от указанных ip-адресов заголовок &amp;quot;CF-Connecting-IP&amp;quot; и обрабатывал настоящий ip-адрес клиентов.&lt;/p&gt;
  &lt;p id=&quot;uNXv&quot;&gt;С nginx разобрались. Теперь нужно настроить фаервол. &lt;/p&gt;
  &lt;p id=&quot;etjE&quot;&gt;Пример iptables:&lt;/p&gt;
  &lt;pre id=&quot;Z8uu&quot;&gt;# Закрываем изначально ВСЁ (т.е. изначально все что не разрешено - запрещено):
$IPT -P INPUT DROP

# Пропускаем соединения изнутри
$IPT -A INPUT --match state --state ESTABLISHED,RELATED -j ACCEPT

# clouflare
CF=&amp;quot;173.245.48.0/20,103.21.244.0/22,103.22.200.0/22,103.31.4.0/22,141.101.64.0/18,108.162.192.0/18,190.93.240.0/20,188.114.96.0/20,197.234.240.0/22,198.41.128.0/17,162.158.0.0/15,104.16.0.0/13,104.24.0.0/14,172.64.0.0/13,131.0.72.0/22&amp;quot;

# web
$IPT -A INPUT -p tcp -m multiport --dports 80,443 -s $CF -j ACCEPT
&lt;/pre&gt;
  &lt;p id=&quot;UMqS&quot;&gt;Естественно, это не полный набор правил. Я выделил лишь основное.&lt;/p&gt;
  &lt;p id=&quot;sFfC&quot;&gt;Зачем мы закрыли доступ всем на порт 80,443? Все просто, наверно многие из вас знают. Что часто приходят различные робот-спайдеры которые &amp;quot;засерают&amp;quot; логи, различные сканеры, поисковые роботы, парсеры и т.д. &lt;/p&gt;
  &lt;p id=&quot;Z4fF&quot;&gt;А упомянутые правила, как раз избавляют нас от всего этого. Теперь на наши сервера будут поступать только реальные запросы от клиентов. Но есть важный момент. Мне не нужны поисковики для этого поддомена! Основной индексируется нормально.&lt;/p&gt;
  &lt;p id=&quot;a9TN&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;6KdX&quot;&gt;Способ 2. Напрямую.&lt;/p&gt;
  &lt;p id=&quot;Wfwp&quot;&gt;Здесь нет ничего необычного, кроме того. Что я решил избавиться от лишних логов, на несуществующие домены.&lt;/p&gt;
  &lt;p id=&quot;P36g&quot;&gt;Пример конфига nginx:&lt;/p&gt;
  &lt;pre id=&quot;3u6X&quot;&gt;server {
    listen 80 default_server;
    listen [::]:80 default_server;
    listen 443 ssl default_server;
    listen [::]:443 ssl default_server;

    ssl_certificate /usr/local/nginx/ssl/nginx-selfsigned.crt;  # Фиктивный сертификат (можно сгенерировать самоподписанный)
    ssl_certificate_key /usr/local/nginx/ssl/nginx-selfsigned.key;  # Фиктивный ключ

    server_name _;  # Сопоставляется с любым доменом

    # Отвечаем 444 (No Response) или 404 (Not Found)
    return 444;
    # или
    # return 404;

    # Отключаем логирование
    access_log off;
    log_not_found off;

    # Закрываем соединение для HTTPS (если используется 444)
    ssl_reject_handshake on;
}&lt;/pre&gt;
  &lt;p id=&quot;8uYh&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;WRAo&quot;&gt;Итог&lt;/h2&gt;
  &lt;p id=&quot;zokD&quot;&gt;Я получил желаемый результат в обоих решениях. Теперь все отдается для пользователей быстро, нагрузка средняя по серверам. Даже есть некоторый запас ресурсов и все работает как часики.&lt;/p&gt;
  &lt;p id=&quot;jQuR&quot;&gt;P.S. В добавок я сделал защиту от скачиваний. Но это уже другая история.&lt;/p&gt;

</content></entry><entry><id>sx66627:P0tgNMIhiOL</id><link rel="alternate" type="text/html" href="https://blog.chudik.pro/P0tgNMIhiOL?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><title>Облачные решения для хранения данных, что  выбрать?</title><published>2025-01-09T14:26:00.189Z</published><updated>2025-02-17T06:35:35.273Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img2.teletype.in/files/99/83/9983475e-e530-4711-987c-5bf6057f90be.png"></media:thumbnail><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/97/a0/97a03ec7-34fd-4ae1-a22b-0c911388979a.png&quot;&gt;Всем привет!</summary><content type="html">
  &lt;figure id=&quot;GyHk&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/97/a0/97a03ec7-34fd-4ae1-a22b-0c911388979a.png&quot; width=&quot;2670&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;9FRz&quot;&gt;Всем привет!&lt;/p&gt;
  &lt;p id=&quot;HCUX&quot;&gt;Сегодня я хочу затронуть тему облаков. Т.к. сейчас практически все сервисы так или иначе связаны с ними. Это касается как мобильные устройства, так и некоторых программ на ПК. И с одной стороны это очень удобно, с другой есть и негативные моменты. Которые я бы хотел осветить в этой статье.&lt;/p&gt;
  &lt;p id=&quot;eogb&quot;&gt;Здесь речь пойдет о сервисах, которые предоставляют дисковое пространство для хранения ваших файлов. Фото, музыки и много другого.&lt;/p&gt;
  &lt;p id=&quot;8D4O&quot;&gt;Облачные решения, я бы поделил на 2 типа. Это платные сервисы и размещенные на ваших ресурсах.&lt;/p&gt;
  &lt;p id=&quot;wksh&quot;&gt;Давайте посмотрим на плюсы и минусы.&lt;/p&gt;
  &lt;p id=&quot;5kDk&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;BrFl&quot;&gt;Платные решения&lt;/h2&gt;
  &lt;p id=&quot;LGrw&quot;&gt;Плюсы:&lt;/p&gt;
  &lt;ul id=&quot;pG2W&quot;&gt;
    &lt;li id=&quot;dBA6&quot;&gt;Отказоустойчивость (всегда доступны)&lt;/li&gt;
    &lt;li id=&quot;asd0&quot;&gt;Безопасное хранение данных (потеря практически исключена)&lt;/li&gt;
    &lt;li id=&quot;Mpow&quot;&gt;Поддержка&lt;/li&gt;
    &lt;li id=&quot;JFoF&quot;&gt;Приложения (ПК, мобильные устройства)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;CReg&quot;&gt;Минусы:&lt;/p&gt;
  &lt;ul id=&quot;b0hB&quot;&gt;
    &lt;li id=&quot;NSzL&quot;&gt;Платно (на бесплатных тарифах 10-20 Гб)&lt;/li&gt;
    &lt;li id=&quot;SECq&quot;&gt;Ограничение по трафику (скачивание по ссылкам, если поделиться)&lt;/li&gt;
    &lt;li id=&quot;iLEn&quot;&gt;Ограничение по размеру загружаемых файлов&lt;/li&gt;
  &lt;/ul&gt;
  &lt;h3 id=&quot;c5uD&quot;&gt;Примеры сервисов&lt;/h3&gt;
  &lt;p id=&quot;xaMF&quot;&gt;&lt;a href=&quot;https://cloud.mail.ru/promo/quota&quot; target=&quot;_blank&quot;&gt;Облако Mail.ru&lt;/a&gt; (РФ)&lt;/p&gt;
  &lt;p id=&quot;6Fax&quot;&gt;&lt;a href=&quot;https://disk.yandex.ru&quot; target=&quot;_blank&quot;&gt;Яндекс Диск&lt;/a&gt; (РФ)&lt;/p&gt;
  &lt;p id=&quot;zr9W&quot;&gt;&lt;a href=&quot;https://mega.nz&quot; target=&quot;_blank&quot;&gt;Mega&lt;/a&gt; (Зарубежный)&lt;/p&gt;
  &lt;p id=&quot;wLKa&quot;&gt;&lt;a href=&quot;https://www.google.ru/intx/ru/drive/&quot; target=&quot;_blank&quot;&gt;Google Disk&lt;/a&gt; (Зарубежный)&lt;/p&gt;
  &lt;p id=&quot;Q9Zj&quot;&gt;На этом список конечно не заканчивается, сейчас их огромное количество.&lt;/p&gt;
  &lt;p id=&quot;hyX4&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;oWyC&quot;&gt;Размещение у себя&lt;/h2&gt;
  &lt;p id=&quot;pXyf&quot;&gt;К счастью, сейчас есть готовые бесплатные решения. И достаточно их загрузить и настроить по документации. Да, это требует некоторых знаний и серверных ресурсов. Но зато подобное решение является более вариативным. Благодаря, более тонкой настройки.&lt;/p&gt;
  &lt;p id=&quot;k2yG&quot;&gt;И так, я приведу в пример 2 бесплатных решения.&lt;/p&gt;
  &lt;p id=&quot;I4b0&quot;&gt;&lt;a href=&quot;https://owncloud.com&quot; target=&quot;_blank&quot;&gt;OwnCloud&lt;/a&gt; - Имеет в себе все, что нужно для работы с облаком. Не буду перечислять все его возможности. Скажу только главное: Поддержка WebDAV протокола, пользователи, разграничение прав и квот. А так же поддержка так называемых приложений, которые расширяют возможности. И чуть не забыл сказать, что есть программы-клиенты как для мобильных приложений, так и для ПК.&lt;/p&gt;
  &lt;p id=&quot;Djeq&quot;&gt;&lt;a href=&quot;https://nextcloud.com&quot; target=&quot;_blank&quot;&gt;NextCloud&lt;/a&gt; - Форк OwnCloud. Насколько я понимаю, часть разработчиков ушли из OwnCloud и создали свой продукт на его основе. Они очень схожи, но на мой взгляд он развивается больше.&lt;/p&gt;
  &lt;p id=&quot;zHYG&quot;&gt;Лично я, начинал с OwnCloud. А после мигрировал на NextCloud. Это было еще в 2016 году. И пользуюсь им до сих пор.&lt;/p&gt;
  &lt;p id=&quot;cnnF&quot;&gt; Сразу отмечу минусы:&lt;/p&gt;
  &lt;ul id=&quot;qgnn&quot;&gt;
    &lt;li id=&quot;8zjI&quot;&gt;За сохранность отвечаете вы и ваше оборудование&lt;/li&gt;
    &lt;li id=&quot;FGB1&quot;&gt;Резервные копии тоже создаете сами&lt;/li&gt;
    &lt;li id=&quot;lALR&quot;&gt;Доступность облака становится вашей задачей&lt;/li&gt;
    &lt;li id=&quot;NwTP&quot;&gt;Ну и в отличии от платных решений немного похуже графический интерфейс&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;6Sbc&quot;&gt;На этом все. Все остальное это плюсы.&lt;/p&gt;
  &lt;p id=&quot;dhJS&quot;&gt;&lt;/p&gt;
  &lt;h2 id=&quot;1mLr&quot;&gt;Заключение&lt;/h2&gt;
  &lt;p id=&quot;H0Rr&quot;&gt;Я уже использую его около 10 лет - полет нормальный. Советую и остальным, если есть возможность и желание создания своего облака.&lt;/p&gt;
  &lt;p id=&quot;xBa0&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;OYT0&quot;&gt;З.Ы. Под конец 2024 года, у меня развалилась система на которой крутилось облако. Напишу о его восстановлении в следующей статье. Никаких данных утеряно не было, даже без бэкапов. Но это скорее везение. Не делайте так!&lt;/p&gt;

</content></entry><entry><id>sx66627:caddy_v2</id><link rel="alternate" type="text/html" href="https://blog.chudik.pro/caddy_v2?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><title>Caddy2 и некоторые полезности</title><published>2022-06-25T07:53:11.817Z</published><updated>2025-01-09T06:16:56.352Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/ff/80/ff80b879-4925-4881-a4db-9b7f620fae0d.png"></media:thumbnail><category term="it" label="IT"></category><summary type="html">&lt;img src=&quot;https://img1.teletype.in/files/87/ea/87eaaa3c-018b-425f-900b-db2d9fcc4b84.png&quot;&gt;Оф. сайт: https://caddyserver.com/v2</summary><content type="html">
  &lt;figure id=&quot;uZ3b&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/87/ea/87eaaa3c-018b-425f-900b-db2d9fcc4b84.png&quot; width=&quot;1200&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;VPge&quot;&gt;Оф. сайт: &lt;a href=&quot;https://caddyserver.com/v2&quot; target=&quot;_blank&quot;&gt;https://caddyserver.com/v2&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;WjnB&quot;&gt;Начну пожалуй с описания. Что же это за зверек?&lt;br /&gt;&lt;strong&gt;Caddy 2&lt;/strong&gt; - это маленький, легковесный, функциональный веб-сервер с автоматическим созданием SSL сертификата от Let&amp;#x27;s Encrypt написанный на Go.&lt;/p&gt;
  &lt;p id=&quot;CiPd&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;xY4h&quot;&gt;Преимущества&lt;/h3&gt;
  &lt;ul id=&quot;yDTt&quot;&gt;
    &lt;li id=&quot;CLYS&quot;&gt;Простая и быстрая установка&lt;/li&gt;
    &lt;li id=&quot;2Feh&quot;&gt;Легкая настройка&lt;/li&gt;
    &lt;li id=&quot;R0P3&quot;&gt;Быстродействие &lt;em&gt;(может поспорить с nginx)&lt;/em&gt;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;1nsz&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;uRvk&quot;&gt;Область применения&lt;/h3&gt;
  &lt;p id=&quot;lIyf&quot;&gt;В первую очередь он будет удобен разработчикам. Когда нужен простой реверс прокси на хосте/локалхосте для ваших вм, контейнеров или даже для статики.&lt;br /&gt;Особенно, когда нужен SSL.&lt;/p&gt;
  &lt;p id=&quot;qXfX&quot;&gt; &lt;/p&gt;
  &lt;p id=&quot;XkIS&quot;&gt;Лично я его использую чаще всего на хосте, где есть контейнеры (docker).&lt;br /&gt;Часто я стою перед выбором между nginx (one love ❤) и Caddy. И nginx я выбираю в случае, когда мне нужны тонкие настройки вэб-сервера или особые модули. Но и Caddy тоже довольно гибок.&lt;/p&gt;
  &lt;p id=&quot;ef9m&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;sRwV&quot;&gt;Установка&lt;/h3&gt;
  &lt;p id=&quot;a7Sq&quot;&gt;Не буду заострять на этом внимание.&lt;br /&gt;Все хорошо описано здесь: &lt;a href=&quot;https://caddyserver.com/docs/install&quot; target=&quot;_blank&quot;&gt;https://caddyserver.com/docs/install&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;yYnP&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;PYk8&quot;&gt;Пример простой конфигурации&lt;/h3&gt;
  &lt;p id=&quot;ypff&quot;&gt;По дефолту конфиг находится по пути &lt;strong&gt;/etc/caddy/Caddyfile&lt;/strong&gt;&lt;/p&gt;
  &lt;pre id=&quot;gMlc&quot;&gt;site.example.com:80 {
        # Set this path to your site&amp;#x27;s directory.
        root * /var/www/

        # Enable the static file server.
        file_server

        # Another common task is to set up a reverse proxy:
        # reverse_proxy localhost:8080

        # Or serve a PHP site through php-fpm:
        # php_fastcgi localhost:9000

        # When using php-fpm listening via a unix socket:
        php_fastcgi /blog/* unix//run/php/php7.0-fpm.sock
}&lt;/pre&gt;
  &lt;p id=&quot;6xfH&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;fVXf&quot;&gt;Сайт с SSL и без него&lt;/h3&gt;
  &lt;p id=&quot;3Pq2&quot;&gt;Без SSL&lt;/p&gt;
  &lt;pre id=&quot;NmY3&quot;&gt;site.example.com:80 {
...
}&lt;/pre&gt;
  &lt;p id=&quot;JRWq&quot;&gt;&lt;strong&gt;:80&lt;/strong&gt; - указывает что SSL не будет использоваться.&lt;/p&gt;
  &lt;p id=&quot;XYjL&quot;&gt;С SSL&lt;/p&gt;
  &lt;pre id=&quot;Tpoz&quot;&gt;site.example.com {
...
tls почтовый@ящик.ru
}&lt;/pre&gt;
  &lt;p id=&quot;iSFD&quot;&gt;Почта указывается, для регистрации в Let&amp;#x27;s Encrypt. И автоматической загрузки сертификата. Естественно, у вас должен быть доступ извне к машинке. На которой запущен Caddy. И A-запись указывающая на этот хост.&lt;br /&gt;Редирект с 80 на 443 порт подключается автоматически. Если не задан отдельно блок с :80.&lt;br /&gt;Или используем свои сертификаты:&lt;/p&gt;
  &lt;pre id=&quot;4VCU&quot;&gt;site.example.com {
...
tls /etc/ssl/site.example.com.pem /etc/ssl/site.example.com.key
...
}&lt;/pre&gt;
  &lt;p id=&quot;6aQ0&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;qkI9&quot;&gt;Реверс прокси и прокидывание реального IP&lt;/h3&gt;
  &lt;pre id=&quot;Pnv4&quot;&gt;site.example.com {
...
reverse_proxy localhost:5580 {
            header_up X-Real-IP {remote_host}
        }
...
}&lt;/pre&gt;
  &lt;p id=&quot;hBWZ&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;s9Zm&quot;&gt;Ограничение доступа к сайту по ip&lt;/h3&gt;
  &lt;pre id=&quot;iWuW&quot;&gt;site.example.com {
...
@matchost {
        remote_ip 51.89.16.234 192.168.0.0/16
        }
        
        reverse_proxy @matchost localhost:9503 {
            header_up X-Real-IP {remote_host}
        }
...
}&lt;/pre&gt;
  &lt;p id=&quot;pRGJ&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;veQu&quot;&gt;Скрываем заголовок server&lt;/h3&gt;
  &lt;pre id=&quot;0LFd&quot;&gt;site.example.com {
...
header / {
            -Server
        }
...
}&lt;/pre&gt;
  &lt;p id=&quot;tmX3&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;sUK1&quot;&gt;Добавляем любой заголовок&lt;/h3&gt;
  &lt;pre id=&quot;RfYr&quot;&gt;site.example.com {
...
header / Content-Type &amp;quot;text/html; charset=UTF-8;&amp;quot;
...
}&lt;/pre&gt;
  &lt;p id=&quot;v7fz&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;PsRA&quot;&gt;Ограничиваем доступ к сайту по странам&lt;/h3&gt;
  &lt;p id=&quot;d6iJ&quot;&gt;Для этого понадобиться модуль: &lt;a href=&quot;https://github.com/porech/caddy-maxmind-geolocation&quot; target=&quot;_blank&quot;&gt;https://github.com/porech/caddy-maxmind-geolocation&lt;/a&gt;&lt;br /&gt;Согласно документации, нужно скачать инструмент xcaddy и установить пакет golang. Что бы сделать свою сборку caddy.&lt;br /&gt;Но есть вариант проще: &lt;a href=&quot;https://caddyserver.com/download&quot; target=&quot;_blank&quot;&gt;https://caddyserver.com/download&lt;/a&gt;&lt;br /&gt;Там в поиске пишем &amp;quot;geolocation&amp;quot;.&lt;/p&gt;
  &lt;figure id=&quot;YN3M&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/d9/5a/d95a994b-0d34-454d-bd9f-f7eb868f706a.png&quot; width=&quot;1692&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;asbz&quot;&gt;И скачиваем готовый кастомный бинарник под вашу архитектуру. Например, linux amd64.&lt;/p&gt;
  &lt;p id=&quot;tNpo&quot;&gt;Подсовываем его вместо оригинального и готово. Осталось скачать БД geoip и  настроить.&lt;br /&gt;Идем на сайт maxmind: &lt;a href=&quot;https://dev.maxmind.com/geoip/updating-databases?lang=en&quot; target=&quot;_blank&quot;&gt;https://dev.maxmind.com/geoip/updating-databases?lang=en&lt;/a&gt;&lt;br /&gt;Там все неплохо описано. В двух словах, надо зарегистрироваться, сгенерировать ключ и скачать базу. Нас интересует GeoLite2-Country.&lt;br /&gt;Как только мы это сделали и распаковали базу, можно приступить к настройке.&lt;/p&gt;
  &lt;pre id=&quot;fOH8&quot;&gt;(GEOFILTER) {
        @geofilter {
                not maxmind_geolocation {
                        db_path &amp;quot;/opt/caddy/geoip/GeoLite2-Country.mmdb&amp;quot;
                        deny_countries FR UNK
                }
        }
        respond @geofilter &amp;quot;Access Denied&amp;quot; 403
}&lt;/pre&gt;
  &lt;p id=&quot;imE9&quot;&gt;В примере мы закрываем доступ странам Франция и неопределенным IP.&lt;/p&gt;
  &lt;p id=&quot;OJLD&quot;&gt;Далее в секции с описанием сайта добавляем&lt;/p&gt;
  &lt;pre id=&quot;NyLE&quot;&gt;site.example.com {
...
import GEOFILTER
...
}&lt;/pre&gt;
  &lt;p id=&quot;fvm0&quot;&gt;Готово&lt;br /&gt;Теперь из указанных стран будут получать 403 ошибку.&lt;/p&gt;
  &lt;p id=&quot;EgAJ&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;4OLa&quot;&gt;Логирование&lt;/h3&gt;
  &lt;pre id=&quot;YSlC&quot;&gt;site.example.com {
...
log {
            output file /var/log/caddy/site.example.com_access.log
            format console
        }
...
}&lt;/pre&gt;
  &lt;p id=&quot;Ex1k&quot;&gt;Подробнее о логировании: &lt;a href=&quot;https://caddyserver.com/docs/caddyfile/directives/log&quot; target=&quot;_blank&quot;&gt;https://caddyserver.com/docs/caddyfile/directives/log&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;jOiv&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;lCpy&quot;&gt;Я перечислил основные моменты, с которыми сталкивался. И мне часть из них не показались очевидными. Но довольно легко я находил решение и в настройке это оказывалось довольно просто. По этому, рекомендую всем. Кто еще не щупал этот инструмент, обязательно поработать с ним 🙂&lt;/p&gt;
  &lt;p id=&quot;6meb&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;oV31&quot;&gt;Полезные ссылки&lt;/h3&gt;
  &lt;p id=&quot;LeQ3&quot;&gt;&lt;a href=&quot;https://www.shixuen.com/linux/services_web_caddy_v2.html&quot; target=&quot;_blank&quot;&gt;https://www.shixuen.com/linux/services_web_caddy_v2.html&lt;/a&gt;&lt;/p&gt;

</content></entry><entry><id>sx66627:proxmox_forwarding_gpu</id><link rel="alternate" type="text/html" href="https://blog.chudik.pro/proxmox_forwarding_gpu?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><title>Proxmox 7 проброс видеокарты (GPU) внутри вм</title><published>2022-06-04T08:36:12.587Z</published><updated>2022-06-04T17:12:28.889Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/b6/c5/b6c5426d-68e5-4291-b3a1-b7088cc82024.png"></media:thumbnail><category term="it" label="IT"></category><summary type="html">&lt;img src=&quot;https://img2.teletype.in/files/1d/13/1d1376b0-a2f8-4b0c-adaf-49beea95ab86.png&quot;&gt;Недавно я собрал себе очередной микро сервер для дома. И у меня была свободная видеокарта от Nvidia модель Geforce GTX 1050Ti.</summary><content type="html">
  &lt;figure id=&quot;FSMQ&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1d/13/1d1376b0-a2f8-4b0c-adaf-49beea95ab86.png&quot; width=&quot;1000&quot; /&gt;
  &lt;/figure&gt;
  &lt;h3 id=&quot;dNHV&quot;&gt;Задача&lt;/h3&gt;
  &lt;p id=&quot;ZLyB&quot;&gt;Недавно я собрал себе очередной микро сервер для дома. И у меня была свободная видеокарта от Nvidia модель Geforce GTX 1050Ti.&lt;/p&gt;
  &lt;p id=&quot;VUEV&quot;&gt;Нужно было сделать так, что бы её можно было &lt;u&gt;полноценно использовать&lt;/u&gt; внутри виртуальной машины. В моем случае, для видео энкодинга.&lt;/p&gt;
  &lt;p id=&quot;Fi7F&quot;&gt;Я остановился на виртуализации Proxmox (qemu). Т.к. она бесплатная, постоянно развивается и простая в использовании. При этом, имеет довольно внушительный функционал. &lt;/p&gt;
  &lt;p id=&quot;jeMo&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;w9bI&quot;&gt;&lt;strong&gt;Начало работ&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;kaQc&quot;&gt;Я недолго думая, собрал железо. Скачал дистрибутив, на момент написания статьи последняя версия была 7.2 И принялся её устанавливать.&lt;/p&gt;
  &lt;p id=&quot;YUAI&quot;&gt;Тогда я еще не подозревал какой квест ждет меня впереди.&lt;/p&gt;
  &lt;p id=&quot;qV1F&quot;&gt;Установка прошла быстро и с ней вряд ли у кого-то возникнут вопросы.&lt;/p&gt;
  &lt;p id=&quot;MwI9&quot;&gt;Я принялся создавать вмку, сразу пробросил &amp;quot;PCI устройство&amp;quot; в виде видеокарты и установил windows 10.&lt;/p&gt;
  &lt;section style=&quot;background-color:hsl(hsl(0, 0%, var(--autocolor-background-lightness, 95%)), 85%, 85%);&quot;&gt;
    &lt;p id=&quot;p2V6&quot;&gt;&lt;strong&gt;Важно&lt;/strong&gt;&lt;/p&gt;
    &lt;p id=&quot;Q62P&quot;&gt;Тип машины: q35&lt;/p&gt;
    &lt;p id=&quot;mHRK&quot;&gt;Bios: OVMF (UEFI)&lt;/p&gt;
  &lt;/section&gt;
  &lt;p id=&quot;grla&quot;&gt;GPU была обнаружена системой и я скачал, установил драйвера с оф. сайта Nvidia.&lt;/p&gt;
  &lt;p id=&quot;n4O6&quot;&gt;Но после установки увидел сообщение:&lt;/p&gt;
  &lt;figure id=&quot;ivf3&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;http://img.playground.ru/images/9/9/3-9.png&quot; width=&quot;783&quot; /&gt;
    &lt;figcaption&gt;Пример ошибки (скриншот не мой)&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;f7M1&quot;&gt;Естественно, я пошел &amp;quot;гуглить&amp;quot;. Как правильно нужно сделать проброс видеокарты. Перепробовав много решений из статей. Но ничего не выходило.&lt;/p&gt;
  &lt;p id=&quot;qwW3&quot;&gt;Спустя несколько часов, я наткнулся на зарубежный сайт. Где было описано, почему такое происходит.&lt;/p&gt;
  &lt;p id=&quot;1EKk&quot;&gt;Дело в том, что компания производитель видеокарты (Nvidia). Таким способом борется с использованием домашней версии видеокарты в виртуализации на уровне прошивки. Что бы покупали корпоративные версии карт, такие как Quadro и Titan. И даже на некоторое время я разочаровался и думал, что уже ничего не сделаешь.&lt;/p&gt;
  &lt;p id=&quot;VcdE&quot;&gt;Но вдруг вспомнил, что в proxmox есть возможность указать файл с прошивкой.&lt;/p&gt;
  &lt;p id=&quot;KP7T&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;LJLM&quot;&gt;Решение&lt;/h3&gt;
  &lt;p id=&quot;GCid&quot;&gt;Так как же можно решить эту проблему?&lt;/p&gt;
  &lt;p id=&quot;35I4&quot;&gt;Для начала я решил сдампить текущую прошивку видеокарты. Для этого есть инструмент от производителя видеокарты под названием &lt;a href=&quot;https://www.techpowerup.com/download/nvidia-nvflash/&quot; target=&quot;_blank&quot;&gt;nvflash&lt;/a&gt;. Дистрибутив утилиты есть под разные ОС. Мне нужна была под linux. Я скачал её, зашел на хост и сделал дамп командой:&lt;/p&gt;
  &lt;pre id=&quot;OQ8X&quot;&gt;./nvflash --save название.bin&lt;/pre&gt;
  &lt;p id=&quot;EZKa&quot;&gt;После, нам нужно внести изменения. Что бы снять ограничения с видеокарты.&lt;/p&gt;
  &lt;p id=&quot;DVfo&quot;&gt;Берем любой HEX-редактор и открываем этот дамп прошивки.&lt;/p&gt;
  &lt;p id=&quot;6DA4&quot;&gt;Далее делаем поиск по ANSI string со словом &amp;quot;Video&amp;quot;:&lt;/p&gt;
  &lt;figure id=&quot;s9Yh&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4c/83/4c834ec4-0c3e-4897-a365-8f21fa5f8bf1.png&quot; width=&quot;1193&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;Z9gX&quot;&gt;Теперь берем все, что до символа &amp;quot;U&amp;quot; или &amp;quot;US&amp;quot; на этой же строке. Выделяем это и до самого начала файла. И просто удаляем.&lt;/p&gt;
  &lt;figure id=&quot;pjj3&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/8f/69/8f6909f5-9844-4d57-b64f-475590059c40.png&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Выделение&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;vqnk&quot;&gt;Получается так:&lt;/p&gt;
  &lt;figure id=&quot;2UhL&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/75/84/758473d9-c2bd-4953-8c36-84be98314b03.png&quot; width=&quot;2560&quot; /&gt;
    &lt;figcaption&gt;Результат после удаления&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;oBJv&quot;&gt;И сохраняем по пути &lt;strong&gt;/usr/share/kvm/&lt;/strong&gt;vbios.bin&lt;/p&gt;
  &lt;p id=&quot;bMjX&quot;&gt;Прошивка готова! Но прошивать видеокарту сомнительное удовольствие.&lt;/p&gt;
  &lt;p id=&quot;c9r4&quot;&gt;По этому, мы просто укажем файл для нашего устройства самой вм.&lt;/p&gt;
  &lt;p id=&quot;rm9m&quot;&gt;Нужно пройти в каталог &lt;strong&gt;/etc/pve/qemu-server/&lt;/strong&gt;, там хранятся все конфигурации созданных вм.&lt;/p&gt;
  &lt;p id=&quot;LGqF&quot;&gt;Моя имела айди 100, по этому я открываю редактором файл &lt;strong&gt;100.conf&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;gv8T&quot;&gt;И дописываю &lt;strong&gt;,romfile=vbios.bin&lt;/strong&gt; в строку с &lt;strong&gt;hostpci0&lt;/strong&gt;.&lt;/p&gt;
  &lt;p id=&quot;fnBx&quot;&gt;Получается так:&lt;/p&gt;
  &lt;pre id=&quot;2l5w&quot;&gt;hostpci0: 0000:01:00,pcie=1,romfile=vbios.bin,x-vga=1&lt;/pre&gt;
  &lt;p id=&quot;pGmf&quot;&gt;Сохраняем изменения и запускаем нашу виртуальную машину.&lt;/p&gt;
  &lt;p id=&quot;SMcF&quot;&gt;&lt;em&gt;Но не забудьте, если вы используете в качестве гостевой ОС - Windows. То консоль proxmox не сможет зацепиться к вм. Нужно использовать RDP для подключения. Т.к. видеокарта будет &amp;quot;занята&amp;quot; вм.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;9Eal&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;zaPy&quot;&gt;Результат&lt;/h3&gt;
  &lt;p id=&quot;x1Pb&quot;&gt;После запуска, если вы сделали все правильно. То увидите следующее:&lt;/p&gt;
  &lt;figure id=&quot;PBZ4&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/66/30/66304ab7-3f40-4ec1-a35a-dc4cb7d9462f.png&quot; width=&quot;975&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;UrR2&quot;&gt;Ну и конечно в диспетчере задач&lt;/p&gt;
  &lt;figure id=&quot;KFqO&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/9f/f8/9ff8d63d-5000-4881-bdea-f7c6c0d72726.png&quot; width=&quot;832&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;eNfU&quot;&gt;Видеокарта теперь работает так, как будто она находится подключенной к вашему ПК. А не внутри виртуализации. Т.е. вм работает с ней напрямую.&lt;/p&gt;
  &lt;p id=&quot;l5qG&quot;&gt;Цель достигнута, хоть и было затрачено мной много времени на её решение.&lt;/p&gt;
  &lt;p id=&quot;vpF4&quot;&gt;Собственно по этому я и пишу эту статью. Что бы вам сэкономить время и поделиться опытом.&lt;/p&gt;

</content></entry><entry><id>sx66627:fuck_lock</id><link rel="alternate" type="text/html" href="https://blog.chudik.pro/fuck_lock?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><title>Свободный интернет 2022</title><published>2022-05-22T22:21:29.541Z</published><updated>2025-02-17T06:40:36.130Z</updated><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://img4.teletype.in/files/75/87/7587338e-e8d0-409b-9909-d77d6dc1c3c7.png"></media:thumbnail><category term="it" label="IT"></category><summary type="html">&lt;img src=&quot;https://img3.teletype.in/files/e5/c9/e5c9291c-5483-4d03-8097-2815cd36180b.jpeg&quot;&gt;Наверно для многих из вас, как и для меня. Есть некоторые неудобства, когда нужные для вас сайты становятся заблокированными на территории нашей страны. Да, некоторый контроль несомненно нужен в пределах разумного. Но иногда случается, что из-за небольшой оплошности выносят решения о блокировки ресурса. Именно по этому, я хочу поделиться с вами как можно получить доступ к заблокированным сайтам.</summary><content type="html">
  &lt;figure id=&quot;pw22&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/e5/c9/e5c9291c-5483-4d03-8097-2815cd36180b.jpeg&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;JI36&quot;&gt;&lt;em&gt;Наверно для многих из вас, как и для меня. Есть некоторые неудобства, когда нужные для вас сайты становятся заблокированными на территории нашей страны. Да, некоторый контроль несомненно нужен в пределах разумного. Но иногда случается, что из-за небольшой оплошности выносят решения о блокировки ресурса. Именно по этому, я хочу поделиться с вами как можно получить доступ к заблокированным сайтам.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Euur&quot;&gt;Но не забывайте о законах и ответственности, за их несоблюдение!&lt;/p&gt;
  &lt;p id=&quot;EmZW&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;eaMk&quot;&gt;&lt;strong&gt;В этой статье я не буду рассказывать как пользоваться VPN.&lt;/strong&gt; Вы и так знаете, а так же есть куча статей и готовых приложений в интернете для этого.&lt;/p&gt;
  &lt;p id=&quot;8qjj&quot;&gt;&lt;u&gt;Я же хочу поделиться с вами другими способами.&lt;/u&gt; Которые на мой взгляд намного лучше во многих смыслах.&lt;/p&gt;
  &lt;p id=&quot;tAS0&quot;&gt;Давайте начнем с минусов использования VPN:&lt;/p&gt;
  &lt;ul id=&quot;HD57&quot;&gt;
    &lt;li id=&quot;BfyL&quot;&gt;Весь трафик проходит через сервера другой страны&lt;/li&gt;
    &lt;li id=&quot;56q1&quot;&gt;Снижается пинг у &amp;quot;вашего интернета&amp;quot;&lt;/li&gt;
    &lt;li id=&quot;wFpc&quot;&gt;Мешает или делает невозможным использование, если вы работаете из дома и используете &amp;quot;рабочий&amp;quot; VPN и т.д. (нельзя использовать 2 и более VPN одновременно)&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;Lwv7&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;AghL&quot;&gt;Мы же воспользуемся другими методами.&lt;/p&gt;
  &lt;p id=&quot;UpRU&quot;&gt;Я опишу 2 способа, которые использую сам. Первый более удобный в использовании, второй проще в установке но имеет свои минусы.&lt;/p&gt;
  &lt;p id=&quot;mEAk&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;sTBA&quot;&gt;Способ №1 (мой выбор)&lt;/h3&gt;
  &lt;p id=&quot;WHi1&quot;&gt;&lt;a href=&quot;https://shadowsocks.org&quot; target=&quot;_blank&quot;&gt;Shadowsocks&lt;/a&gt; - Это бесплатный открытый проект от разработчиков из Китая.&lt;/p&gt;
  &lt;p id=&quot;X9Ko&quot;&gt;Он имеет пару из программ для клиента и сервера.&lt;/p&gt;
  &lt;p id=&quot;0bHb&quot;&gt;&lt;strong&gt;Принцип работы:&lt;/strong&gt; клиент изображает из себя сервер SOCKS5 прокси, получает входящие соединения, шифрует их, транслирует на сервер и там выпускает в интернет.&lt;/p&gt;
  &lt;p id=&quot;HykO&quot;&gt;&lt;strong&gt;Системные требования:&lt;/strong&gt;&lt;/p&gt;
  &lt;ul id=&quot;7xTh&quot;&gt;
    &lt;li id=&quot;tv6v&quot;&gt;&lt;strong&gt;Клиент:&lt;/strong&gt; желательно Windows 10 (но возможно будет работать и на более ранних версиях), есть версии и для других платформ.&lt;/li&gt;
    &lt;li id=&quot;aerB&quot;&gt;&lt;strong&gt;Сервер:&lt;/strong&gt; linux (VPS, dedicated и т.д.), docker, пара ядер CPU и 512 мб оперативной памяти&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;yGDi&quot;&gt;&lt;strong&gt;Установка:&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;ccNu&quot;&gt;Купите недорогую VPS у любого хостинг провайдера заграницей.&lt;/p&gt;
  &lt;p id=&quot;6vOe&quot;&gt;&lt;em&gt;Или используйте альтернативный бесплатный способ: &lt;a href=&quot;https://habr.com/ru/post/555768/&quot; target=&quot;_blank&quot;&gt;https://habr.com/ru/post/555768/&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;Rky7&quot;&gt;Установите linux (debian, ubuntu, centos и т.д.) и docker, docker-compose.&lt;/p&gt;
  &lt;p id=&quot;0T5V&quot;&gt;Далее создайте файл docker-compose.yml (название именно такое).&lt;/p&gt;
  &lt;p id=&quot;XkkH&quot;&gt;С содержимым:&lt;/p&gt;
  &lt;pre id=&quot;ChCD&quot;&gt;version: &amp;#x27;3&amp;#x27;
services:
  shadowsocks:
    image: shadowsocks/shadowsocks-libev:latest
    environment:
      - TZ=Europe/Moscow
      - PASSWORD=vash_parol
      - METHOD=aes-256-gcm
      - ARGS=--fast-open
    ports:
      - &amp;quot;8390:8388&amp;quot;
      - &amp;quot;8390:8388/udp&amp;quot;
    restart: unless-stopped&lt;/pre&gt;
  &lt;p id=&quot;Szbw&quot;&gt;Замените vash_parol в тексте на свой пароль. Рекомендую сделать его сложным и длинным.&lt;/p&gt;
  &lt;p id=&quot;Xct5&quot;&gt;&lt;em&gt;Т.к. ваша прокси будет смотреть в интернет, кто-то может воспользоваться ей в своих целях. По этому, крайне рекомендую делать сложный пароль.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;dMnd&quot;&gt;И выполните команду:&lt;/p&gt;
  &lt;pre id=&quot;Q1KO&quot;&gt;docker-compose up -d&lt;/pre&gt;
  &lt;p id=&quot;g0pK&quot;&gt;Убедитесь, что контейнер создался и запущен командой:&lt;/p&gt;
  &lt;pre id=&quot;ghZF&quot;&gt; docker ps&lt;/pre&gt;
  &lt;p id=&quot;Mx9S&quot;&gt;И не забудьте разрешить порт 8390 в фаерволле, если он у вас настроен.&lt;/p&gt;
  &lt;p id=&quot;7BJs&quot;&gt;На этом установка серверной части завершена.&lt;/p&gt;
  &lt;p id=&quot;m0Jt&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;fUxH&quot;&gt;&lt;strong&gt;Переходим к клиентской части на ПК.&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;LMCG&quot;&gt;Заходим на официальный сайт Shadowsocks и скачиваем клиент: &lt;a href=&quot;https://github.com/shadowsocks/shadowsocks-windows/releases&quot; target=&quot;_blank&quot;&gt;Windows&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;TZVE&quot;&gt;Для MacOS лучший клиент &lt;a href=&quot;https://github.com/shadowsocks/ShadowsocksX-NG/releases&quot; target=&quot;_blank&quot;&gt;ShadowsocksX-NG&lt;/a&gt;&lt;/p&gt;
  &lt;p id=&quot;J2JH&quot;&gt;Устанавливаем его и добавляем свой сервер:&lt;/p&gt;
  &lt;figure id=&quot;vghd&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/1c/89/1c896921-932a-4ae6-88b2-851ba45d44cf.jpeg&quot; width=&quot;583&quot; /&gt;
    &lt;figcaption&gt;Настройки прокси в программе Shadowsocks&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;NNWu&quot;&gt;После вам нужно в программе включить все как на скрине:&lt;/p&gt;
  &lt;figure id=&quot;SK1a&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/a8/67/a8672d63-2949-402a-af71-8fe65a83436a.jpeg&quot; width=&quot;684&quot; /&gt;
    &lt;figcaption&gt;Пример настроек программы в контекстном меню, из трея.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;OFUE&quot;&gt;&lt;em&gt;Системный прокси сервер включать не нужно, иначе вы направите весь трафик через shadowsocks.&lt;/em&gt;&lt;/p&gt;
  &lt;p id=&quot;idkM&quot;&gt;После этих действий. Программа установит соединение с вашим сервером и поднимет на ПК socks5 сервер с портом 1080.&lt;/p&gt;
  &lt;p id=&quot;3VnL&quot;&gt;Далее, для удобства использования. Я предлагаю сделать так, что бы вы ходили через shadowsocks только к заблокированным сайтам. &lt;/p&gt;
  &lt;p id=&quot;9YLa&quot;&gt;Для этого нужно установить расширение для браузера &lt;a href=&quot;https://chrome.google.com/webstore/detail/proxy-switchyomega/padekgcemlokbadohgkifijomclgjgif?hl=ru&quot; target=&quot;_blank&quot;&gt;Proxy SwitchyOmega&lt;/a&gt;. Он разработан как расширение для браузера Chrome и Firefox, но так же подойдет и для других. Которые сделаны на его движке. Например, такие как Opera (GX).&lt;/p&gt;
  &lt;p id=&quot;gjDr&quot;&gt;Что бы настроить данное расширение, нужно добавить ваш сервер.&lt;/p&gt;
  &lt;figure id=&quot;GaWV&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/6a/e7/6ae7d1b0-7a13-4fa6-bb2b-330a312ec6b8.png&quot; width=&quot;2124&quot; /&gt;
    &lt;figcaption&gt;Добавление SS сервера.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;o7bk&quot;&gt;И настроить правила для сайтов:&lt;/p&gt;
  &lt;figure id=&quot;L6ay&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img3.teletype.in/files/23/7f/237f3a5c-f13f-4ace-a6ba-2080bf672b6a.jpeg&quot; width=&quot;1774&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;1vqu&quot;&gt;Так нужно добавить каждый сайт, доступ к которому нужно разблокировать.&lt;/p&gt;
  &lt;p id=&quot;Mv92&quot;&gt;Тем самым, только к перечисленным здесь сайтам. Вы будете ходить через SS. А на все остальные сайты, как и обычно через свой интернет.&lt;/p&gt;
  &lt;p id=&quot;w3RY&quot;&gt;Включаем профиль autoswitch:&lt;/p&gt;
  &lt;figure id=&quot;3udV&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/c5/fb/c5fbebb6-dd3d-4125-b17e-0b2d864e9c50.jpeg&quot; width=&quot;222&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;diYe&quot;&gt;Не забывайте, что клиент SS должен быть запущен. Что бы все работало.&lt;/p&gt;
  &lt;p id=&quot;Ls7N&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;GXO8&quot;&gt;&lt;strong&gt;Использование на мобильном устройстве&lt;/strong&gt;&lt;/p&gt;
  &lt;p id=&quot;fq46&quot;&gt;Для IOS:&lt;/p&gt;
  &lt;p id=&quot;H4er&quot;&gt;UPD: ShadowLink более недоступен в AppStore. Как альтернативное бесплатное решение, предлагаю использовать &lt;a href=&quot;https://apps.apple.com/ru/app/v2box-v2ray-client/id6446814690&quot; target=&quot;_blank&quot;&gt;V2Box&lt;/a&gt;.&lt;/p&gt;
  &lt;p id=&quot;itn9&quot;&gt;Загрузите приложение &lt;a href=&quot;https://apps.apple.com/ru/app/shadowlink-shadowsocks-vpn/id1439686518&quot; target=&quot;_blank&quot;&gt;ShadowLink&lt;/a&gt;. Оно бесплатное, но предлагает подписку как и большинство других. Нам хватит и бесплатного функционала.&lt;/p&gt;
  &lt;p id=&quot;gESh&quot;&gt;Запустите приложение и на первом экране, с предложением приобрести подписку. Закройте его на крестик в правом верхнем углу экрана.&lt;/p&gt;
  &lt;p id=&quot;D1mN&quot;&gt;Далее нажмите на кнопку &amp;quot;сервер:&amp;quot; и выберите &amp;quot;+&amp;quot;&lt;/p&gt;
  &lt;figure id=&quot;nqUL&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/ca/73/ca73a160-b484-44fd-9d20-cdaecfcdd67b.jpeg&quot; width=&quot;344&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;DC0o&quot;&gt;Введите данные&lt;/p&gt;
  &lt;figure id=&quot;cuqw&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img4.teletype.in/files/7d/bd/7dbded09-d493-4725-827f-2ab8d357b1ba.jpeg&quot; width=&quot;344&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;rM2B&quot;&gt;И нажмите &amp;quot;Save&amp;quot;.&lt;/p&gt;
  &lt;p id=&quot;K3DG&quot;&gt;Выберите только что добавленный сервер и нажмите большую кнопку по середине.&lt;/p&gt;
  &lt;figure id=&quot;zOSA&quot; class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/55/8f/558f3e92-07f9-48df-b42f-f392c897c4d7.jpeg&quot; width=&quot;369&quot; /&gt;
    &lt;figcaption&gt;После этого вы можете проверить свой ip, например здесь &lt;a href=&quot;https://myip.ru&quot; target=&quot;_blank&quot;&gt;myip.ru&lt;/a&gt;. Если ваш ip совпадает с ip сервера SS, значит все работает правильно.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;BpVk&quot;&gt;Когда вам не нужно будет подключение через прокси, запустите программу и снова нажмите большую кнопку. Что бы отключиться от сервера.&lt;/p&gt;
  &lt;p id=&quot;TVf5&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;tqNA&quot;&gt;Для Android:&lt;/p&gt;
  &lt;p id=&quot;RPK4&quot;&gt;Скачиваем приложение &lt;a href=&quot;https://play.google.com/store/apps/details?id=com.github.shadowsocks&amp;hl=ru&quot; target=&quot;_blank&quot;&gt;ShadowSocks&lt;/a&gt; из Google Play.&lt;/p&gt;
  &lt;p id=&quot;jmdi&quot;&gt;И добавляем сервер аналогично IOS выше.&lt;/p&gt;
  &lt;figure id=&quot;fEvv&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/4e/fb/4efba7af-1aef-4f11-8463-9d46467bb3c0.jpeg&quot; width=&quot;303&quot; /&gt;
  &lt;/figure&gt;
  &lt;figure id=&quot;0WNH&quot; class=&quot;m_retina&quot;&gt;
    &lt;img src=&quot;https://img1.teletype.in/files/44/0e/440e43ee-5aef-4cd0-82e5-64d03da6fd76.jpeg&quot; width=&quot;303&quot; /&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;YAdS&quot;&gt;Для подключения, жмем кнопку по середине внизу. Там же можно и проверить подключение.&lt;/p&gt;
  &lt;p id=&quot;2VPi&quot;&gt;Удобно? Я думаю очень.&lt;/p&gt;
  &lt;p id=&quot;hp4s&quot;&gt;&lt;/p&gt;
  &lt;h3 id=&quot;YW7g&quot;&gt;Способ №2&lt;/h3&gt;
  &lt;p id=&quot;JUJc&quot;&gt;В случае блокировок по IP-адресу, провайдеры фильтруют только исходящие запросы на IP-адреса из реестра, но не входящие пакеты с этих адресов.&lt;br /&gt;Программа &lt;a href=&quot;https://reqrypt.org/reqrypt.html&quot; target=&quot;_blank&quot;&gt;ReQrypt&lt;/a&gt; работает как эффективный прокси-сервер: исходящие от клиента пакеты отправляются на сервер ReQrypt в зашифрованном виде, сервер ReQrypt пересылает их серверу назначения с подменой исходящего IP-адреса на клиентский, сервер назначения отвечает клиенту напрямую, минуя ReQrypt.&lt;/p&gt;
  &lt;p id=&quot;pKko&quot;&gt;Все, что нам нужно. Это установить программу и запустить её.&lt;/p&gt;
  &lt;p id=&quot;2h5O&quot;&gt;После чего мы увидим следующее у себя в браузере:&lt;/p&gt;
  &lt;figure id=&quot;W9mY&quot; class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://img2.teletype.in/files/19/72/1972c164-c304-4896-b978-4650aa824d4a.png&quot; width=&quot;1285&quot; /&gt;
    &lt;figcaption&gt;WebUI после запуска программы.&lt;/figcaption&gt;
  &lt;/figure&gt;
  &lt;p id=&quot;8Uom&quot;&gt;И вы можете ходить по всем сайтам. Вам открыт весь интернет )&lt;/p&gt;
  &lt;p id=&quot;5wvE&quot;&gt;Но в этом способе есть и свои &lt;strong&gt;минусы&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;AUr4&quot;&gt;
    &lt;li id=&quot;jRIA&quot;&gt;Весь трафик пойдет через данную программу&lt;/li&gt;
    &lt;li id=&quot;0HvF&quot;&gt;Повысится задержка сети, из-за передачи данных через сервера программы&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;P6ny&quot;&gt;Но есть и &lt;strong&gt;плюсы&lt;/strong&gt;:&lt;/p&gt;
  &lt;ul id=&quot;qd3f&quot;&gt;
    &lt;li id=&quot;mW9E&quot;&gt;Возвращаться данные от сайтов/сервисов будут напрямую вам.&lt;/li&gt;
    &lt;li id=&quot;UKvM&quot;&gt;Используемый ip будет ваш реальный.&lt;/li&gt;
    &lt;li id=&quot;Rd3p&quot;&gt;Никаких дополнительных действий не нужно!&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p id=&quot;C47c&quot;&gt;Очень легко пользоваться.&lt;/p&gt;
  &lt;p id=&quot;IFKd&quot;&gt;Запустили программу - получили доступ к сайтам. Не нужно больше, закрыли программу.&lt;/p&gt;
  &lt;p id=&quot;XPaT&quot;&gt;&lt;strong&gt;Вывод:&lt;/strong&gt; Самый простой и действенный способ. Помогает обойти блокировку у большинства провайдеров.&lt;/p&gt;
  &lt;p id=&quot;UBVd&quot;&gt;&lt;/p&gt;
  &lt;p id=&quot;tJY2&quot;&gt;На момент написания статьи, я считаю эти способы самыми эффективными.&lt;/p&gt;
  &lt;p id=&quot;u6WT&quot;&gt;Вы можете найти в интернете статьи с более полным описанием каждого из способов. Я же не старался углубляться в тонкие настройки и максимальный разбор каждого из способов. А пытался описать лишь самое главное, что бы каждый из интересующихся этим вопросом людей, смогли не тратя много времени достигнуть результата. Надеюсь вы нашли, что искали :)&lt;/p&gt;

</content></entry><entry><id>sx66627:iLAXWRd_h</id><link rel="alternate" type="text/html" href="https://blog.chudik.pro/iLAXWRd_h?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><title>Бэкап usb флешки под linux (debian)</title><published>2021-03-03T23:57:06.364Z</published><updated>2021-03-04T00:12:43.477Z</updated><category term="it" label="IT"></category><summary type="html">Статья перенесена из старого блога.</summary><content type="html">
  &lt;blockquote&gt;Статья перенесена из старого блога.&lt;/blockquote&gt;
  &lt;p&gt;На так давно мне пришлось сделать бэкап usb флешки.&lt;/p&gt;
  &lt;p&gt;Поискав в интернете, я наткнулся на статьи по утилите dd. Попробовав её, я понял, что это не совсем правильно.&lt;/p&gt;
  &lt;p&gt;И решил вам рассказать о более действенном и правильном способе.&lt;/p&gt;
  &lt;p&gt;Сейчас я вам расскажу подробнее..&lt;/p&gt;
  &lt;h3&gt;Правильный способ&lt;/h3&gt;
  &lt;p&gt;Как вы наверное уже догадываетесь, добиться желаемого можно не одним и даже не двумя, остроумными и не очень способами, но правильнее и проще всего на мой взгляд, использовать утилиту &lt;strong&gt;ddrescue&lt;/strong&gt;. Что существенно важно — имеется в виду &lt;strong&gt;GNU ddrescue&lt;/strong&gt;, а не давно уже устаревший оригинал.&lt;/p&gt;
  &lt;p&gt;Она, также как и cp, занимается копированием файлов, но в случае нахождения ошибок, ddrescue не прервёт работу с радостным сообщением о том, что пациент скорее мёртв, чем жив, а запомнит место с ошибкой, чтобы вернуться к нему позже и попробовать прочитать заново. Теперь уже медленно и нежно.&lt;/p&gt;
  &lt;p&gt;Используется ddrescue следующим образом:&lt;br /&gt;&lt;strong&gt;ddrescue &amp;lt;ключи&amp;gt; &amp;lt;файл который копируем&amp;gt; &amp;lt;новый файл, в который скопируем старый&amp;gt; &amp;lt;лог файл&amp;gt;&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;ddrescue не способна принимать входные данные с конвейра, или передавать на конвейр результат работы, что впрочем неудивительно. Возможность пропускать места с ошибками при первой итерации и возвращение к ним в последующих циклах подразумевает наличие файлов на выходе и входе.&lt;/p&gt;
  &lt;p&gt;Команда, которая выполнит операцию, аналогичную описанной выше, будет выглядеть так:&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;ddrescue /dev/sda2 win_c.img win_c.img.log&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Кстати, в данный момент я молчаливо подразумеваю, что жёсткий диск, с которого мы снимаем копию более-менее исправен и фокусов не выкидывает. Если с диском есть серьёзные проблемы, то лучше предварительно ознакомиться с подробностями использования ddrescue, например &lt;a href=&quot;http://habrahabr.ru/post/56796/&quot; target=&quot;_blank&quot;&gt;тут&lt;/a&gt;. и применить эти знания при снятии образа.&lt;/p&gt;
  &lt;h3&gt;Неправильный способ&lt;/h3&gt;
  &lt;p&gt;Часто можно встретить рекомендации использовать для копирования файла устройства или раздела программу под названием dd. Как правило, для снятия образа предлагается сделать что-то вот такое:&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;dd if=/dev/sda2 of=win_c.img&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Не делайте так! Хотя семантически подход верен (произойдёт копирование одного файла в другой), последствия могут быть очень печальны. Да, dd превосходит cp в том отношении, что при обнаружении ошибки cp прекратит работу, а dd не прекратит, но если на диске есть битые или просто плохо читаемые сектора, то dd будет продолжать попытки считать их содержимое пока из винчестера не повалит дым.&lt;/p&gt;
  &lt;p&gt;Да, у dd есть аргумент &lt;strong&gt;noerror&lt;/strong&gt;, но при его использовании копирование может быть выполнено с ошибками, попыток восстановления которых предпринято не будет. ddrescue в аналогичной ситуации после первого прохода вернётся к пропущенным местам и попробует прочитать их маленькими кусочками. И оставит лог файл, с помощью которого можно будет продолжать попытки вычитать сбойные места в будущем.&lt;/p&gt;
  &lt;p&gt;Короче, используйте ddrescue. А если кроме dd ничего нет, не забывайте про аргумент noerror.&lt;/p&gt;
  &lt;p&gt;Описанная выше процедура может применяться например для того, чтобы сохранить образ диска с только что установленной операционной системой для последующего восстановления. Да, настоящий линуксоид так поступать не станет, но среди пользователей операционной системы с другим названием это достаточно распространённая практика. И для периодического вдумчивого ремонта регулярно ломающегося компьютера какой нибудь симпатичной девушки её смело могут применять даже любители пингвинов. А если девушек больше некоторого, сугубо индивидуального для каждого самоделкина, количества, то данный метод просто незаменим. Главное не перепутать названия файлов с образами.&lt;/p&gt;
  &lt;h2&gt;Просмотр содержимого образа раздела (логического диска)&lt;/h2&gt;
  &lt;p&gt;Так как каждый раздел диска представлен файлом, можно предположить, что должен существовать штатный способ подключения файлов с образами к файловой системе. С определённой точки зрения так оно и есть. Конкретно для этого используется утилита &lt;strong&gt;mount&lt;/strong&gt;, с помощью которой можно поместить дерево файлов, содержащееся в образе, в любую директорию на ваш выбор. Этот процесс называется монтированием.&lt;/p&gt;
  &lt;p&gt;Итак, у нас уже есть образ, снятый с диска C: операционной системы Windows 7. Мы назвали образ win_c.img и хотим увидеть его содержимое в заранее созданной директории &lt;strong&gt;/mnt/win_c&lt;/strong&gt;. Для этого надо ввести команду &lt;strong&gt;mount -o loop win_c.img /mnt/win_c&lt;/strong&gt;.&lt;/p&gt;
  &lt;p&gt;Вот так можно убедиться, что образ, который вы собираетесь накатить на винчестер очередного розового ноутбука, является образом именного того диска C: который ожидается увидеть на данной конкретной машине. Ну, или можно просто скопировать с него файлы без которых никак нельзя обойтись и отправить этот образ во внешнюю тьму. А на ноутбук поставить последнюю Убунту или Федору.&lt;/p&gt;
  &lt;p&gt;But we can go deeper.&lt;/p&gt;
  &lt;h2&gt;Просмотр содержимого образа физического диска&lt;/h2&gt;
  &lt;p&gt;А вот с монтированием образа диска целиком всё не так просто. Ужасная правда состоит в том, что монтировать файлы из произвольного места файловой системы ядро не умеет и аргумент -o loop, команды mount, сигнализирует о том, что сначала надо связать образ с файлом виртуального устройства в директории /dev, и потом уже присоединить содержимое этого устройства к файловой системе.&lt;/p&gt;
  &lt;p&gt;Файлы виртуальных устройств создаются заранее (на этапе загрузки системы) и имеют названия loop0, loop1, loop2 и так далее по нарастающей.&lt;/p&gt;
  &lt;p&gt;Связать образ раздела с одним из этих файлов можно командой &lt;strong&gt;losetup&lt;/strong&gt;. Команда mount из предыдущего раздела на самом деле эквивалентна следующим двум командам.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;losetup /dev/loop0 win_c.img&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;mount /dev/loop0 /mnt/win_c&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Но вот для того, чтобы посмотреть содержимое образа в котором есть несколько разделов, этого недостаточно. Дело в том, что если выполнить команду losetup для такого файла, то с устройством /dev/loop0 будет связан весь образ целиком. То есть это устройство будет эквивалентом /dev/sda, а нам нужны эквиваленты /dev/sda1 и /dev/sda2.&lt;/p&gt;
  &lt;p&gt;Обладатели свежих версий программы losetup (читай гентушники и арчеводы) могут выполнить losetup c аргументом &lt;strong&gt;--partscan&lt;/strong&gt;, что приведёт к автоматическому созданию в директории /dev файлов, соответствующих разделам образа. То есть /dev/loop0p1, /dev/loop0p2 и так далее до самого горизонта. И вот уже эти файлы можно отдавать команде mount.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;losetup --partscan /dev/loop0 drive.img&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;mount /dev/loop0p2 /mnt/win_c&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Те же, кому не так повезло с дистрибутивом, могут воспользоваться программой &lt;strong&gt;kpartx&lt;/strong&gt;, которая сделает то же самое, но положит файлы соотвествующие разделaм не в директорию /dev, а в директорию /dev/mapper, откуда их можно монтировать и просматривать.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;kpartx -a /dev/loop0 drive.img&lt;/strong&gt;&lt;br /&gt;&lt;strong&gt;mount /dev/mapper/loop0p2 /mnt/win_c&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;But we can go even deeper than that…&lt;/p&gt;
  &lt;h2&gt;Развёртывание образа на физический носитель&lt;/h2&gt;
  &lt;p&gt;А теперь о том, как собственно накатить образ на другой диск. Как и раньше надо руководствоваться тем, что диски и разделы представлены в виде файлов. И если для снятия образа нужно было создать копию файла устройства или раздела, то для того, чтобы закатать этот образ обратно надо провести операцию копирования в обратную сторону. То есть вместо &lt;strong&gt;cp /dev/sda2 win_c.img&lt;/strong&gt; написать &lt;strong&gt;cp win_c.img /dev/sda2&lt;/strong&gt;. Ну и лучше помнить о советах, изложенных в руководстве по снятию образа. А именно пользоваться ddrescue и не пользоваться dd.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;ddrescue --force win_c.img /dev/sda2 win_c_restore.img.log&lt;/strong&gt;&lt;br /&gt;Конечно следует помнить, что раздел в который мы восстанавливаем образ (в данном случае /dev/sda2) должен быть не меньше файла с образом. Eсли же раздел окажется больше этого файла, то проблем при восстановлении не будет, но в разделе останется неразмеченное пространство. И придётся либо смириться с этим фактом, либо увеличить размер файловой системы до размера раздела каким-нибудь специализированным софтом (увеличивать, впрочем, обычно гораздо проще и быстрее, чем уменьшать).&lt;/p&gt;
  &lt;p&gt;P.S. Если у вас загрузочная &amp;quot;флешка&amp;quot;. То лучше воспользоваться утилитой бесплатной утилитой CloneZilla. Она делает полную копию раздела или диска, включая MBR (загрузочная область диска).&lt;/p&gt;
  &lt;blockquote&gt;Внимание!&lt;br /&gt;ddrescue не записывает в образ загрузочную область диска.&lt;/blockquote&gt;

</content></entry><entry><id>sx66627:rWRt6MZvb</id><link rel="alternate" type="text/html" href="https://blog.chudik.pro/rWRt6MZvb?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><title>Делаем бекапы всего, что для нас важно!</title><published>2021-03-03T23:53:46.925Z</published><updated>2021-03-04T00:12:27.682Z</updated><category term="it" label="IT"></category><summary type="html">&lt;img src=&quot;https://teletype.in/files/58/4b/584bc8ff-f2e4-4d38-a4c2-e65f061992b6.png&quot;&gt;Статья перенесена из старого блога.</summary><content type="html">
  &lt;blockquote&gt;Статья перенесена из старого блога.&lt;/blockquote&gt;
  &lt;p&gt;Однажды я хостился у одного горе-хостинга (как оказалось) под названием &lt;a href=&quot;http://cloudmouse.com/&quot; target=&quot;_blank&quot;&gt;CloudMouse&lt;/a&gt;. Которые, в один прекрасный, солнечный день. Вдруг стали недоступны по всем сервисам.&lt;/p&gt;
  &lt;p&gt;Кроме своей панели управления. Даже главная хостинга не открывалась. После саппорт ответил, что у них там какой-то сбой и они разбираются с этим. Это затянулось на двое суток.&lt;/p&gt;
  &lt;p&gt;А после ответ был таков:&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/58/4b/584bc8ff-f2e4-4d38-a4c2-e65f061992b6.png&quot; width=&quot;1904&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;И немного спустя, вот это:&lt;/p&gt;
  &lt;figure class=&quot;m_column&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/cb/d8/cbd879a2-a249-40db-8025-9adf3f8799fb.png&quot; width=&quot;1919&quot; /&gt;
  &lt;/figure&gt;
  &lt;p&gt;Естественно, все свои проекты с их VPS я потерял. Т.к. бэкапы были тоже у них! 7 лет работы, коту под хвост...&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Запомните:&lt;/strong&gt; &amp;quot;Есть 2 типа админов, кто еще не делает бэкапов и кто уже делает!&amp;quot; &lt;strong&gt;Это печальная правда.&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;И так, теперь к делу. После этой ситуации я всерьез задумался о бэкапировании ВСЕХ данных.&lt;/p&gt;
  &lt;p&gt;Сперва, я озадачился выбором самого хостинга под бэкапы. Не буду описывать весь процесс выбора по критериям из которых, я исходил.&lt;/p&gt;
  &lt;p&gt;Но мой выбор остановился здесь: &lt;a href=&quot;https://www.ihor.ru/backup&quot; target=&quot;_blank&quot;&gt;ihor.ru&lt;/a&gt; (не в коем случае, не реклама)&lt;/p&gt;
  &lt;p&gt;Но, их проект айхор существует с 2010 года. Об этом написано на сайте компании владельца. Дружелюбный, компетентный и быстрый саппорт.&lt;/p&gt;
  &lt;p&gt;Цены тоже не кусаются.&lt;/p&gt;
  &lt;p&gt;Так вот, получил я место под бэкапы и реквизиты доступа к нему. И тут началась &amp;quot;жара&amp;quot; в поиске и в итоге по написанию (допилу) скриптов автобэкапирования.&lt;/p&gt;
  &lt;p&gt;Подготовка&lt;/p&gt;
  &lt;p&gt;У меня на VPS под сайты, стоит debian.&lt;/p&gt;
  &lt;p&gt;В репозиториях есть такой пакет &lt;strong&gt;curlftpfs&lt;/strong&gt;. Который позволяет смонтировать ftp к системе.&lt;/p&gt;
  &lt;p&gt;Вводим:&lt;/p&gt;
  &lt;pre&gt;apt-get install curlftpfs&lt;/pre&gt;
  &lt;p&gt;Установили. Идем дальше:&lt;/p&gt;
  &lt;pre&gt;mkdir /mnt/backupcurlftpfs ftp://backup.pldev.ru/ /mnt/backup -o user=логин:пароль&lt;/pre&gt;
  &lt;p&gt;Теперь в папке /mnt/backup у нас содержимое ftp сервера. Туда мы и будем складывать наши копии. Надо добавить в автозагрузку точку монтирования нашего фтп сервера. Добавляем в файл /etc/rc.local строчку:&lt;/p&gt;
  &lt;pre&gt;curlftpfs ftp://backup.pldev.ru/ /mnt/backup -o user=логин:пароль&lt;/pre&gt;
  &lt;p&gt;Ну и наконец, переходим к скриптам.&lt;/p&gt;
  &lt;p&gt;Debian&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Скрипт для создания резервной копии всех баз MySQL&lt;/strong&gt;:&lt;/p&gt;
  &lt;pre&gt;#!/bin/sh# System + MySQL backup script### System Setup ###BACKUP=/root/backup/ ### Mysql ### [параметры доступа к нашим базам MySQL]MUSER=&amp;quot;root&amp;quot;MPASS=&amp;quot;пароль&amp;quot;MHOST=&amp;quot;localhost&amp;quot; ### FTP ###FTPD=&amp;quot;/db/&amp;quot;FTPU=&amp;quot;логин&amp;quot; # [имя пользавателя (логин) удаленного ftp-cервера]FTPP=&amp;quot;пароль&amp;quot; # [пароль доступа к удаленному ftp-серверу]FTPS=&amp;quot;ip-адрес&amp;quot; # [собственно, адрес ftp-сервера или его IP] ### Binaries ###TAR=&amp;quot;$(which tar)&amp;quot;GZIP=&amp;quot;$(which gzip)&amp;quot;FTP=&amp;quot;$(which ftp)&amp;quot;MYSQL=&amp;quot;$(which mysql)&amp;quot;MYSQLDUMP=&amp;quot;$(which mysqldump)&amp;quot; ## Today + hour in 24h format ###NOW=$(date +%Y%m%d) ### Create temp dir ### mkdir $BACKUP/$NOW ### name Mysql ###DBS=&amp;quot;$($MYSQL -u $MUSER -h $MHOST -p$MPASS -Bse &amp;#x27;show databases&amp;#x27;)&amp;quot;for db in $DBSdo ### ###mkdir $BACKUP/$NOW/$dbFILE=$BACKUP/$NOW/$db/$db.sql.gzecho $i; $MYSQLDUMP --add-drop-table --allow-keywords -q -c -u $MUSER -h $MHOST -p$MPASS $db $i | $GZIP -9 &amp;gt; $FILEdone ARCHIVE=$BACKUP/mysql-$NOW.tar.gzARCHIVED=$BACKUP/$NOW $TAR -zcvf $ARCHIVE $ARCHIVED ### ftp ###cd $BACKUPDUMPFILE=mysql-$NOW.tar.gz$FTP -n $FTPS &amp;lt;&amp;lt;END_SCRIPTquote USER $FTPUquote PASS $FTPPcd $FTPDmput $DUMPFILEquitEND_SCRIPT ### clear ### rm -rf $ARCHIVED exit&lt;/pre&gt;
  &lt;p&gt;И сохраняем его например под названием mysql_backup.sh, выполняем команду chmod +x что бы разрешил выполнение файла.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Делаем backup веб-сайтов&lt;/strong&gt;:&lt;/p&gt;
  &lt;pre&gt;#!/bin/bash # current dateDATE=&amp;#x60;date +%Y-%M-%d&amp;#x60; # y/m/d/h/m separatelyYEAR=&amp;#x60;date +%Y&amp;#x60;MONTH=&amp;#x60;date +%m&amp;#x60;DAY=&amp;#x60;date +%d&amp;#x60;HOURS=&amp;#x60;date +%H&amp;#x60;MINUTES=&amp;#x60;date +%M&amp;#x60; /bin/tar -zcvpf /mnt/backup/web/web_$DAY-$MONTH-$YEAR.tar.gz /www-data/* --exclude=*.tar.gz exit&lt;/pre&gt;
  &lt;p&gt;Сохраняем его под названием backup_web.sh и выполняем chmod +x backup_web.sh&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Делаем бэкап самой VPS (целой системы)&lt;/strong&gt;:&lt;/p&gt;
  &lt;pre&gt;#!/bin/bash echo Start: &amp;gt;&amp;gt; ./node_logecho &amp;#x60;date&amp;#x60; &amp;gt;&amp;gt; ./node_log # Что бы знать, когда стартует и сколько времени проходит.tar -zcvpf /backup/backup-&amp;#x60;date &amp;#x27;+%d-%B-%Y&amp;#x27;&amp;#x60;.tar.gz / --exclude=/proc --exclude=/sys --exclude=/dev/pts --exclude=/backup --exclude=/mnt --exclude=/dev --exclude=/lost+found --exclude=/etc/fstab --exclude=/boot/grub/grub.conf --exclude=/var/log --exclude=*.tar.gzmv /backup/backup-&amp;#x60;date &amp;#x27;+%d-%B-%Y&amp;#x27;&amp;#x60;.tar.gz /mnt/backup/node/backup-&amp;#x60;date &amp;#x27;+%d-%B-%Y&amp;#x27;&amp;#x60;.tar.gzecho Finish: &amp;gt;&amp;gt; ./node_logecho &amp;#x60;date&amp;#x60; &amp;gt;&amp;gt; ./node_logecho ----- &amp;gt;&amp;gt; ./node_log exit&lt;/pre&gt;
  &lt;p&gt;Сохраняем под названием backup_system.sh и выполняем так же chmod +x backup_system.sh&lt;/p&gt;
  &lt;p&gt;Советую, запустить каждый скрипт и проверить его работу! Естественно подправив его под себя. Пути, реквизиты доступа и т.д.&lt;/p&gt;
  &lt;p&gt;И после внести в crontab:&lt;/p&gt;
  &lt;pre&gt;# backup mysql10 0 */1 * * /root/backup_mysql &amp;gt; /dev/null# backup web0 3 */1 * * /root/backup_web.sh &amp;gt; /dev/null 2&amp;gt;/dev/null# backup system0 6 * * 1 /root/backup_system.sh &amp;gt; /dev/null 2&amp;gt;/dev/null&lt;/pre&gt;
  &lt;p&gt;C никсами вроде бы все. Все это сейчас успешно работает у меня.&lt;/p&gt;
  &lt;p&gt;Подготовка для Windows&lt;/p&gt;
  &lt;p&gt;Т.к. я являюсь администратором игрового сервера, а он запущен под окнами.&lt;/p&gt;
  &lt;p&gt;Пришлось заботиться и о резервном копировании данных под форточками&lt;/p&gt;
  &lt;p&gt;В &amp;quot;идеале&amp;quot; было бы подключить ftp как диск. И как оказалось, это вполне реально.&lt;/p&gt;
  &lt;p&gt;Представляю вашему вниманию программу &lt;strong&gt;NetDrive&lt;/strong&gt;. &lt;strong&gt;НО!&lt;/strong&gt; Последняя её бесплатная версия 1.3.4, дальше уже она идет платная. Триальная версия 30 дней.&lt;/p&gt;
  &lt;p&gt;А после будет куча &amp;quot;гемора&amp;quot; с ней, если её не купить. По-этому, я вам выкладываю именно &lt;a href=&quot;http://blog.chudik.club/content/uploadfile/201505/3c1c1431606455.zip&quot; target=&quot;_blank&quot;&gt;последнюю бесплатную версию&lt;/a&gt;.&lt;/p&gt;
  &lt;p&gt;C её настройкой проблем возникнуть не должно. Там все просто, заполняете данные для доступа к FTP и выбираете диск, у меня это F:.&lt;/p&gt;
  &lt;p&gt;И проверяем, видны ли файлы с ftp сервера. Если все ок, идем дальше.&lt;/p&gt;
  &lt;p&gt;Бэкапим данные под виндой&lt;/p&gt;
  &lt;p&gt;Создаем .bat файл с содержимым:&lt;/p&gt;
  &lt;pre&gt;@echo off &amp;quot;c:\program files\winrar\rar.exe&amp;quot; a -r -t -ed -m5 -x@c:\list.txt c:\backup-%date%.rar D:\life\ copy c:\backup-%date%.rar f:\backup-%date%.rar del c:\backup-%date%.rar&lt;/pre&gt;
  &lt;p&gt;Соответственно, у меня сохраняется папка D:\life. У вас должен быть установлен WinRar.&lt;/p&gt;
  &lt;p&gt;А так же создаем файл исключений (c:\list.txt):&lt;/p&gt;
  &lt;pre&gt;log**.bin*.log*.rar*.zipexception*&lt;/pre&gt;
  &lt;p&gt;Это файлы которые не попадут в архив.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Бэкапим MsSQL базы&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;Для этого есть утилита &lt;strong&gt;SQLBakFree&lt;/strong&gt;. Бесплатна и функциональна. В ней есть поддержка, как &amp;quot;заливки&amp;quot; на фтп. Так и &amp;quot;складывания&amp;quot; в папочку.&lt;/p&gt;
  &lt;p&gt;По-этому, на этом я не буду задерживаться.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;Бекапим логи&lt;/strong&gt;&lt;/p&gt;
  &lt;pre&gt;@echo offecho Save Logs GameServerrename LOG savedrd /s /q &amp;quot;D:\life\[5]GameServer\logfile&amp;quot; &amp;quot;c:\program files\winrar\rar.exe&amp;quot; a -r -t -ed -m5 backup-%day%.%month%.%year%_%hour%.rar D:\life\[5]GameServer\saved\*move backup-%day%.%month%.%year%_%hour%.rar f:\logs\ RD /S /Q saved&lt;/pre&gt;
  &lt;p&gt;Думаю, комментарии излишни.&lt;/p&gt;
  &lt;p&gt;И не забудьте, это все добавить в Планировщик заданий, что бы все происходило автоматически.&lt;/p&gt;
  &lt;p&gt;Итог&lt;/p&gt;
  &lt;p&gt;Делайте бэкапы всегда, тем самым вы застрахуете себя от подобных ситуаций. Как к сожалению, произошла у меня.&lt;/p&gt;
  &lt;p&gt;И вы не потеряете то, что для вас действительно важно.&lt;/p&gt;

</content></entry><entry><id>sx66627:6hmH1RALw</id><link rel="alternate" type="text/html" href="https://blog.chudik.pro/6hmH1RALw?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><title>Сломался Internet Explorer</title><published>2021-03-03T23:52:31.933Z</published><updated>2022-06-04T08:46:16.714Z</updated><category term="it" label="IT"></category><summary type="html">Статья перенесена из старого блога.</summary><content type="html">
  &lt;blockquote id=&quot;LdJJ&quot;&gt;Статья перенесена из старого блога.&lt;/blockquote&gt;
  &lt;p id=&quot;kYL7&quot;&gt;Это же майкрософт&lt;/p&gt;
  &lt;p id=&quot;EXgN&quot;&gt;Для них это нормально.&lt;/p&gt;
  &lt;p id=&quot;PnWb&quot;&gt;Система: Windows 7 Версия Internet Explorer 11. Все началось с того, что перестали открываться страницы. Да и не только, так же отказался работать Webmoney Keeper. И все приложения, косвенно использовавшие эксплорер. При этому у меня стоял Dr.Web лицензионный и прекрасно обновлялся.&lt;/p&gt;
  &lt;p id=&quot;C3Wz&quot;&gt;А это значит, дело не в вирусе. Долго я искал причины - откатывал обновления windows/ Проверял настройки соединений и прочее.&lt;/p&gt;
  &lt;p id=&quot;wIvD&quot;&gt;В итоге, решил &amp;quot;погуглить&amp;quot;. Пробовал разные методы, описанные на просторах интернета. Но ничего не помогало!&lt;/p&gt;
  &lt;p id=&quot;WCDU&quot;&gt;И тогда, я в отчаение подумал, что здесь поможет только переустановка системы. А это критично для меня.&lt;/p&gt;
  &lt;p id=&quot;JHEY&quot;&gt;И в друг, я наткнулся на форум Касперского, на котором предлагали попробовать софтину под названием &amp;quot;ADWCleaner&amp;quot;.&lt;/p&gt;
  &lt;p id=&quot;veiM&quot;&gt;Суть программы в том, что она ищет в системных файлах и во всех установленных браузерах, всякую нечисть. Типа, тулбаров, прописанных проксей и прочего хлама.&lt;/p&gt;
  &lt;p id=&quot;PJ9Q&quot;&gt;И вы не поверите, но она спасла мой эксплорер. Именно, она выполнила быстро проверку системы и удалила всю &lt;s&gt;шляпу&lt;/s&gt; фигню.&lt;/p&gt;
  &lt;p id=&quot;nSVy&quot;&gt;После этих действий, все заработало на ура. И система снова стала чистой!&lt;/p&gt;
  &lt;p id=&quot;VPJv&quot;&gt;Советую программу &lt;a href=&quot;http://adwcleaner.ru.uptodown.com/&quot; target=&quot;_blank&quot;&gt;ADWCleaner&lt;/a&gt;.&lt;/p&gt;

</content></entry><entry><id>sx66627:ckUANobRA</id><link rel="alternate" type="text/html" href="https://blog.chudik.pro/ckUANobRA?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><title>PHP и безопасность.</title><published>2021-03-03T23:51:35.513Z</published><updated>2021-03-04T00:11:48.059Z</updated><category term="it" label="IT"></category><summary type="html">&lt;img src=&quot;https://teletype.in/files/89/d2/89d29d23-d7ee-4849-a7b0-7662baf76bc2.png&quot;&gt;Статья перенесена из старого блога.</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/89/d2/89d29d23-d7ee-4849-a7b0-7662baf76bc2.png&quot; width=&quot;256&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote&gt;Статья перенесена из старого блога.&lt;/blockquote&gt;
  &lt;p&gt;Первое, что нужно сделать. Это ограничить выполнение системных команд через php.&lt;/p&gt;
  &lt;p&gt;А так же, закрыть большинство опасных функций в eval().&lt;/p&gt;
  &lt;p&gt;Вносим изменения в настройки php.ini&lt;/p&gt;
  &lt;pre&gt;disable_functions = pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,exec,system,popen,proc_open,shell_exec,eval,passthru,copy&lt;/pre&gt;
  &lt;p&gt;После, нужно установить &lt;a href=&quot;https://suhosin.org/stories/install.html&quot; target=&quot;_blank&quot;&gt;Suhosin&lt;/a&gt; модуль для php. Через него, мы сможем закрыть выполнение произвольного кода (eval) внутри пхп.&lt;/p&gt;
  &lt;p&gt;Когда установите и подключите suhosin - добавьте в файл php.ini следующее:&lt;/p&gt;
  &lt;pre&gt;[suhosin]suhosin.executor.disable_eval = 0suhosin.executor.eval.blacklist = &amp;quot;include,include_once,require,require_once,curl_init,fpassthru,file,base64_encode,base64_decode,mail,exec,system,proc_open,leak,syslog,pfsockopen,shell_exec,ini_restore,symlink,stream_socket_server,proc_nice,popen,proc_get_status,dl, pcntl_exec, pcntl_fork, pcntl_signal,pcntl_waitpid, pcntl_wexitstatus, pcntl_wifexited, pcntl_wifsignaled,pcntl_wifstopped, pcntl_wstopsig, pcntl_wtermsig, socket_accept,socket_bind, socket_connect, socket_create, socket_create_listen,socket_create_pair,link,register_shutdown_function,register_tick_function,file_get_contents,file,fopen,fsockopen,readdir,mysql_connect,mssql_connect,copy,url_exec,proc_terminate&amp;quot;suhosin.post.max_vars = 4096suhosin.get.max_value_length = 2000suhosin.request.max_varname_length = 350suhosin.request.max_vars = 4096&lt;/pre&gt;
  &lt;p&gt;И перезагрузите apache.&lt;/p&gt;
  &lt;p&gt;На этом, основная часть работы завершена. Но все же, я бы посоветовал на этом не останавливаться.&lt;/p&gt;
  &lt;p&gt;Проверьте, на всех своих сайтах, на всех своих cms есть ли в папке upload(s) наличие файла .htaccess .&lt;/p&gt;
  &lt;p&gt;В нем должны содержаться примерно такие строки:&lt;/p&gt;
  &lt;pre&gt;&amp;lt;Files ~ &amp;quot;^.*\.(php|cgi|pl|php3|php4|php5|php6|phtml|shtml)&amp;quot;&amp;gt;    Order allow,deny    Deny from all&amp;lt;/Files&amp;gt;&lt;/pre&gt;
  &lt;p&gt;Данные строки запрещают выполнение/запуск файлов, которые перечислены выше. В данном каталоге и во всех, что находятся внутри текущего каталога.&lt;/p&gt;
  &lt;p&gt;Что на это даст?&lt;/p&gt;
  &lt;p&gt;Дело в том, что большинство распространенных движков, зачастую имеют уязвимости. Через которые вам могут загрузить шеллы. И как правило, грузятся они чаще всего в папку аплодс.&lt;/p&gt;
  &lt;p&gt;А с помощью данного правила для apache, вы сможете воспрепятствовать их запуску. Даже, если вам все-таки загрузили его.&lt;/p&gt;
  &lt;p&gt;На этом, пока все. Если что-то вспомню, дополню статью.&lt;/p&gt;

</content></entry><entry><id>sx66627:fEFh8iFIe</id><link rel="alternate" type="text/html" href="https://blog.chudik.pro/fEFh8iFIe?utm_source=teletype&amp;utm_medium=feed_atom&amp;utm_campaign=sx66627"></link><title>Proxmox 4x и 5х приводим к лучшему виду</title><published>2021-03-03T23:50:21.153Z</published><updated>2021-03-04T00:11:26.942Z</updated><category term="it" label="IT"></category><summary type="html">&lt;img src=&quot;https://teletype.in/files/e1/e5/e1e51b86-7894-4a40-ad08-02bac0ba61c0.png&quot;&gt;Статья перенесена из старого блога.</summary><content type="html">
  &lt;figure class=&quot;m_original&quot;&gt;
    &lt;img src=&quot;https://teletype.in/files/e1/e5/e1e51b86-7894-4a40-ad08-02bac0ba61c0.png&quot; width=&quot;400&quot; /&gt;
  &lt;/figure&gt;
  &lt;blockquote&gt;Статья перенесена из старого блога.&lt;/blockquote&gt;
  &lt;p&gt;Не буду рассказывать, что это за продукт и как его устанавливать. Таких статей в интернете полно.&lt;/p&gt;
  &lt;p&gt;Лучше поговорим о том, как сделать для веб-панели валидный ssl сертификат бесплатно. И как убрать всплывающее окно &amp;quot;No valid subscription&amp;quot;.&lt;/p&gt;
  &lt;p&gt;И так начнем.&lt;/p&gt;
  &lt;p&gt;Создаем валидный сертификат с помощью Let&amp;#x27;s Encrypt. Для этого, должен быть обязательно привязан домен к вашей системе.&lt;/p&gt;
  &lt;p&gt;В удобной для вас папке выполняем:&lt;/p&gt;
  &lt;pre&gt;wget &amp;#x27;https://github.com/Neilpang/acme.sh/archive/master.zip&amp;#x27;unzip master.zip&lt;/pre&gt;
  &lt;p&gt;Далее установка:&lt;/p&gt;
  &lt;pre&gt;mkdir /etc/pve/.lecd /root/acme.sh-master./acme.sh --install --accountconf /etc/pve/.le/account.conf --accountkey /etc/pve/.le/account.key --accountemail &amp;quot;Ваш_имэйл&amp;quot;&lt;/pre&gt;
  &lt;p&gt;Проверяем конфиг /etc/pve/.le/account.conf&lt;/p&gt;
  &lt;ul&gt;
    &lt;li&gt;ACCOUNT_EMAIL должен содержать вашу рабочую почту.&lt;/li&gt;
    &lt;li&gt;ACCOUNT_KEY_PATH должен быть путь &amp;quot;/etc/pve/.le/account.key&amp;quot;&lt;/li&gt;
  &lt;/ul&gt;
  &lt;p&gt;Теперь надо проверить, что 80 порт не закрыт извне. Он нужен, для подтверждения, что домен принадлежит вам.&lt;/p&gt;
  &lt;p&gt;Выполняем:&lt;/p&gt;
  &lt;pre&gt;./acme.sh --issue --standalone --keypath /etc/pve/local/pveproxy-ssl.key --fullchainpath /etc/pve/local/pveproxy-ssl.pem --reloadcmd &amp;quot;systemctl restart pveproxy&amp;quot; -d ваш_домен&lt;/pre&gt;
  &lt;p&gt;Все, можете проверять.&lt;/p&gt;
  &lt;p&gt;И что бы каждый раз вам не регистрировать по-новой вручную сертификат. Создадим скрипт.&lt;/p&gt;
  &lt;pre&gt;#!/usr/bin/env shcd /root/acme.sh-master/./acme.sh --issue --standalone --keypath /etc/pve/local/pveproxy-ssl.key --fullchainpath /etc/pve/local/pveproxy-ssl.pem --reloadcmd &amp;quot;systemctl restart pveproxy&amp;quot; -d ваш_домен --force&lt;/pre&gt;
  &lt;p&gt;Назовем его update_cert.sh и добавим в крон:&lt;/p&gt;
  &lt;pre&gt;0 0 * * * /root/acme.sh-master/update_cert.sh &amp;gt; /dev/null&lt;/pre&gt;
  &lt;p&gt;Ну а теперь, уберем раздражающее окно о том, что у нас нет подписки. Оно появляется каждый раз, когд мы логинитесь в веб-панель.&lt;/p&gt;
  &lt;p&gt;Создадим скрипт:&lt;/p&gt;
  &lt;pre&gt;#!/usr/bin/env shsed -i.bak &amp;quot;s/data.status !== &amp;#x27;Active&amp;#x27;/xyu == pizdec/g&amp;quot; /usr/share/pve-manager/ext6/pvemanagerlib.js&lt;/pre&gt;
  &lt;p&gt;Извиняюсь, за переменные. Но таких, точно нет в этом продукте, а нам это и нужно ;) Выполняете скрипт и готово.&lt;/p&gt;
  &lt;p&gt;Но не спешите его удалять, при обновлении proxmox окно может вернуться и вам придеться выполнить скрипт снова.&lt;/p&gt;
  &lt;p&gt;&lt;strong&gt;UPD:&lt;/strong&gt;&lt;/p&gt;
  &lt;p&gt;На версии 5 и выше, что бы убрать напоминание о подписке, нужно выполнить:&lt;/p&gt;
  &lt;pre&gt;sed -i &amp;quot;s/getNoSubKeyHtml:/getNoSubHtml_:/&amp;quot; /usr/share/javascript/proxmox-widget-toolkit/proxmoxlib.js&lt;/pre&gt;

</content></entry></feed>