<?xml version="1.0" encoding="utf-8" ?><rss version="2.0" xmlns:tt="http://teletype.in/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:media="http://search.yahoo.com/mrss/"><channel><title>Игорь Павленко</title><generator>teletype.in</generator><description><![CDATA[Игорь Павленко]]></description><link>https://teletype.in/@idsmef?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><atom:link rel="self" type="application/rss+xml" href="https://teletype.in/rss/idsmef?offset=0"></atom:link><atom:link rel="next" type="application/rss+xml" href="https://teletype.in/rss/idsmef?offset=10"></atom:link><atom:link rel="search" type="application/opensearchdescription+xml" title="Teletype" href="https://teletype.in/opensearch.xml"></atom:link><pubDate>Mon, 18 May 2026 12:36:27 GMT</pubDate><lastBuildDate>Mon, 18 May 2026 12:36:27 GMT</lastBuildDate><item><guid isPermaLink="true">https://teletype.in/@idsmef/V0CW47kSKAy</guid><link>https://teletype.in/@idsmef/V0CW47kSKAy?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><comments>https://teletype.in/@idsmef/V0CW47kSKAy?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef#comments</comments><dc:creator>idsmef</dc:creator><title>Полная инструкция: Let’s Encrypt + Hysteria2 для Remnawave</title><pubDate>Mon, 06 Apr 2026 13:25:28 GMT</pubDate><description><![CDATA[В этой инструкции мы настроим автоматическое получение и обновление TLS-сертификатов от Let’s Encrypt и подключим их к ноде Remnawave для работы протокола Hysteria2 (QUIC + TLS).]]></description><content:encoded><![CDATA[
  <h2 id="FyCG">Введение</h2>
  <p id="nA5r">В этой инструкции мы настроим <strong>автоматическое получение и обновление TLS-сертификатов</strong> от Let’s Encrypt и подключим их к ноде Remnawave для работы протокола <strong>Hysteria2</strong> (QUIC + TLS).</p>
  <blockquote id="VcVe"><strong>Что вы получите:</strong><br />— Действующий сертификат для вашего домена (например, <code>h2.example.com</code>)<br />— Интеграцию с контейнером Remnawave через Docker volume<br />— Автообновление сертификатов раз в месяц через cron</blockquote>
  <hr />
  <h2 id="rKke">Требования</h2>
  <ul id="9G7Y">
    <li id="4FQf">Сервер с <strong>открытым портом 80</strong> (на время первого получения сертификата) и <strong>443</strong> (для работы Hysteria)</li>
    <li id="745B">Установленный <strong>Docker</strong> и <strong>Docker Compose</strong></li>
    <li id="gF9g">Домен, направленный A-записью на IP вашего сервера</li>
    <li id="PBmP">Установленная и работающая нода <strong>Remnawave</strong> (обычно в <code>/opt/remnanode</code>)</li>
  </ul>
  <hr />
  <h2 id="Zmbs">1. Подготовка и установка Certbot</h2>
  <p id="O2m2">Создадим рабочую директорию для Certbot и базовый <code>docker-compose.yml</code>.</p>
  <p id="0YLY">bash</p>
  <pre id="yK1H">mkdir -p /opt/certbot &amp;&amp; cd /opt/certbot
nano docker-compose.yml</pre>
  <p id="hl4o">Вставьте следующее содержимое:</p>
  <p id="8C2J">yaml</p>
  <pre id="WvGt">services:
  certbot:
    container_name: certbot
    image: certbot/certbot
    network_mode: host
    volumes:
      - ./certs:/etc/letsencrypt</pre>
  <p id="LqHy">Сохраните (<code>Ctrl+O</code>, <code>Enter</code>, <code>Ctrl+X</code>).</p>
  <blockquote id="1YkN"><strong>Что здесь происходит:</strong><br />— <code>network_mode: host</code> — Certbot сможет слушать порт 80 на хосте<br />— <code>./certs:/etc/letsencrypt</code> — сертификаты будут храниться в <code>/opt/certbot/certs</code></blockquote>
  <hr />
  <h2 id="dg6G">2. Первичное получение сертификата</h2>
  <p id="sgAr"><strong>Перед запуском убедитесь, что порт 80 свободен</strong> (ни Nginx, ни нода Remnawave, ни другие сервисы его не занимают).</p>
  <p id="sUgl">Замените:</p>
  <ul id="38wv">
    <li id="qv41"><code>your-domain.com</code> → ваш домен (например, <code>h2.mysite.com</code>)</li>
    <li id="2eXP"><code>admin@your-domain.com</code> → ваш email</li>
  </ul>
  <p id="SMi3">bash</p>
  <pre id="MpW2">docker run --rm \
  -v $(pwd)/certs:/etc/letsencrypt \
  -v $(pwd)/var-lib-letsencrypt:/var/lib/letsencrypt \
  --network host \
  certbot/certbot certonly --standalone \
  --non-interactive --agree-tos \
  --email admin@your-domain.com \
  -d your-domain.com</pre>
  <p id="Wmwb"><strong>Пример с реальными данными:</strong></p>
  <p id="GLM2">bash</p>
  <pre id="BL3m">docker run --rm \
  -v $(pwd)/certs:/etc/letsencrypt \
  -v $(pwd)/var-lib-letsencrypt:/var/lib/letsencrypt \
  --network host \
  certbot/certbot certonly --standalone \
  --non-interactive --agree-tos \
  --email admin@example.com \
  -d h2.example.com</pre>
  <p id="hW2n">После успешного выполнения сертификаты появятся в папке:</p>
  <p id="7FQ8">text</p>
  <pre id="c54i">/opt/certbot/certs/live/your-domain.com/
├── fullchain.pem
├── privkey.pem
└── ...</pre>
  <hr />
  <h2 id="0EyJ">3. Проброс сертификатов в Remnawave</h2>
  <p id="l7OL">Теперь подключим папку с сертификатами к контейнеру ноды Remnawave.</p>
  <p id="GpZ1">bash</p>
  <pre id="HGWP">cd /opt/remnanode
nano docker-compose.yml</pre>
  <p id="0yAa">Найдите секцию <code>volumes:</code> внутри <code>services.remnanode</code> и добавьте строку:</p>
  <p id="OVEJ">yaml</p>
  <pre id="YLQZ">services:
  remnanode:
    ...
    volumes:
      - &#x27;/opt/certbot/certs:/etc/letsencrypt:ro&#x27;   # &lt;-- добавить эту строку</pre>
  <p id="EVw6"><strong>Важно:</strong> режим <code>:ro</code> означает <em>read-only</em> — безопасно.</p>
  <p id="Cp0d">Пример готового блока:</p>
  <p id="CSn7">yaml</p>
  <pre id="34ru">services:
  remnanode:
    image: remnawave/backend:latest
    container_name: remnanode
    restart: always
    network_mode: host
    volumes:
      - ./data:/app/data
      - &#x27;/opt/certbot/certs:/etc/letsencrypt:ro&#x27;</pre>
  <p id="jdl3">Перезапустите ноду:</p>
  <p id="JoxS">bash</p>
  <pre id="ERHW">docker compose down &amp;&amp; docker compose up -d</pre>
  <hr />
  <h2 id="UJzS">4. Настройка профиля Hysteria2 в панели Remnawave</h2>
  <p id="1vKh">В веб-панели Remnawave при создании или редактировании <strong>профиля узла (node)</strong> вставьте следующий JSON.</p>
  <blockquote id="g0zA">⚠️ <strong>Обязательно замените</strong> <code>your-domain.com</code> на ваш реальный домен в путях <code>keyFile</code> и <code>certificateFile</code>.</blockquote>
  <p id="FuvS">json</p>
  <pre id="AEHX">{
  &quot;log&quot;: { &quot;loglevel&quot;: &quot;none&quot; },
  &quot;inbounds&quot;: [
    {
      &quot;tag&quot;: &quot;HYSTERIA-BBR&quot;,
      &quot;port&quot;: 443,
      &quot;listen&quot;: &quot;0.0.0.0&quot;,
      &quot;protocol&quot;: &quot;hysteria&quot;,
      &quot;settings&quot;: {
        &quot;clients&quot;: [],
        &quot;version&quot;: 2
      },
      &quot;streamSettings&quot;: {
        &quot;network&quot;: &quot;hysteria&quot;,
        &quot;security&quot;: &quot;tls&quot;,
        &quot;finalmask&quot;: {
          &quot;quicParams&quot;: { &quot;debug&quot;: false, &quot;congestion&quot;: &quot;bbr&quot; }
        },
        &quot;tlsSettings&quot;: {
          &quot;alpn&quot;: [&quot;h3&quot;],
          &quot;certificates&quot;: [
            {
              &quot;keyFile&quot;: &quot;/etc/letsencrypt/live/your-domain.com/privkey.pem&quot;,
              &quot;certificateFile&quot;: &quot;/etc/letsencrypt/live/your-domain.com/fullchain.pem&quot;
            }
          ]
        },
        &quot;hysteriaSettings&quot;: { &quot;version&quot;: 2 }
      }
    }
  ],
  &quot;outbounds&quot;: [
    { &quot;tag&quot;: &quot;DIRECT&quot;, &quot;protocol&quot;: &quot;freedom&quot; },
    { &quot;tag&quot;: &quot;BLOCK&quot;, &quot;protocol&quot;: &quot;blackhole&quot; }
  ],
  &quot;routing&quot;: {
    &quot;rules&quot;: [
      { &quot;ip&quot;: [&quot;geoip:private&quot;], &quot;outboundTag&quot;: &quot;BLOCK&quot; },
      { &quot;domain&quot;: [&quot;geosite:private&quot;], &quot;outboundTag&quot;: &quot;BLOCK&quot; },
      { &quot;protocol&quot;: [&quot;bittorrent&quot;], &quot;outboundTag&quot;: &quot;BLOCK&quot; }
    ]
  }
}</pre>
  <p id="Vth0"><strong>Что важно:</strong></p>
  <ul id="vNdy">
    <li id="9KZh">Путь к сертификатам — <strong>внутри контейнера Remnawave</strong>: <code>/etc/letsencrypt/live/...</code></li>
    <li id="tIpu">Именно туда мы пробросили папку <code>/opt/certbot/certs</code> на хосте</li>
    <li id="5zfs">Протокол Hysteria2 работает поверх <strong>QUIC</strong>, поэтому указан <code>alpn: [&quot;h3&quot;]</code></li>
  </ul>
  <hr />
  <h2 id="q2Wh">5. Автоматическое обновление сертификатов (Cron)</h2>
  <p id="JBHW">Сертификаты Let’s Encrypt действительны <strong>90 дней</strong>. Настроим ежемесячное обновление.</p>
  <p id="YVh9">bash</p>
  <pre id="nmmZ">crontab -e</pre>
  <p id="ZUBo">Добавьте строку (запуск 28-го числа каждого месяца в 00:00):</p>
  <p id="51c7">text</p>
  <pre id="w57t">0 0 28 * * cd /opt/certbot &amp;&amp; docker compose run --rm certbot renew</pre>
  <p id="x8kw"><strong>Как проверить вручную:</strong></p>
  <p id="1Cqj">bash</p>
  <pre id="UWhN">cd /opt/certbot
docker compose run --rm certbot renew --dry-run</pre>
  <blockquote id="pQG7"><code>--dry-run</code> — тестовый режим без реального обновления.</blockquote>
  <hr />
  <h2 id="1iXP">Проверка работоспособности</h2>
  <ol id="fIjt">
    <li id="gI2H"><strong>Сертификат получен:</strong>bashls /opt/certbot/certs/live/your-domain.com/</li>
    <li id="XN74"><strong>Remnawave видит сертификаты:</strong>bashdocker exec remnanode ls /etc/letsencrypt/live/your-domain.com/</li>
    <li id="zC2A"><strong>Порт 443 слушается:</strong>bashss -tulpn | grep 443</li>
    <li id="Wtir"><strong>Подключение клиентом Hysteria2</strong> — используйте ваши ключи из панели Remnawave.</li>
  </ol>
  <hr />
  <h2 id="JVmY">Устранение типичных проблем</h2>
  <p id="ChzW">Проблема</p>
  <p id="4Fbu">Решение</p>
  <p id="ZlXX"><code>port 80 is already in use</code></p>
  <p id="3XTe">Остановите nginx / apache / другой сервис: <code>systemctl stop nginx</code></p>
  <p id="A1sH">Сертификат не обновляется в cron</p>
  <p id="HCci">Проверьте путь: <code>cd /opt/certbot</code> должен работать. Добавьте <code>--debug</code> в команду renew</p>
  <p id="Dphm">Remnawave не видит файлы</p>
  <p id="qzCL">Убедитесь, что volume проброшен именно в <code>/etc/letsencrypt</code>, а не в другую папку</p>
  <p id="trqF">Hysteria2 не стартует</p>
  <p id="pJRa">Проверьте JSON: нет ли лишних запятых. Убедитесь, что <code>keyFile</code> и <code>certificateFile</code> указывают на существующие файлы внутри контейнера</p>
  <hr />
  <h2 id="galx">Итог</h2>
  <p id="avZp">Вы настроили:</p>
  <ul id="Sfxl">
    <li id="LmFO">✅ Автоматическое получение Let’s Encrypt сертификата для вашего домена</li>
    <li id="heBZ">✅ Проброс сертификатов в контейнер Remnawave</li>
    <li id="DrdR">✅ Рабочий профиль Hysteria2 с TLS и BBR</li>
    <li id="Tbxf">✅ Ежемесячное обновление сертификатов через cron</li>
  </ul>
  <p id="kUux">Теперь ваша нода Remnawave готова принимать <strong>Hysteria2</strong> соединения по защищённому TLS каналу.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@idsmef/NI6pAKt9Igg</guid><link>https://teletype.in/@idsmef/NI6pAKt9Igg?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><comments>https://teletype.in/@idsmef/NI6pAKt9Igg?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef#comments</comments><dc:creator>idsmef</dc:creator><title>📘 Инструкция по использованию Yandex Random Hunter</title><pubDate>Mon, 06 Apr 2026 07:16:21 GMT</pubDate><description><![CDATA[bash]]></description><content:encoded><![CDATA[
  <h1 id="bEIS">📘 Инструкция по использованию Yandex Random Hunter</h1>
  <h2 id="R7NN">📋 Оглавление</h2>
  <ol id="n4Yg">
    <li id="m5ik">Системные требования</li>
    <li id="G7XA">Установка</li>
    <li id="1XBZ">Настройка</li>
    <li id="rNUb">Запуск</li>
    <li id="JM93">Работа скрипта</li>
    <li id="33hB">Примеры использования</li>
    <li id="LIMv">Частые проблемы</li>
    <li id="uGAq">Советы</li>
  </ol>
  <hr />
  <h2 id="OX4g">💻 Системные требования</h2>
  <h3 id="dLCO">Необходимое ПО:</h3>
  <ul id="PbMx">
    <li id="YgfE"><strong>Linux/macOS/WSL</strong> (Windows)</li>
    <li id="GmvG"><strong>bash</strong> 4.0+</li>
    <li id="tiML"><strong>Yandex Cloud CLI</strong> (yc)</li>
    <li id="mrsk"><strong>jq</strong> (парсер JSON)</li>
  </ul>
  <h3 id="4aMT">Требования к аккаунту:</h3>
  <ul id="N12H">
    <li id="Jcc0">Аккаунт Yandex Cloud</li>
    <li id="zsoq">Активный платежный аккаунт (или пробный период)</li>
    <li id="FfOc">Настроенный CLI с авторизацией</li>
  </ul>
  <hr />
  <h2 id="frJc">🔧 Установка</h2>
  <h3 id="MUN6">1. Установка Yandex Cloud CLI</h3>
  <p id="VGlm">bash</p>
  <pre id="V9MZ"># Linux/macOS
curl https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash

# Перезагрузите оболочку
exec -l $SHELL

# Проверка установки
yc version</pre>
  <h3 id="6KBr">2. Установка jq</h3>
  <p id="18M8">bash</p>
  <pre id="bwLG"># Ubuntu/Debian
sudo apt-get install jq -y

# CentOS/RHEL
sudo yum install jq -y

# macOS
brew install jq

# Windows (через Chocolatey)
choco install jq</pre>
  <h3 id="eE9o">3. Настройка Yandex Cloud</h3>
  <p id="y18b">bash</p>
  <pre id="EdSl"># Инициализация
yc init

# Следуйте инструкциям:
# - Выберите аккаунт
# - Выберите облако
# - Выберите каталог (или создайте новый)
# - Подтвердите настройки</pre>
  <h3 id="5my4">4. Сохранение скрипта</h3>
  <p id="HLiZ">bash</p>
  <pre id="mdVL"># Создайте файл
nano yandex-hunter.sh

# Скопируйте код скрипта

# Сделайте исполняемым
chmod +x yandex-hunter.sh</pre>
  <hr />
  <h2 id="wdL3">⚙️ Настройка</h2>
  <h3 id="1KYA">Основные параметры (в начале скрипта):</h3>
  <p id="ml2G">bash</p>
  <pre id="29H2">TARGET=&quot;51.&quot;           # Целевая сеть (первые октеты)
ZONE=&quot;ru-central1-b&quot;   # Зона доступности
MIN_DELAY=3            # Минимальная задержка (сек)
MAX_DELAY=8            # Максимальная задержка (сек)</pre>
  <h3 id="jX7t">Как выбрать цель:</h3>
  <p id="ualz">Цель</p>
  <p id="5Pmp">Значение TARGET</p>
  <p id="NXXo">Примечание</p>
  <p id="mrVz">Сеть 51.x.x.x</p>
  <p id="DwTn"><code>&quot;51.&quot;</code></p>
  <p id="8pcs">Наиболее популярная</p>
  <p id="EuYC">Сеть 84.x.x.x</p>
  <p id="GXX9"><code>&quot;84.&quot;</code></p>
  <p id="CqXA">Редкая</p>
  <p id="Dz6S">Сеть 178.x.x.x</p>
  <p id="2AF1"><code>&quot;178.&quot;</code></p>
  <p id="44lj">Средняя частота</p>
  <p id="H5Rr">Конкретная подсеть</p>
  <p id="x2zn"><code>&quot;51.24.&quot;</code></p>
  <p id="54m9">Более точная цель</p>
  <h3 id="52kB">Зоны доступности:</h3>
  <p id="ITe6">bash</p>
  <pre id="i6MK">ru-central1-a  # Зона А
ru-central1-b  # Зона Б (по умолчанию)
ru-central1-c  # Зона В
ru-central1-d  # Зона Г</pre>
  <h3 id="x5hN">Настройка задержки:</h3>
  <p id="JV0p">bash</p>
  <pre id="EABB">MIN_DELAY=1   # Агрессивный режим (риск блокировки)
MAX_DELAY=3

MIN_DELAY=5   # Нормальный режим
MAX_DELAY=10

MIN_DELAY=10  # Осторожный режим
MAX_DELAY=20</pre>
  <hr />
  <h2 id="ABKA">🚀 Запуск</h2>
  <h3 id="7EJi">Простой запуск:</h3>
  <p id="xyk6">bash</p>
  <pre id="c1bk">./yandex-hunter.sh</pre>
  <h3 id="g8CW">Запуск с логированием:</h3>
  <p id="G0to">bash</p>
  <pre id="rVXz">./yandex-hunter.sh | tee hunter.log</pre>
  <h3 id="BG5H">Фоновый запуск:</h3>
  <p id="i4Gv">bash</p>
  <pre id="CaUa">nohup ./yandex-hunter.sh &gt; hunter.log 2&gt;&amp;1 &amp;</pre>
  <h3 id="HdUR">Остановка:</h3>
  <p id="UzpY">bash</p>
  <pre id="e5Sy"># Если запущен в фоне
pkill -f yandex-hunter.sh

# Или Ctrl+C (если в терминале)</pre>
  <hr />
  <h2 id="pDQ4">🎯 Работа скрипта</h2>
  <h3 id="tJaC">Что происходит:</h3>
  <ol id="3k6C">
    <li id="zuzV"><strong>Очистка</strong> - удаляются все старые IP-адреса</li>
    <li id="1WX6"><strong>Цикл охоты</strong>:</li>
    <ul id="QDI4">
      <li id="a7Yb">Создание нового IP-адреса</li>
      <li id="UaKc">Проверка принадлежности к целевой сети</li>
      <li id="qsyo">Если совпадает → УСПЕХ!</li>
      <li id="iw3P">Если нет → удаление и пауза</li>
    </ul>
  </ol>
  <h3 id="NoGc">Интерфейс:</h3>
  <p id="gZEV">text</p>
  <pre id="PpcF">╔══════════════════════════════════════════════════════════════╗
║         🎯 YANDEX RANDOM HUNTER — ОХОТНИК ЗА IP 🎯           ║
╚══════════════════════════════════════════════════════════════╝
📡 Зона:     ru-central1-b
🎯 Цель:     51.*.*.*
⏱️  Задержка:  3-8 сек (рандом)

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
№    | IP Адрес         | Подсеть      | Статус                    
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
❌ [   1] 84.252.75.123   | 84.252       | 💔 Мимо (ждал 5с)
⏳ Ожидание: [████████░░░░░░░░░░] 40% </pre>
  <h3 id="wD0P">При успехе:</h3>
  <p id="Dd4F">text</p>
  <pre id="ml6h">╔══════════════════════════════════════════════════════════════╗
║                    🎉 ВЫ ПОЙМАЛИ ЦЕЛЬ! 🎉                    ║
╚══════════════════════════════════════════════════════════════╝
📌 IP адрес:    51.23.45.67
🆔 ID:          epd7h8k9j2m3n4p5
🌐 Подсеть:     51.23
🔢 Попытка №:   42
⏱️  Время:       15:30:22
⏲️  Длительность: 3 мин 24 сек

📊 СТАТИСТИКА:
   ┌─────────────────────────────────────────┐
   │ Всего попыток:  42                      │
   │ ✅ Попаданий:    1                      │
   │ ❌ Промахов:     41                     │
   │ 📈 Точность:     2%                     │
   └─────────────────────────────────────────┘</pre>
  <hr />
  <h2 id="U1mO">📊 Примеры использования</h2>
  <h3 id="wvTI">Пример 1: Охота на редкую сеть</h3>
  <p id="lnaz">bash</p>
  <pre id="baVS"># Цель: сеть 51.x.x.x
TARGET=&quot;51.&quot;
MIN_DELAY=5
MAX_DELAY=10</pre>
  <h3 id="0Kzv">Пример 2: Быстрый поиск</h3>
  <p id="UZuJ">bash</p>
  <pre id="zCoJ"># Цель: подсеть 51.24.x.x
TARGET=&quot;51.24.&quot;
MIN_DELAY=2
MAX_DELAY=4</pre>
  <h3 id="a4tR">Пример 3: Экономичный режим</h3>
  <p id="S6zZ">bash</p>
  <pre id="29Oa"># Минимальная нагрузка на API
TARGET=&quot;51.&quot;
MIN_DELAY=15
MAX_DELAY=25</pre>
  <h3 id="QGfq">Пример 4: Многоzone охота</h3>
  <p id="FfS1">bash</p>
  <pre id="R3b9"># Запуск в разных зонах (3 терминала)
# Терминал 1: ZONE=&quot;ru-central1-a&quot;
# Терминал 2: ZONE=&quot;ru-central1-b&quot;
# Терминал 3: ZONE=&quot;ru-central1-c&quot;</pre>
  <hr />
  <h2 id="FJGt">⚠️ Частые проблемы</h2>
  <h3 id="q8hd">1. Ошибка: &quot;yc: command not found&quot;</h3>
  <p id="u8nk"><strong>Решение:</strong></p>
  <p id="t3T3">bash</p>
  <pre id="pmjW"># Переустановите CLI
curl https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash

# Или добавьте в PATH
export PATH=$PATH:$HOME/yandex-cloud/bin</pre>
  <h3 id="7F3R">2. Ошибка: &quot;jq: command not found&quot;</h3>
  <p id="mGfO"><strong>Решение:</strong></p>
  <p id="b3gg">bash</p>
  <pre id="9HB8"># Установите jq
sudo apt-get install jq -y  # Ubuntu/Debian
brew install jq              # macOS</pre>
  <h3 id="CWx6">3. Ошибка: &quot;Access denied&quot;</h3>
  <p id="7ylB"><strong>Решение:</strong></p>
  <p id="thGS">bash</p>
  <pre id="DVXk"># Переавторизуйтесь
yc init
yc iam create-token</pre>
  <h3 id="XEQe">4. Ошибка: &quot;Quota exceeded&quot;</h3>
  <p id="GzVa"><strong>Решение:</strong></p>
  <p id="wGrK">bash</p>
  <pre id="4C8S"># Увеличьте задержку
MIN_DELAY=10
MAX_DELAY=15

# Или подождите 5-10 минут</pre>
  <h3 id="rdlC">5. Слишком много промахов</h3>
  <p id="OMvB"><strong>Причины:</strong></p>
  <ul id="BWlc">
    <li id="MBGb">Неправильный TARGET</li>
    <li id="sX6l">Неудачная зона</li>
    <li id="QtO5">Мало попыток</li>
  </ul>
  <p id="FbOP"><strong>Решение:</strong></p>
  <ul id="7DYu">
    <li id="xH3P">Проверьте TARGET (должна заканчиваться на точку)</li>
    <li id="LtK8">Смените зону</li>
    <li id="hsYg">Запустите на ночь</li>
  </ul>
  <hr />
  <h2 id="8wEi">💡 Советы</h2>
  <h3 id="85Xd">🎯 Для увеличения шансов:</h3>
  <ol id="bBhp">
    <li id="eruz"><strong>Запускайте в часы низкой нагрузки</strong> (ночь, утро выходных)</li>
    <li id="afmX"><strong>Используйте несколько зон одновременно</strong></li>
    <li id="MFdB"><strong>Уменьшите задержку</strong> (но осторожно с квотами)</li>
    <li id="HShU"><strong>Увеличьте время работы</strong> (чем дольше, тем выше шанс)</li>
  </ol>
  <h3 id="IFjI">💰 Экономия ресурсов:</h3>
  <ol id="kixF">
    <li id="GO5S">Используйте минимальную задержку для снижения нагрузки</li>
    <li id="86oi">Не запускайте одновременно много копий</li>
    <li id="kMuo">Используйте пробный период Yandex Cloud</li>
  </ol>
  <h3 id="qBES">🔍 Отладка:</h3>
  <p id="8WNY">bash</p>
  <pre id="lBR0"># Режим отладки
bash -x yandex-hunter.sh

# Просмотр логов
tail -f hunter.log

# Проверка квот
yc vpc quota list</pre>
  <h3 id="Dt97">📈 Мониторинг:</h3>
  <p id="WbTw">bash</p>
  <pre id="Qavb"># В другом терминале
watch -n 1 &#x27;yc vpc address list --format json | jq &quot;.[] | {address: .external_ipv4_address.address, status: .status}&quot;&#x27;</pre>
  <h3 id="5LtB">🎨 Кастомизация:</h3>
  <ul id="T8w6">
    <li id="NKc8">Измените цвета в переменных в начале скрипта</li>
    <li id="Ubz0">Добавьте уведомления в Telegram/Slack</li>
    <li id="mGri">Сохраняйте все найденные IP в файл</li>
  </ul>
  <hr />
  <h2 id="Tst4">📞 Полезные ссылки</h2>
  <ul id="1o8E">
    <li id="og2a"><a href="https://cloud.yandex.ru/docs/cli/" target="_blank">Yandex Cloud CLI Docs</a></li>
    <li id="2bAw"><a href="https://cloud.yandex.ru/docs/vpc/" target="_blank">Yandex Cloud VPC API</a></li>
    <li id="F0ub"><a href="https://stedolan.github.io/jq/manual/" target="_blank">jq Manual</a></li>
  </ul>
  <hr />
  <h2 id="2GpN">⚖️ Примечание</h2>
  <p id="jSpi">Скрипт предназначен для <strong>образовательных целей</strong> и тестирования Yandex Cloud API. Убедитесь, что ваши действия не нарушают правила использования сервиса.</p>
  <p id="s3vR"><strong>Удачной охоты! 🎯</strong></p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@idsmef/pYUPCtIuQS4</guid><link>https://teletype.in/@idsmef/pYUPCtIuQS4?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><comments>https://teletype.in/@idsmef/pYUPCtIuQS4?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef#comments</comments><dc:creator>idsmef</dc:creator><title>🚀 Полная инструкция: Hysteria2 на RemnaNode (Node)</title><pubDate>Sat, 04 Apr 2026 06:27:42 GMT</pubDate><description><![CDATA[Предварительные требования]]></description><content:encoded><![CDATA[
  <p id="KoI3">Предварительные требования</p>
  <p id="3neF">· Установленный RemnaWave Panel (где вы создаете профили).<br />· Установленный RemnawaveNode по официальной документации.<br />· Домен, который НЕ используется для Selfsteal (Caddy) или любого другого сервиса на порту 443.<br />· Открытый порт 443 (UDP) в firewall.</p>
  <p id="6bEw">---</p>
  <p id="Zi2i">Шаг 1: Остановить Caddy (Selfsteal) и другие сервисы на 443 порту</p>
  <p id="tijX">Hysteria2 требует монопольного доступа к UDP 443. Caddy (или другой веб-сервер) должен быть остановлен.</p>
  <p id="QNMh">&#x60;&#x60;&#x60;bash<br /># Остановить контейнер Caddy (если он использует host network)<br />docker stop caddy-selfsteal</p>
  <p id="yInv"># Проверить, что порт 443 (TCP/UDP) свободен<br />ss -tulpn | grep :443<br />&#x60;&#x60;&#x60;</p>
  <p id="9913">Важно: Если у вас есть другие сервисы на 443 (nginx, apache), остановите их временно.</p>
  <p id="qQsd">---</p>
  <p id="lpuz">Шаг 2: Получить SSL-сертификат через Certbot (HTTP-01 challenge)</p>
  <p id="FkYN">Так как порт 80 обычно свободен (Caddy его использует только для редиректа), мы используем standalone режим Certbot.</p>
  <p id="aJph">&#x60;&#x60;&#x60;bash<br /># Установить certbot<br />apt update &amp;&amp; apt install certbot -y</p>
  <p id="TtHO"># Остановить всё, что может занимать порт 80 (Caddy)<br />docker stop caddy-selfsteal</p>
  <p id="f1DP"># Получить сертификат для вашего поддомена (например, hy2.example.com)<br />certbot certonly --standalone -d hy2.example.com --non-interactive --agree-tos --email your@email.com<br />&#x60;&#x60;&#x60;</p>
  <p id="nSfL">После успешного выполнения: сертификаты лежат в /etc/letsencrypt/live/hy2.example.com/.</p>
  <p id="5HXq">---</p>
  <p id="IfQP">Шаг 3: Создать директорию и скопировать сертификаты для RemnaNode</p>
  <p id="1gYk">RemnaNode ожидает сертификаты в configs/xray/ssl внутри контейнера. Мы смонтируем туда директорию с сертификатами.</p>
  <p id="YcT6">&#x60;&#x60;&#x60;bash<br /># Создать папку на хосте<br />mkdir -p /opt/remnawave/nginx</p>
  <p id="QQ8t"># Скопировать сертификаты (обязательно используйте cp -L, чтобы скопировать файлы, а не симлинки)<br />cp -L /etc/letsencrypt/live/hy2.example.com/fullchain.pem /opt/remnawave/nginx/fullchain.pem<br />cp -L /etc/letsencrypt/live/hy2.example.com/privkey.pem /opt/remnawave/nginx/privkey.key</p>
  <p id="XeAj"># Установить правильные права (важно для безопасности)<br />chmod 644 /opt/remnawave/nginx/fullchain.pem<br />chmod 600 /opt/remnawave/nginx/privkey.key<br />&#x60;&#x60;&#x60;</p>
  <p id="3Pkq">---</p>
  <p id="MGYX">Шаг 4: Смонтировать сертификаты в контейнер RemnawaveNode</p>
  <p id="M32a">Отредактируйте docker-compose.yml RemnawaveNode:</p>
  <p id="DqSV">&#x60;&#x60;&#x60;bash<br />nano /opt/remnanode/docker-compose.yml<br />&#x60;&#x60;&#x60;</p>
  <p id="nEno">Найдите секцию volumes: для сервиса remnanode и добавьте следующую строку:</p>
  <p id="LYnE">&#x60;&#x60;&#x60;yaml<br />services:<br />  remnanode:<br />    # ... остальные настройки ...<br />    volumes:<br />      # ... существующие volumes ...<br />      - /opt/remnawave/nginx:/var/lib/remnawave/configs/xray/ssl<br />&#x60;&#x60;&#x60;</p>
  <p id="9Fco">Важно: Сохраните отступы (пробелы, не табуляция).</p>
  <p id="BzEw">---</p>
  <p id="4CGw">Шаг 5: Перезапустить RemnawaveNode</p>
  <p id="Wknx">&#x60;&#x60;&#x60;bash<br />cd /opt/remnanode<br />docker compose down<br />docker compose up -d</p>
  <p id="DJ7A"># Проверить, что контейнер поднялся и сертификаты смонтировались<br />docker exec remnanode ls -la /var/lib/remnawave/configs/xray/ssl<br />&#x60;&#x60;&#x60;</p>
  <p id="UVBR">Вы должны увидеть:</p>
  <p id="lOVX">&#x60;&#x60;&#x60;<br />fullchain.pem<br />privkey.key<br />&#x60;&#x60;&#x60;</p>
  <p id="73Hd">---</p>
  <p id="spIT">Шаг 6: Вернуть Caddy (Selfsteal) обратно</p>
  <p id="1y0o">&#x60;&#x60;&#x60;bash<br />docker start caddy-selfsteal<br />&#x60;&#x60;&#x60;</p>
  <p id="EA0T">Теперь Caddy снова работает на своём порту (обычно 9443 или другом, не 443).</p>
  <p id="kiEx">---</p>
  <p id="8Evj">Шаг 7: Настроить Hysteria2 в RemnaWave Panel</p>
  <p id="M1IS">1. Зайдите в админку RemnaWave → Nodes → выберите вашу ноду → Edit.<br />2. В разделе &quot;Inbound Configurations&quot; создайте новый профиль Hysteria2.<br />3. Заполните поля:<br />   · Domain: hy2.example.com (тот же, на который получили сертификат).<br />   · Port: 443 (UDP).<br />   · Path: (оставьте пустым, если не используете).<br />   · Up / Down Mbps: ваши лимиты.<br />4. В поле &quot;Certificates&quot; (внизу, JSON-редактор) вставьте:<br />   &#x60;&#x60;&#x60;json<br />   &quot;certificates&quot;: [<br />     {<br />       &quot;keyFile&quot;: &quot;/var/lib/remnawave/configs/xray/ssl/privkey.key&quot;,<br />       &quot;certificateFile&quot;: &quot;/var/lib/remnawave/configs/xray/ssl/fullchain.pem&quot;<br />     }<br />   ]<br />   &#x60;&#x60;&#x60;<br />5. Сохраните профиль.</p>
  <p id="EUoR">---</p>
  <p id="Byp9">Шаг 8: Проверить работу Hysteria2</p>
  <p id="yv5S">&#x60;&#x60;&#x60;bash<br /># Проверить, что контейнер слушает UDP 443<br />ss -ulnp | grep :443</p>
  <p id="fE5B"># Посмотреть логи RemnawaveNode на предмет ошибок Hysteria2<br />docker logs remnanode --tail 50 | grep -i hysteria<br />&#x60;&#x60;&#x60;</p>
  <p id="Z0Vp">Если всё правильно — в логах не будет ошибок, а порт 443 будет слушаться внутри контейнера.</p>
  <p id="zJTW">---</p>
  <p id="Gn0k">🔄 Автообновление сертификатов (важно!)</p>
  <p id="Wrnf">Certbot выдаёт сертификаты на 90 дней. Нужно автоматически продлевать их и перезапускать RemnaNode.</p>
  <p id="0J2e">Создайте скрипт:</p>
  <p id="cInp">&#x60;&#x60;&#x60;bash<br />nano /usr/local/bin/renew-hy2-certs.sh<br />&#x60;&#x60;&#x60;</p>
  <p id="arCg">&#x60;&#x60;&#x60;bash<br />#!/bin/bash<br />set -e</p>
  <p id="HHEu"># Обновить сертификаты<br />certbot renew --quiet</p>
  <p id="SvrF"># Скопировать обновлённые сертификаты<br />cp -L /etc/letsencrypt/live/hy2.example.com/fullchain.pem /opt/remnawave/nginx/fullchain.pem<br />cp -L /etc/letsencrypt/live/hy2.example.com/privkey.pem /opt/remnawave/nginx/privkey.key<br />chmod 644 /opt/remnawave/nginx/fullchain.pem<br />chmod 600 /opt/remnawave/nginx/privkey.key</p>
  <p id="uO9N"># Перезагрузить конфигурацию Hysteria2 в контейнере (без остановки)<br />docker exec remnanode pkill -SIGHUP hysteria 2&gt;/dev/null || true<br /># Если не поддерживает HUP, просто рестарт ноды:<br /># docker compose -f /opt/remnanode/docker-compose.yml restart<br />&#x60;&#x60;&#x60;</p>
  <p id="rIuf">Сделайте скрипт исполняемым и добавьте в cron:</p>
  <p id="oiZE">&#x60;&#x60;&#x60;bash<br />chmod +x /usr/local/bin/renew-hy2-certs.sh<br />crontab -e<br />&#x60;&#x60;&#x60;</p>
  <p id="V1QL">Добавьте строку:</p>
  <p id="8s6c">&#x60;&#x60;&#x60;<br />0 3 * * * /usr/local/bin/renew-hy2-certs.sh &gt;&gt; /var/log/hy2-renew.log 2&gt;&amp;1<br />&#x60;&#x60;&#x60;</p>
  <p id="JEsM">---</p>
  <p id="tHpu">⚠️ Возможные проблемы и решения</p>
  <p id="Ppbr">Проблема Решение<br />certbot не может занять порт 80 Остановите все сервисы: systemctl stop nginx или docker stop caddy-selfsteal<br />В логах failed to load certificate Проверьте права: chmod 644 fullchain.pem &amp;&amp; chmod 600 privkey.key<br />Hysteria2 не стартует на 443 UDP Убедитесь, что порт не занят: ss -ulnp | grep 443. Caddy использует TCP, не должен мешать.<br />После перезапуска сертификаты пропадают Проверьте монтирование в docker-compose.yml. Пути должны быть абсолютными.<br />Ошибка certificate signed by unknown authority Используйте полную цепочку fullchain.pem, а не cert.pem</p>
  <p id="jkmI">---</p>
  <p id="LiRJ">📌 Итоговая структура</p>
  <p id="hyus">&#x60;&#x60;&#x60;<br />/opt/remnanode/<br />├── docker-compose.yml        # с монтированием /opt/remnawave/nginx<br />/opt/remnawave/nginx/<br />├── fullchain.pem             # сертификат + цепочка<br />└── privkey.key               # приватный ключ<br />&#x60;&#x60;&#x60;</p>
  <p id="ihF7">Главное преимущество: Hysteria2 работает на настоящем SSL-сертификате, его трафик неотличим от обычного HTTPS, обход DPI эффективнее, чем у Reality.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@idsmef/fjmhpsx2Hqn</guid><link>https://teletype.in/@idsmef/fjmhpsx2Hqn?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><comments>https://teletype.in/@idsmef/fjmhpsx2Hqn?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef#comments</comments><dc:creator>idsmef</dc:creator><title>Полная инструкция по установке и использованию Yandex Cloud IP Hunter</title><pubDate>Wed, 01 Apr 2026 15:42:42 GMT</pubDate><description><![CDATA[bash]]></description><content:encoded><![CDATA[
  <h2 id="MX3N">Содержание</h2>
  <ol id="56Et">
    <li id="Itwx">Подготовка системы</li>
    <li id="X3Dt">Установка Yandex Cloud CLI</li>
    <li id="2S9x">Установка jq</li>
    <li id="4s1d">Настройка Yandex Cloud</li>
    <li id="wslZ">Установка скрипта</li>
    <li id="tYSB">Настройка скрипта</li>
    <li id="5xBc">Запуск и использование</li>
    <li id="DxBA">Устранение проблем</li>
    <li id="ZekC">Дополнительные настройки</li>
  </ol>
  <hr />
  <h2 id="ykPQ">1. Подготовка системы</h2>
  <h3 id="xgvb">Проверка операционной системы</h3>
  <p id="K839">bash</p>
  <pre id="krnC"># Узнайте вашу ОС
cat /etc/os-release

# Проверьте версию Bash (должна быть 4.0+)
bash --version</pre>
  <h3 id="TS8g">Обновление системы</h3>
  <p id="qO71">bash</p>
  <pre id="4mc8"># Ubuntu/Debian
sudo apt update &amp;&amp; sudo apt upgrade -y

# CentOS/RHEL
sudo yum update -y

# macOS
brew update &amp;&amp; brew upgrade</pre>
  <hr />
  <h2 id="v15u">2. Установка Yandex Cloud CLI</h2>
  <h3 id="pa29">Автоматическая установка (рекомендуется)</h3>
  <p id="BPCi">bash</p>
  <pre id="LzH9"># Скачать и установить
curl -sSL https://storage.yandexcloud.net/yandexcloud-yc/install.sh | bash

# Добавить YC CLI в PATH (автоматически добавится в .bashrc)
source ~/.bashrc

# Или для ZSH
source ~/.zshrc

# Проверить установку
yc version</pre>
  <h3 id="17Yy">Ручная установка (если автоматическая не работает)</h3>
  <p id="jfAh">bash</p>
  <pre id="H9vt"># Ubuntu/Debian
wget https://storage.yandexcloud.net/yandexcloud-yc/release/stable/linux/amd64/yc
chmod +x yc
sudo mv yc /usr/local/bin/

# macOS
wget https://storage.yandexcloud.net/yandexcloud-yc/release/stable/darwin/amd64/yc
chmod +x yc
sudo mv yc /usr/local/bin/

# Проверить
yc version</pre>
  <hr />
  <h2 id="H1cv">3. Установка jq</h2>
  <p id="IMSt">jq - это мощный парсер JSON, необходимый для обработки ответов Yandex Cloud API.</p>
  <h3 id="CIqK">Ubuntu/Debian</h3>
  <p id="N53g">bash</p>
  <pre id="o8xU"># Установка
sudo apt update
sudo apt install jq -y

# Проверка
jq --version
# Должно вывести: jq-1.6 или выше</pre>
  <h3 id="4c7R">CentOS/RHEL 7+</h3>
  <p id="MfzU">bash</p>
  <pre id="6Qme"># Установка
sudo yum install epel-release -y
sudo yum install jq -y

# Проверка
jq --version</pre>
  <h3 id="YQ03">CentOS/RHEL 8+</h3>
  <p id="kd4J">bash</p>
  <pre id="TJNk"># Установка
sudo dnf install epel-release -y
sudo dnf install jq -y

# Проверка
jq --version</pre>
  <h3 id="YMq1">macOS</h3>
  <p id="99TA">bash</p>
  <pre id="aSu5"># Установка через Homebrew
brew install jq

# Проверка
jq --version</pre>
  <h3 id="aFsh">Альтернативная установка (если нет прав root)</h3>
  <p id="toQQ">bash</p>
  <pre id="H9Tz"># Скачать бинарник
wget https://github.com/stedolan/jq/releases/download/jq-1.6/jq-linux64
chmod +x jq-linux64
sudo mv jq-linux64 /usr/local/bin/jq

# Проверка
jq --version</pre>
  <hr />
  <h2 id="UwBl">4. Настройка Yandex Cloud</h2>
  <h3 id="IySq">4.1. Инициализация YC CLI</h3>
  <p id="lm0w">bash</p>
  <pre id="xXhw"># Запустить инициализацию
yc init</pre>
  <p id="BwA9"><strong>Пошаговая настройка:</strong></p>
  <ol id="imLb">
    <li id="ng6r"><strong>Выбор способа авторизации:</strong>textPlease go to https://oauth.yandex.ru/authorize?response_type=code&amp;client_id=...</li>
    <ul id="l8fm">
      <li id="qS9Z">Откройте ссылку в браузере</li>
      <li id="mwTP">Авторизуйтесь в Яндексе</li>
      <li id="xqmP">Скопируйте код авторизации</li>
      <li id="goHa">Вставьте код в терминал</li>
    </ul>
    <li id="RY6w"><strong>Выбор облака:</strong>textSelect cloud: [1] my-cloud (id = abc123...)</li>
    <ul id="XoQq">
      <li id="PMdm">Выберите номер облака (обычно 1)</li>
    </ul>
    <li id="5swm"><strong>Выбор папки (каталога):</strong>textSelect folder: [1] default (id = def456...)</li>
    <ul id="86jg">
      <li id="8Vgm">Выберите каталог, где будут создаваться IP-адреса</li>
    </ul>
    <li id="W6Dj"><strong>Выбор зоны по умолчанию:</strong>textDefault availability zone: [1] ru-central1-a [2] ru-central1-b [3] ru-central1-c</li>
    <ul id="4DG2">
      <li id="2e8g">Выберите любую (скрипт сам будет переключать зоны)</li>
    </ul>
  </ol>
  <h3 id="ykLB">4.2. Проверка настроек</h3>
  <p id="VhY4">bash</p>
  <pre id="KQdq"># Проверить конфигурацию
yc config list

# Должно показать:
# token: ...
# cloud-id: ...
# folder-id: ...
# zone: ru-central1-...</pre>
  <h3 id="n2sw">4.3. Проверка прав доступа</h3>
  <p id="WZVu">bash</p>
  <pre id="ByRX"># Проверить, что можно создавать адреса
yc vpc address create --external-ipv4 zone=ru-central1-a --format json

# Если успешно - получите JSON с информацией об адресе
# Сразу удалите тестовый адрес
yc vpc address list --format json | jq -r &#x27;.[].id&#x27; | xargs -I {} yc vpc address delete {}</pre>
  <hr />
  <h2 id="j8U1">5. Установка скрипта</h2>
  <h3 id="Nbbg">5.1. Скачивание скрипта</h3>
  <p id="BEsA">bash</p>
  <pre id="5q7X"># Создать директорию для скриптов (опционально)
mkdir -p ~/scripts
cd ~/scripts

# Скачать скрипт
curl -o ip_hunter.sh https://raw.githubusercontent.com/your-repo/ip_hunter.sh

# Или создать вручную
nano ip_hunter.sh
# (скопируйте код скрипта из предыдущего сообщения)</pre>
  <h3 id="CQ86">5.2. Настройка прав</h3>
  <p id="UTd9">bash</p>
  <pre id="41qZ"># Сделать скрипт исполняемым
chmod +x ip_hunter.sh

# Проверить права
ls -la ip_hunter.sh
# Должно быть: -rwxr-xr-x</pre>
  <h3 id="MmS8">5.3. Проверка зависимостей</h3>
  <p id="QFe6">bash</p>
  <pre id="rviB"># Проверить наличие всех утилит
which bash      # /bin/bash
which yc        # /usr/local/bin/yc
which jq        # /usr/bin/jq

# Все команды должны показать пути</pre>
  <hr />
  <h2 id="Dbna">6. Настройка скрипта</h2>
  <h3 id="3lT6">6.1. Редактирование параметров</h3>
  <p id="nhXQ">bash</p>
  <pre id="eQYa"># Открыть скрипт для редактирования
nano ip_hunter.sh</pre>
  <p id="8N5e"><strong>Настройка целей (префиксов):</strong></p>
  <p id="2gzF">bash</p>
  <pre id="435Q"># Ищем IP, начинающиеся с 178.154 и 51.250
TARGET_PREFIXES=(
    &quot;178.154&quot;
    &quot;51.250&quot;
)

# Можно добавить свои префиксы
TARGET_PREFIXES=(
    &quot;178.154&quot;
    &quot;51.250&quot;
    &quot;62.84&quot;      # Новый префикс
    &quot;84.201&quot;     # Еще один
)</pre>
  <p id="Y8Uj"><strong>Настройка зон:</strong></p>
  <p id="Hy7y">bash</p>
  <pre id="B6Qc"># Зоны, в которых будем создавать IP
AVAILABLE_ZONES=(
    &quot;ru-central1-a&quot;
    &quot;ru-central1-b&quot;
    &quot;ru-central1-c&quot;
)

# Можно оставить только некоторые зоны
AVAILABLE_ZONES=(
    &quot;ru-central1-a&quot;
    &quot;ru-central1-b&quot;
    # &quot;ru-central1-c&quot;  # Исключаем
)</pre>
  <p id="6lg3"><strong>Настройка задержек:</strong></p>
  <p id="TVIN">bash</p>
  <pre id="B2NE">MIN_DELAY=3    # Минимальная задержка (секунды)
MAX_DELAY=8    # Максимальная задержка (секунды)

# Для быстрого поиска (риск квоты):
MIN_DELAY=1
MAX_DELAY=3

# Для стабильной работы:
MIN_DELAY=5
MAX_DELAY=10</pre>
  <h3 id="fpmc">6.2. Сохранение изменений</h3>
  <p id="5Wr6">bash</p>
  <pre id="jLPU"># Ctrl+O - сохранить
# Ctrl+X - выйти из nano</pre>
  <hr />
  <h2 id="crIu">7. Запуск и использование</h2>
  <h3 id="8C6u">7.1. Простой запуск</h3>
  <p id="eT4d">bash</p>
  <pre id="etsx"># Запустить скрипт
./ip_hunter.sh</pre>
  <h3 id="ETGz">7.2. Запуск с сохранением лога</h3>
  <p id="bTag">bash</p>
  <pre id="wcnS"># Сохранить весь вывод в файл
./ip_hunter.sh | tee ip_hunter.log

# Только ошибки
./ip_hunter.sh 2&gt; errors.log</pre>
  <h3 id="9Vfy">7.3. Запуск в фоне (screen)</h3>
  <p id="ii1b">bash</p>
  <pre id="2j2p"># Установить screen если нет
sudo apt install screen -y

# Создать новую сессию
screen -S ip_hunter

# Запустить скрипт
./ip_hunter.sh

# Отсоединиться от сессии: Ctrl+A, затем D

# Вернуться к сессии
screen -r ip_hunter

# Убить сессию (если нужно остановить)
screen -X -S ip_hunter quit</pre>
  <h3 id="Mf6e">7.4. Запуск в фоне (tmux)</h3>
  <p id="zXmL">bash</p>
  <pre id="iMm6"># Установить tmux
sudo apt install tmux -y

# Создать новую сессию
tmux new -s ip_hunter

# Запустить скрипт
./ip_hunter.sh

# Отсоединиться: Ctrl+B, затем D

# Вернуться: tmux attach -t ip_hunter</pre>
  <h3 id="Iq9e">7.5. Автоматический запуск при старте (crontab)</h3>
  <p id="XXZn">bash</p>
  <pre id="YOkZ"># Открыть crontab
crontab -e

# Добавить строку для запуска каждые 5 минут
*/5 * * * * /home/username/scripts/ip_hunter.sh &gt;&gt; /home/username/ip_hunter_auto.log 2&gt;&amp;1

# Или запускать при перезагрузке
@reboot /home/username/scripts/ip_hunter.sh</pre>
  <hr />
  <h2 id="NZgx">8. Устранение проблем</h2>
  <h3 id="CJLd">Проблема 1: &quot;bash: yc: command not found&quot;</h3>
  <p id="MOFq">bash</p>
  <pre id="OhPf"># Решение: перезагрузить shell
source ~/.bashrc

# Или добавить вручную
echo &#x27;export PATH=$PATH:$HOME/yandex-cloud/bin&#x27; &gt;&gt; ~/.bashrc
source ~/.bashrc

# Проверить
which yc</pre>
  <h3 id="vrYc">Проблема 2: &quot;jq: command not found&quot;</h3>
  <p id="1a3o">bash</p>
  <pre id="y4uP"># Ubuntu/Debian
sudo apt install jq -y

# CentOS/RHEL
sudo yum install jq -y

# macOS
brew install jq</pre>
  <h3 id="fNyb">Проблема 3: &quot;Permission denied&quot; при запуске</h3>
  <p id="w1O8">bash</p>
  <pre id="9in7"># Дать права на выполнение
chmod +x ip_hunter.sh

# Или запускать через bash
bash ip_hunter.sh</pre>
  <h3 id="OkeI">Проблема 4: &quot;Error: quota exceeded&quot;</h3>
  <p id="MZIQ">bash</p>
  <pre id="6ibM"># Увеличить задержки в скрипте
MIN_DELAY=8
MAX_DELAY=15

# Или уменьшить количество зон
AVAILABLE_ZONES=(
    &quot;ru-central1-a&quot;
    # временно отключить другие зоны
)</pre>
  <h3 id="dUAb">Проблема 5: &quot;Invalid token&quot; или авторизация</h3>
  <p id="5m51">bash</p>
  <pre id="qrwv"># Переинициализировать YC
yc init --force

# Проверить токен
yc config get token

# Обновить токен вручную
yc config set token &lt;новый_токен&gt;</pre>
  <h3 id="kWHj">Проблема 6: Нет прав на создание адресов</h3>
  <p id="pdnc">bash</p>
  <pre id="tngv"># Проверить права
yc resource-manager folder get &lt;folder-id&gt;

# Если прав нет, нужно обратиться к администратору облака
# Или создать сервисный аккаунт с правами
yc iam service-account create --name ip-hunter-sa
yc resource-manager folder add-access-binding &lt;folder-id&gt; \
    --role editor \
    --subject serviceAccount:&lt;service-account-id&gt;</pre>
  <h3 id="yLNg">Проблема 7: Скрипт работает медленно</h3>
  <p id="RWVR">bash</p>
  <pre id="1g5j"># Уменьшить задержки
MIN_DELAY=2
MAX_DELAY=4

# Увеличить количество зон для большего покрытия
AVAILABLE_ZONES=(
    &quot;ru-central1-a&quot;
    &quot;ru-central1-b&quot;
    &quot;ru-central1-c&quot;
    &quot;ru-central1-d&quot;
)</pre>
  <h3 id="t9Bu">Проблема 8: Не сохраняются найденные IP</h3>
  <p id="kQzm">bash</p>
  <pre id="7tYC"># Проверить права на запись
ls -la ip_hunter_success.log

# Если нет файла, он создастся автоматически
# Проверить, есть ли запись
tail -f ip_hunter_success.log</pre>
  <hr />
  <h2 id="LVZe">9. Дополнительные настройки</h2>
  <h3 id="J0DT">9.1. Создание alias для быстрого запуска</h3>
  <p id="Pbav">bash</p>
  <pre id="Jrjw"># Добавить в ~/.bashrc
echo &#x27;alias iphunter=&quot;~/scripts/ip_hunter.sh&quot;&#x27; &gt;&gt; ~/.bashrc
source ~/.bashrc

# Теперь можно запускать просто:
iphunter</pre>
  <h3 id="W7XE">9.2. Настройка уведомлений</h3>
  <p id="JIM5">Добавьте в скрипт уведомления при успехе:</p>
  <p id="zU91">bash</p>
  <pre id="TyFv"># Добавить Telegram уведомление
# В секцию успеха добавьте:
curl -s &quot;https://api.telegram.org/bot&lt;TOKEN&gt;/sendMessage&quot; \
    -d &quot;chat_id=&lt;CHAT_ID&gt;&quot; \
    -d &quot;text=✅ Найден IP: $IP_ADDR в зоне $RANDOM_ZONE&quot;</pre>
  <h3 id="0a5k">9.3. Ограничение времени работы</h3>
  <p id="7oPS">bash</p>
  <pre id="Ig7S"># Запустить скрипт на 1 час
timeout 3600 ./ip_hunter.sh

# Или добавить в сам скрипт:
MAX_RUNTIME=3600  # 1 час в секундах
if [ $(date +%s) -gt $((START_TIME + MAX_RUNTIME)) ]; then
    echo &quot;Превышено время работы&quot;
    exit 0
fi</pre>
  <h3 id="GR1e">9.4. Многопоточный режим (экспериментально)</h3>
  <p id="CHqu">bash</p>
  <pre id="05FC"># Создать несколько копий скрипта
./ip_hunter.sh &amp;  # Запуск в фоне
./ip_hunter.sh &amp;  # Второй экземпляр

# Но будьте осторожны с квотой!</pre>
  <h3 id="4cZ5">9.5. Создание systemd сервиса</h3>
  <p id="1YuN">bash</p>
  <pre id="p8PO"># Создать файл сервиса
sudo nano /etc/systemd/system/ip-hunter.service</pre>
  <p id="H3dK">ini</p>
  <pre id="ReVT">[Unit]
Description=Yandex Cloud IP Hunter
After=network.target

[Service]
Type=simple
User=your_username
WorkingDirectory=/home/your_username/scripts
ExecStart=/home/your_username/scripts/ip_hunter.sh
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target</pre>
  <p id="CkdU">bash</p>
  <pre id="91B6"># Включить сервис
sudo systemctl enable ip-hunter
sudo systemctl start ip-hunter

# Проверить статус
sudo systemctl status ip-hunter

# Посмотреть логи
sudo journalctl -u ip-hunter -f</pre>
  <hr />
  <h2 id="lguL">10. Проверка работоспособности</h2>
  <h3 id="EINc">Тестовый запуск</h3>
  <p id="Mp6K">bash</p>
  <pre id="NhWi"># Сделать тестовый прогон (1-2 итерации)
# Временно измените MIN_DELAY=1 и MAX_DELAY=1
# И запустите
./ip_hunter.sh</pre>
  <h3 id="MPgA">Ожидаемый вывод при успехе:</h3>
  <p id="vyiO">text</p>
  <pre id="e59S">╔══════════════════════════════════════════════════════════════════════════╗
║                    YANDEX CLOUD IP HUNTER v3.0                           ║
║                    Cross-Zone IP Scanner                                 ║
╚══════════════════════════════════════════════════════════════════════════╝
🎯 Цели поиска:
  → 178.154.*.*.* (любая зона)
  → 51.250.*.*.* (любая зона)
🌍 Зоны для сканирования:
  → ru-central1-a
  → ru-central1-b
  → ru-central1-c
⏱️  Задержка: 3-8 сек (рандом)
🧹 Авто-очистка: ВКЛ

🧹 Очистка всех адресов... ✅ Чисто (нет адресов)

№    | IP Адрес          | Префикс      | Статус                | Зона создания
──────────────────────────────────────────────────────────────────────────────────
1    | 178.154.23.45     | 178.154      | 🎉 ПОЙМАЛ! 🎉         | ru-central1-b</pre>
  <hr />
  <h2 id="J0s4">11. Полезные команды для мониторинга</h2>
  <p id="IOHy">bash</p>
  <pre id="RKD7"># Посмотреть созданные адреса
yc vpc address list

# Посмотреть детали конкретного адреса
yc vpc address get &lt;address-id&gt;

# Удалить все адреса вручную
yc vpc address list --format json | jq -r &#x27;.[].id&#x27; | xargs -I {} yc vpc address delete {}

# Посмотреть квоты
yc resource-manager folder get &lt;folder-id&gt; --format json | jq &#x27;.quotas&#x27;

# Посмотреть логи успешных находок
cat ip_hunter_success.log

# Мониторить логи в реальном времени
tail -f ip_hunter_success.log</pre>
  <hr />
  <h2 id="gbfV">12. Безопасность и лучшие практики</h2>
  <h3 id="kBiX">12.1. Использование сервисного аккаунта</h3>
  <p id="jT8L">bash</p>
  <pre id="Bwk8"># Создать сервисный аккаунт
yc iam service-account create --name ip-hunter

# Создать ключ доступа
yc iam access-key create --service-account-name ip-hunter

# Использовать ключ в скрипте
export YC_TOKEN=&lt;token&gt;
export YC_FOLDER_ID=&lt;folder-id&gt;</pre>
  <h3 id="8cKe">12.2. Ограничение прав</h3>
  <p id="rS8i">bash</p>
  <pre id="JNGd"># Выдать только необходимые права
yc resource-manager folder add-access-binding &lt;folder-id&gt; \
    --role vpc.admin \
    --subject serviceAccount:&lt;sa-id&gt;</pre>
  <h3 id="YOE9">12.3. Резервное копирование успешных IP</h3>
  <p id="cUkF">bash</p>
  <pre id="FZZR"># Добавить в crontab для ежедневного копирования
0 0 * * * cp ~/scripts/ip_hunter_success.log ~/backups/ip_hunter_$(date +\%Y\%m\%d).log</pre>
  <hr />
  <h2 id="wTTY">13. Заключение</h2>
  <h3 id="Ye9U">Готово! Ваш скрипт полностью настроен и готов к использованию.</h3>
  <p id="L3oU"><strong>Краткое резюме:</strong></p>
  <ul id="o6T3">
    <li id="OThG">✅ Установлены все зависимости (yc, jq)</li>
    <li id="Ryxt">✅ Настроен Yandex Cloud CLI</li>
    <li id="g2mG">✅ Скачан и настроен скрипт</li>
    <li id="9vBp">✅ Проведено тестирование</li>
  </ul>
  <p id="HJ6E"><strong>Теперь вы можете:</strong></p>
  <ul id="nLn5">
    <li id="4ofM">Искать IP-адреса с нужными префиксами</li>
    <li id="ucAB">Сканировать несколько зон одновременно</li>
    <li id="P98G">Автоматически очищать квоту</li>
    <li id="f9Dy">Получать статистику в реальном времени</li>
  </ul>
  <p id="oonh"><strong>Приятного использования! 🚀</strong></p>
  <hr />
  <p id="Qw4H"><em>Если у вас остались вопросы, проверьте:</em></p>
  <ol id="YpHl">
    <li id="eyol">Логи ошибок: <code>cat ip_hunter_success.log</code></li>
    <li id="amYt">Статус YC CLI: <code>yc config list</code></li>
    <li id="zjMp">Версии утилит: <code>yc version &amp;&amp; jq --version &amp;&amp; bash --version</code></li>
  </ol>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@idsmef/7GiK8jvCmUb</guid><link>https://teletype.in/@idsmef/7GiK8jvCmUb?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><comments>https://teletype.in/@idsmef/7GiK8jvCmUb?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef#comments</comments><dc:creator>idsmef</dc:creator><title>Пост 28.03.2026</title><pubDate>Sat, 28 Mar 2026 12:00:17 GMT</pubDate><media:content medium="image" url="https://img3.teletype.in/files/69/80/69807b3b-fed5-42f9-bc56-391ffab7401b.png"></media:content><description><![CDATA[<img src="https://img3.teletype.in/files/26/e7/26e7a6aa-7d66-462b-a699-f611001d63a6.png"></img>1. Получите ключ подписки (ссылку):]]></description><content:encoded><![CDATA[
  <h3 id="DKiA">Инструкция по подключению VPN (<a href="https://bill.pbalka.ru/" target="_blank">bill.pbalka.ru</a>)</h3>
  <p id="x4mA"><strong>1. Получите ключ подписки (ссылку):</strong></p>
  <ul id="JjWy">
    <li id="Rvat">Откройте браузер на телефоне и перейдите на сайт <strong><a href="https://bill.pbalka.ru/" target="_blank">bill.pbalka.ru</a></strong>.</li>
    <li id="c6cf">Авторизуйтесь в системе (если у вас еще нет аккаунта — зарегистрируйтесь).</li>
    <li id="rK8g">Перейдите в раздел <strong>«Услуги»</strong>.</li>
    <li id="zsPc">нажмите на  активную VPN-подписки </li>
  </ul>
  <figure id="NH2i" class="m_column">
    <img src="https://img3.teletype.in/files/26/e7/26e7a6aa-7d66-462b-a699-f611001d63a6.png" width="1153" />
  </figure>
  <ul id="71J9">
    <li id="807B">перейдите в раздел &lt;&lt;<strong>Подключение</strong>&gt;&gt;</li>
  </ul>
  <figure id="2jD2" class="m_original">
    <img src="https://img2.teletype.in/files/9f/dc/9fdc0dd0-198b-4f70-9563-0e6c596201ca.png" />
  </figure>
  <p id="GB3k">Нажмите кнопку &quot;Добавить в приложение&quot;</p>
  <p id="4Fng"></p>
  <p id="oOug"><strong>2. Установка приложения на телевизор (ТВ-приставку):</strong></p>
  <ul id="Ldzs">
    <li id="z99w">На телевизоре или ТВ-приставке откройте <strong>Google Play Market</strong>.</li>
    <li id="QHVG">Найдите и установите приложение <strong>Happ</strong> (или используйте заранее скачанный APK-файл, если установка из маркета недоступна).</li>
    <li id="G3EG">Запустите приложение <strong>Happ</strong>.</li>
  </ul>
  <p id="W8qj"><strong>3. Подготовка к передаче данных:</strong></p>
  <ul id="b3Cj">
    <li id="xkaS">В интерфейсе приложения Happ найдите и нажмите кнопку <strong>«Отправить через API вручную»</strong> (обычно она расположена в боковом меню или на главном экране).</li>
    <li id="zk2t">На экране телевизора справа появится <strong>QR-код</strong>.</li>
  </ul>
  <p id="vd74"><strong>4. Передача ключа через телефон:</strong></p>
  <ul id="wD0o">
    <li id="OZSE">Возьмите телефон, откройте приложение камеры (или любой QR-сканер) и наведите на QR-код на экране телевизора.</li>
    <li id="XcGL">Перейдите по открывшейся ссылке в браузере телефона.</li>
    <li id="hisK">На открывшемся сайте найдите поле <strong>«Данные»</strong>.</li>
    <li id="MaOc">Вставьте в это поле <strong>ключ-ссылку</strong>, которую вы скопировали на сайте <strong><a href="https://bill.pbalka.ru/" target="_blank">bill.pbalka.ru</a></strong> в пункте 1.</li>
    <li id="BmRs">Нажмите кнопку <strong>«Отправить данные»</strong>.</li>
  </ul>
  <p id="3sjY"><strong>5. Активация VPN на телевизоре:</strong></p>
  <ul id="zNx2">
    <li id="dsKY">После отправки данных на телевизоре автоматически загрузится конфигурация подписки.</li>
    <li id="vNql">Чтобы подключиться, нажмите на большую круглую кнопку с символом включения <strong>(⏻)</strong>.</li>
    <li id="sBL2"><em>(Опционально)</em> Если нужно сменить страну, выберите другую локацию в списке перед подключением или после нажатия на кнопку.</li>
  </ul>
  <p id="9C9S"><strong>6. Проверка подключения:</strong></p>
  <ul id="Swqz">
    <li id="Bdyl">✅ <strong>Успех:</strong> Если после проверки соединения вместо красной кнопки «Проверить текущее подключение» появится надпись <strong>«Успешно»</strong> — вы подключены к VPN.</li>
    <li id="pvmI">❌ <strong>Ошибка:</strong> Если отобразится ошибка — повторите попытку. Если не срабатывает, смените локацию (страну) в приложении Happ и повторите проверку.</li>
  </ul>
  <hr />
  <h3 id="N1jm">Видео-инструкции (для наглядности)</h3>
  <p id="xtjs">Чтобы процесс был максимально понятным, воспользуйтесь видео-гайдами:</p>
  <ol id="uexL">
    <li id="3J2f"><strong>Как получить ключ в <a href="https://bill.pbalka.ru/" target="_blank">bill.pbalka.ru</a>:</strong><br /><em>(Здесь обычно вставляется ссылка на видео, где показан личный кабинет и кнопка копирования ссылки)</em><br />👉 <strong>[Ссылка: <a href="https://t.me/srvpbalka/1/13" target="_blank">Как скопировать VPN-ссылку в биллинге</a>]</strong></li>
    <li id="X7By"><strong>Как настроить Happ на телевизоре (универсально):</strong><br /><em>(Видео, демонстрирующее установку приложения, сканирование QR-кода и нажатие кнопки питания)</em><br />👉 <strong>[Ссылка: <a href="https://t.me/srvpbalka/1/14" target="_blank">Настройка Happ для Smart TV</a>]</strong></li>
    <li id="9sup"><strong>Видео: Полная настройка от А до Я (<a href="https://bill.pbalka.ru/" target="_blank">bill.pbalka.ru</a> + Happ):</strong><br />*(Краткий ролик (1-2 минуты), объединяющий оба этапа)*<br />👉 <strong>[Ссылка: Готовая видеоинструкция подключения]</strong></li>
  </ol>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@idsmef/NAiIda38_2E</guid><link>https://teletype.in/@idsmef/NAiIda38_2E?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><comments>https://teletype.in/@idsmef/NAiIda38_2E?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef#comments</comments><dc:creator>idsmef</dc:creator><title>ПОЛЬЗОВАТЕЛЬСКОЕ СОГЛАШЕНИЕ</title><pubDate>Mon, 09 Mar 2026 17:00:16 GMT</pubDate><description><![CDATA[1.1. Администрация / Правообладатель — лицо, осуществляющее управление Телеграм-ботом @mrzbill_bot и предоставляющее доступ к Сервисам.
1.2. Пользователь — любое дееспособное физическое лицо, использующее Сервисы через Телеграм-бота.
1.3. Сервис / Услуга — функционал Бота, позволяющий Пользователю приобретать, активировать и управлять подписками на VPN-сервисы, а также использовать сопутствующие функции (реферальная программа, бонусы и т.д.).]]></description><content:encoded><![CDATA[
  <h3 id="dJTi">1. Термины и определения</h3>
  <p id="3Jk8">1.1. <strong>Администрация / Правообладатель</strong> — лицо, осуществляющее управление Телеграм-ботом <code>@mrzbill_bot</code> и предоставляющее доступ к Сервисам.<br />1.2. <strong>Пользователь</strong> — любое дееспособное физическое лицо, использующее Сервисы через Телеграм-бота.<br />1.3. <strong>Сервис / Услуга</strong> — функционал Бота, позволяющий Пользователю приобретать, активировать и управлять подписками на VPN-сервисы, а также использовать сопутствующие функции (реферальная программа, бонусы и т.д.).</p>
  <h3 id="rAQr">2. Предмет Соглашения</h3>
  <p id="VjYG">2.1. Настоящее Соглашение регулирует отношения между Администрацией и Пользователем по поводу использования функционала Бота.<br />2.2. Администрация предоставляет Пользователю доступ к Сервисам, перечень которых определен в меню Бота, а Пользователь обязуется оплачивать и использовать их в соответствии с условиями Соглашения.<br />2.3. Полный перечень тарифов, их стоимость и характеристики публикуются в соответствующих разделах Бота (команда <code>/pricelist</code>).</p>
  <h3 id="JHKW">3. Порядок оказания услуг</h3>
  <p id="kmTc">3.1. Пользователь самостоятельно заказывает услугу через интерфейс Бота.<br />3.2. Услуга считается оказанной с момента предоставления Пользователю доступа к ключу/ссылке/QR-коду для настройки VPN, если иное не предусмотрено конкретным тарифом.<br />3.3. Обязанность Администрации по предоставлению услуги считается исполненной с момента активации подписки для Пользователя и предоставления доступа к конфигурации.</p>
  <h3 id="ps7k">4. Оплата и возврат средств</h3>
  <p id="V2PT">4.1. Оплата услуг производится через интегрированные платежные системы (ЮKassa, Telegram Stars) или по квитанции на реквизиты администратора.<br />4.2. Пользователь обязуется своевременно оплачивать выбранные тарифы. При недостатке средств на балансе услуга может быть заблокирована (статус <code>BLOCK</code>).<br />4.3. <strong>Возврат денежных средств</strong> производится в соответствии с Законом РФ &quot;О защите прав потребителей&quot;.</p>
  <ul id="enRL">
    <li id="TVB6">Пользователь вправе отказаться от услуги до момента получения доступа к конфигурации (ключа).</li>
    <li id="KqYU">Если услуга была активирована, возврат производится пропорционально неиспользованному времени (расчет ведется в сутках), за вычетом фактических расходов Администрации (например, комиссии платежных систем).</li>
    <li id="lKDz">Для инициирования возврата необходимо обратиться в поддержку.<br />4.4. В случае технической невозможности оказания услуги по вине Администрации, средства подлежат возврату в полном объеме.</li>
  </ul>
  <h3 id="LE4L">5. Права и обязанности Сторон</h3>
  <p id="EH5U">5.1. <strong>Администрация обязуется:</strong></p>
  <ul id="lSzk">
    <li id="a8MG">Обеспечивать работоспособность Сервиса 24/7, за исключением времени проведения профилактических работ.</li>
    <li id="DEAH">Обеспечивать конфиденциальность данных Пользователя (см. Политику конфиденциальности).</li>
    <li id="5UYJ">Оказывать техническую поддержку Пользователям.<br />5.2. <strong>Администрация имеет право:</strong></li>
    <li id="0z7r">Приостанавливать оказание услуг в случае нарушения Пользователем условий Соглашения.</li>
    <li id="ULp1">Изменять стоимость тарифов в одностороннем порядке с предварительным уведомлением Пользователей (например, через рассылку). Для текущих подписок изменение стоимости применяется с момента следующего продления.</li>
    <li id="iCMl">Блокировать доступ Пользователя в случае попыток взлома, спама или иных деструктивных действий.<br />5.3. <strong>Пользователь обязуется:</strong></li>
    <li id="BMGQ">Не использовать Сервис для целей, противоречащих законодательству РФ (например, для обхода блокировок экстремистских ресурсов, распространения вредоносного ПО).</li>
    <li id="aZDE">Не передавать свои ключи доступа третьим лицам, если это ограничено условиями тарифа.</li>
    <li id="02xV">Самостоятельно нести ответственность за сохранность своих данных для входа.<br />5.4. <strong>Пользователь имеет право:</strong></li>
    <li id="osSW">Получать услуги в соответствии с выбранным тарифом.</li>
    <li id="kiqg">Обращаться в службу поддержки по вопросам работы Сервиса.</li>
    <li id="otqU">Отказаться от услуг и потребовать возврата средств на условиях п. 4.3.</li>
  </ul>
  <h3 id="KEJI">6. Ограничение ответственности</h3>
  <p id="5VRh">6.1. Сервис предоставляется &quot;как есть&quot;. Администрация не несет ответственности за прямой или косвенный ущерб, возникший в результате использования или невозможности использования Сервиса.<br />6.2. Администрация не несет ответственности за качество работы интернет-канала Пользователя, а также за блокировки со стороны интернет-провайдеров или государственных органов.<br />6.3. Администрация не гарантирует 100% доступность серверов во всех странах мира в любой момент времени, но прилагает все усилия для обеспечения стабильности соединения.</p>
  <h3 id="lGap">7. Реферальная программа</h3>
  <p id="a7yN">7.1. Пользователь может участвовать в реферальной программе.<br />7.2. За привлеченных пользователей (рефералов) начисляются бонусы в размере, указанном в разделе <code>/referrals</code>.<br />7.3. Бонусы могут быть использованы для оплаты услуг. Администрация оставляет за собой право блокировать бонусный счет в случае выявления накруток или мошеннических действий.</p>
  <h3 id="lo0F">8. Прочие условия</h3>
  <p id="0Kky">8.1. Настоящее Соглашение может быть изменено Администрацией в одностороннем порядке. Актуальная версия всегда доступна в Боте.<br />8.2. Начало использования Сервиса означает полное и безоговорочное принятие Пользователем условий настоящего Соглашения.<br />8.3. По всем вопросам обращаться в поддержку: <code>@idsmef</code>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@idsmef/LZ1RSkqHVtV</guid><link>https://teletype.in/@idsmef/LZ1RSkqHVtV?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><comments>https://teletype.in/@idsmef/LZ1RSkqHVtV?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef#comments</comments><dc:creator>idsmef</dc:creator><title>ПОЛИТИКА КОНФИДЕНЦИАЛЬНОСТИ</title><pubDate>Mon, 09 Mar 2026 16:57:43 GMT</pubDate><description><![CDATA[1.1. Настоящая Политика конфиденциальности (далее — Политика) действует в отношении всей информации, которую Телеграм-бот @[BotUsername] (далее — Бот) может получить о Пользователе во время использования им Сервисов.
1.2. Использование Сервисов означает безоговорочное согласие Пользователя с настоящей Политикой и указанными в ней условиями обработки его персональной информации.
1.3. В случае несогласия с условиями Политики Пользователь должен воздержаться от использования Сервисов.]]></description><content:encoded><![CDATA[
  <h3 id="zgBT">1. Общие положения</h3>
  <p id="sonP">1.1. Настоящая Политика конфиденциальности (далее — Политика) действует в отношении всей информации, которую Телеграм-бот <code>@[BotUsername]</code> (далее — Бот) может получить о Пользователе во время использования им Сервисов.<br />1.2. Использование Сервисов означает безоговорочное согласие Пользователя с настоящей Политикой и указанными в ней условиями обработки его персональной информации.<br />1.3. В случае несогласия с условиями Политики Пользователь должен воздержаться от использования Сервисов.</p>
  <h3 id="GshZ">2. Персональная информация Пользователей</h3>
  <p id="r4eR">2.1. <strong>Под персональной информацией в настоящей Политике понимается:</strong></p>
  <ul id="NaOF">
    <li id="KSa5"><strong>Техническая информация:</strong> Ваш Telegram ID, имя пользователя (username), имя и фамилия (full_name), указанные в Telegram, а также идентификатор чата (chat_id).</li>
    <li id="lw59"><strong>Информация об активности:</strong> Дата регистрации, история заказов услуг (VPN-подписок), история платежей и начислений бонусов, IP-адрес (в журналах безопасности), информация о действиях в Боте (нажатия на кнопки, ввод данных).</li>
    <li id="cCHb"><strong>Информация, предоставляемая Пользователем добровольно:</strong> Тексты обращений в поддержку, файлы квитанций об оплате, введенные промокоды.<br />2.2. <strong>Цели сбора и обработки информации:</strong></li>
    <li id="xrKU">Идентификация Пользователя в рамках Сервиса.</li>
    <li id="16DX">Предоставление функционала Бота: создание и управление подписками, обработка платежей, активация услуг.</li>
    <li id="LMsv">Связь с Пользователем (направление уведомлений о статусе подписок, платежей, информационных сообщений).</li>
    <li id="I65P">Ведение статистики и улучшение работы Сервиса.</li>
    <li id="7T0n">Начисление и списание бонусов в рамках реферальной программы.</li>
    <li id="UsaO">Обработка запросов в службу поддержки.</li>
  </ul>
  <h3 id="jiDg">3. Условия обработки персональной информации</h3>
  <p id="DefV">3.1. Обработка персональной информации осуществляется на основе принципов законности и справедливости. Обработка осуществляется в автоматизированном режиме с использованием баз данных на платформе [Название платформы, если известно, например: &quot;SHM&quot;].</p>
  <h3 id="qlHu">4. Передача информации третьим лицам</h3>
  <p id="u54X">4.1. Бот не передает персональную информацию Пользователей третьим лицам, за исключением случаев, прямо предусмотренных настоящей Политикой:</p>
  <ul id="S8H1">
    <li id="TNev"><strong>Платежные системы (ЮKassa, Telegram Stars и др.):</strong> Для проведения транзакций передается необходимая информация (сумма платежа, идентификатор пользователя).</li>
    <li id="yLR0"><strong>Провайдеры услуг (VPN-серверы):</strong> Для активации подписки может передаваться техническая информация (например, UUID пользователя).</li>
    <li id="mp3u"><strong>Государственные органы:</strong> В случаях, предусмотренных законодательством РФ.<br />4.2. Бот может использовать обезличенные данные для аналитики с привлечением сторонних сервисов.</li>
  </ul>
  <h3 id="XroQ">5. Обязательства Сторон</h3>
  <p id="WVPm">5.1. <strong>Администрация Бота обязуется:</strong></p>
  <ul id="1cOp">
    <li id="KOBn">Использовать полученную информацию исключительно для целей, указанных в п. 2.2.</li>
    <li id="nhna">Обеспечить хранение конфиденциальной информации в тайне.</li>
    <li id="6MHH">Принимать меры для защиты информации от несанкционированного доступа.<br />5.2. <strong>Пользователь обязуется:</strong></li>
    <li id="yKH0">Не передавать данные своей учетной записи (файлы конфигурации, ссылки на подключение) третьим лицам.</li>
    <li id="NVlI">Сообщать в поддержку о любых случаях подозрительной активности в аккаунте.</li>
  </ul>
  <h3 id="Kxfp">6. Хранение и удаление данных</h3>
  <p id="xEDn">6.1. Персональные данные Пользователя хранятся до момента удаления его аккаунта.<br />6.2. Удаление аккаунта происходит автоматически после команды администратора или через функционал Бота (если предусмотрено). После удаления информация о Пользователе удаляется из активных баз данных. Информация о платежах и транзакциях может храниться в резервных копиях в целях финансовой отчетности.</p>
  <h3 id="hByT">7. Изменение Политики конфиденциальности</h3>
  <p id="NAxf">7.1. Администрация Бота имеет право вносить изменения в настоящую Политику. Новая редакция Политики вступает в силу с момента ее опубликования в Боте, если иное не предусмотрено новой редакцией.</p>
  <h3 id="zB7b">8. Контакты и вопросы</h3>
  <p id="qwKd">8.1. По всем вопросам, связанным с обработкой персональных данных, Пользователь может связаться со службой поддержки: <code>@idsmef</code>.</p>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@idsmef/IeWDvvMOYkR</guid><link>https://teletype.in/@idsmef/IeWDvvMOYkR?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><comments>https://teletype.in/@idsmef/IeWDvvMOYkR?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef#comments</comments><dc:creator>idsmef</dc:creator><title>📱 mobile443 - Фильтрация 443 порта по мобильным сетям РФ</title><pubDate>Mon, 09 Mar 2026 10:53:30 GMT</pubDate><description><![CDATA[Данный скрипт реализует белый список (allowlist) для порта 443. Он разрешает входящие соединения на 443 порт (TCP и UDP, то есть HTTPS и QUIC) только с IP-адресов, принадлежащих основным российским мобильным операторам и некоторым связанным сетям (MVNO, Yandex Cloud, Ростелеком). Все остальные попытки подключиться к 443 порту блокируются.]]></description><content:encoded><![CDATA[
  <h2 id="ASfn">📋 Содержание</h2>
  <ol id="3i0e">
    <li id="EJho">Назначение</li>
    <li id="6a5e">Принцип работы</li>
    <li id="YfSq">Системные требования</li>
    <li id="YQ8E">Установка</li>
    <li id="a0ER">Проверка работы</li>
    <li id="WpFY">Мониторинг и логи</li>
    <li id="5AWu">Управление</li>
    <li id="HhXK">Удаление</li>
    <li id="bi77">Настройка AS-списка</li>
    <li id="dYTQ">Устранение неполадок</li>
  </ol>
  <hr />
  <h2 id="Acb0">🎯 Назначение</h2>
  <p id="9bYc">Скрипт создает систему фильтрации входящих подключений на <strong>TCP/UDP порт 443</strong> (HTTPS/QUIC), разрешая трафик только из <strong>мобильных сетей России</strong> (MTS, Beeline, MegaFon, Tele2, Yota и др.) и блокируя все остальные подключения.</p>
  <p id="0HcK"><strong>Идеально подходит для:</strong></p>
  <ul id="hJfP">
    <li id="TU2D">Защиты от ботов и сканеров из зарубежных дата-центров</li>
    <li id="uHGC">Ограничения доступа к сервисам только для мобильных абонентов РФ</li>
    <li id="6Gij">Снижения нагрузки от автоматических атак</li>
  </ul>
  <hr />
  <h2 id="WDnL">⚙️ Принцип работы</h2>
  <ol id="FeMw">
    <li id="EHeN"><strong>Сбор префиксов</strong> - ежедневно в 00:00 скрипт запрашивает у RIPEstat (статистика RIPE) все объявленные префиксы для указанных AS-номеров</li>
    <li id="WJfi"><strong>Фильтрация и валидация</strong> - собранные префиксы сортируются, проверяются на валидность</li>
    <li id="gQWq"><strong>Защита от ошибок</strong> - система не применит обновление, если префиксов слишком мало или их количество упало более чем на 30%</li>
    <li id="SS6d"><strong>Применение правил</strong> - создается ipset с подсетями, iptables цепочка FILTER_MOBILE_443, которая разрешает трафик только из этих подсетей</li>
    <li id="VJCL"><strong>Автоматическое восстановление</strong> - при загрузке системы применяется последний успешно загруженный кеш префиксов</li>
  </ol>
  <p id="XRTT"><strong>Схема работы:</strong></p>
  <p id="6PXq">text</p>
  <pre id="blUf">RIPEstat API (список префиксов AS) → mobile443-update.sh → ipset → iptables
                                          ↓
                                  /var/lib/mobile443/prefixes.txt (кеш)</pre>
  <hr />
  <h2 id="MDjm">💻 Системные требования</h2>
  <ul id="Ongs">
    <li id="7JLg"><strong>ОС</strong>: Ubuntu 18.04+, Debian 10+, CentOS 7+ (с поддержкой systemd)</li>
    <li id="s7jd"><strong>Ядро</strong>: с поддержкой ipset и iptables</li>
    <li id="itBk"><strong>Память</strong>: от 256 MB RAM</li>
    <li id="ctUk"><strong>Диск</strong>: от 50 MB свободного места</li>
    <li id="LwBA"><strong>Зависимости</strong>: curl, jq, ipset, iptables, util-linux (flock)</li>
  </ul>
  <hr />
  <h2 id="NVxu">🚀 Установка</h2>
  <h3 id="kSPX">1. Сохраните скрипт</h3>
  <p id="iwKr">Сохраните полный код скрипта (который начинается с <code>#!/usr/bin/env bash</code>) в файл:</p>
  <p id="IRCR">bash</p>
  <pre id="8pnb">sudo nano /usr/local/bin/mobile443-installer.sh</pre>
  <p id="IwDS">Вставьте код и сохраните (Ctrl+X, Y, Enter).</p>
  <h3 id="ETdl">2. Сделайте скрипт исполняемым</h3>
  <p id="27mu">bash</p>
  <pre id="yqhE">sudo chmod +x /usr/local/bin/mobile443-installer.sh</pre>
  <h3 id="avwK">3. Запустите установку</h3>
  <p id="M7Ec">bash</p>
  <pre id="9EFF">sudo /usr/local/bin/mobile443-installer.sh install</pre>
  <h3 id="7FJu">4. Что происходит при установке:</h3>
  <p id="u7We">✅ Создаются директории:</p>
  <ul id="xdq0">
    <li id="YcGH"><code>/opt/mobile443/</code> - конфигурация (asns.conf)</li>
    <li id="G3pm"><code>/var/lib/mobile443/</code> - состояние (кеш префиксов, lock-файл)</li>
    <li id="ygUV"><code>/usr/local/sbin/</code> - исполняемые скрипты</li>
  </ul>
  <p id="UT0T">✅ Устанавливаются скрипты:</p>
  <ul id="MxPu">
    <li id="cqkw"><code>mobile443-common.sh</code> - общие функции</li>
    <li id="9zWn"><code>mobile443-update.sh</code> - обновление списка префиксов</li>
    <li id="svZO"><code>mobile443-apply-cache.sh</code> - применение кеша при загрузке</li>
  </ul>
  <p id="fZve">✅ Создаются systemd-юниты:</p>
  <ul id="1sip">
    <li id="Uab9"><code>mobile443-update.service</code> - разовое обновление</li>
    <li id="fxtH"><code>mobile443-update.timer</code> - ежедневное обновление в 00:00</li>
    <li id="qy5v"><code>mobile443-apply.service</code> - применение кеша при старте</li>
  </ul>
  <p id="99HM">✅ Запускается первое обновление</p>
  <hr />
  <h2 id="BQx9">🔍 Проверка работы</h2>
  <p id="CiLY">После установки выполните следующие проверки:</p>
  <h3 id="8T4v">Статус служб</h3>
  <p id="l1lJ">bash</p>
  <pre id="WYO5"># Статус таймера (должен быть active и waiting)
systemctl status mobile443-update.timer

# Статус последнего обновления
systemctl status mobile443-update.service --no-pager

# Статус службы применения кеша
systemctl status mobile443-apply.service --no-pager</pre>
  <h3 id="HTv6">Проверка ipset</h3>
  <p id="QjNb">bash</p>
  <pre id="lmWv"># Информация о множестве
ipset list allowed_mobile_443 | head -20

# Количество подсетей (должно быть несколько тысяч)
ipset list allowed_mobile_443 | grep -c &quot;^[0-9]&quot;</pre>
  <h3 id="uvh8">Проверка iptables</h3>
  <p id="TVqR">bash</p>
  <pre id="CBWH"># Просмотр правил
iptables -L FILTER_MOBILE_443 -n -v --line-numbers

# Где применяется цепочка
iptables -L INPUT -n -v | grep -A 2 FILTER_MOBILE_443
iptables -L FORWARD -n -v | grep -A 2 FILTER_MOBILE_443</pre>
  <h3 id="sUvl">Тестирование фильтрации</h3>
  <p id="qGD1">bash</p>
  <pre id="Z9vS"># С сервера, который НЕ в мобильной сети (например, зарубежный VPS):
curl -I https://ваш-сервер.com

# С мобильного телефона РФ (через мобильный интернет):
curl -I https://ваш-сервер.com</pre>
  <hr />
  <h2 id="7zhx">📊 Мониторинг и логи</h2>
  <h3 id="gOSL">Просмотр логов обновлений</h3>
  <p id="OV6e">bash</p>
  <pre id="9tvY"># Последние обновления
journalctl -u mobile443-update.service -n 30 --no-pager

# Следить за обновлениями в реальном времени
journalctl -u mobile443-update.service -f

# Логи применения кеша
journalctl -u mobile443-apply.service -n 30</pre>
  <h3 id="FRDw">Статистика по трафику</h3>
  <p id="4uXv">bash</p>
  <pre id="XmXv"># Сколько пакетов пропущено/заблокировано
iptables -L FILTER_MOBILE_443 -n -v -x

# Сброс счетчиков (если нужно)
iptables -Z FILTER_MOBILE_443</pre>
  <h3 id="0Cvb">Проверка кеша</h3>
  <p id="Uhbn">bash</p>
  <pre id="PUuX"># Размер кеша (количество подсетей)
wc -l /var/lib/mobile443/prefixes.txt

# Просмотр первых записей
head -20 /var/lib/mobile443/prefixes.txt</pre>
  <hr />
  <h2 id="hNkL">🛠️ Управление</h2>
  <h3 id="m3NY">Ручное обновление списка префиксов</h3>
  <p id="a66v">bash</p>
  <pre id="MDXb">sudo systemctl start mobile443-update.service
journalctl -u mobile443-update.service -f  # следить за процессом</pre>
  <h3 id="X5Vl">Применение кеша (если правила &quot;слетели&quot;)</h3>
  <p id="WRLM">bash</p>
  <pre id="rzc2">sudo systemctl start mobile443-apply.service</pre>
  <h3 id="8JdV">Временное отключение фильтрации (для отладки)</h3>
  <p id="v50E">bash</p>
  <pre id="GwPM"># Удалить правила из INPUT/FORWARD/DOCKER-USER (фильтрация отключится)
sudo iptables -D INPUT -p tcp --dport 443 -j FILTER_MOBILE_443
sudo iptables -D INPUT -p udp --dport 443 -j FILTER_MOBILE_443

# Вернуть обратно
sudo /usr/local/sbin/mobile443-apply-cache.sh</pre>
  <h3 id="LkAi">Полная перезагрузка правил</h3>
  <p id="CC77">bash</p>
  <pre id="Jsi3"># Очистить и пересоздать всё
sudo ipset destroy allowed_mobile_443
sudo ipset destroy allowed_mobile_443_tmp
sudo /usr/local/sbin/mobile443-apply-cache.sh</pre>
  <hr />
  <h2 id="d2Tz">🗑️ Удаление</h2>
  <p id="ctXX">bash</p>
  <pre id="i6yI">sudo /usr/local/bin/mobile443-installer.sh remove</pre>
  <p id="qkpf"><strong>Что будет удалено:</strong></p>
  <ul id="ip0Q">
    <li id="IKAb">Все systemd-юниты (mobile443-*)</li>
    <li id="VdEE">Все iptables правила и цепочки</li>
    <li id="5Y9t">Все ipset множества</li>
    <li id="Wh98">Скрипты в /usr/local/sbin/</li>
    <li id="aFIW">Директории /opt/mobile443/ и /var/lib/mobile443/</li>
  </ul>
  <hr />
  <h2 id="Afjp">⚙️ Настройка AS-списка</h2>
  <p id="mS7S">Список AS-номеров находится в <code>/opt/mobile443/asns.conf</code></p>
  <h3 id="OomJ">Текущий состав (по умолчанию):</h3>
  <ul id="3RGH">
    <li id="SRW5">MTS (8359)</li>
    <li id="JlIs">Beeline (3216)</li>
    <li id="a1Ji">MegaFon (31133, 8263, и др.)</li>
    <li id="h2pm">Tele2 (12958, 15378, и др.)</li>
    <li id="7wGH">Ростелеком (12389) - <em>добавлен для расширения покрытия</em></li>
    <li id="wHZF">Yandex Cloud (205638)</li>
    <li id="6rGu">Другие мобильные операторы</li>
  </ul>
  <h3 id="g5Z9">Редактирование списка:</h3>
  <p id="PcPj">bash</p>
  <pre id="umSV">sudo nano /opt/mobile443/asns.conf</pre>
  <p id="QquY"><strong>Формат:</strong> один AS-номер на строку, строки начинающиеся с <code>#</code> игнорируются.</p>
  <p id="DqAE">Пример добавления нового AS:</p>
  <p id="eUHP">bash</p>
  <pre id="tcOc">echo &quot;12345  # Новый оператор&quot; | sudo tee -a /opt/mobile443/asns.conf</pre>
  <p id="ZCH9"><strong>После изменения списка</strong> необходимо выполнить обновление:</p>
  <p id="Sz1Q">bash</p>
  <pre id="qg69">sudo systemctl start mobile443-update.service
journalctl -u mobile443-update.service -f</pre>
  <hr />
  <h2 id="qpRz">🔧 Устранение неполадок</h2>
  <h3 id="n72l">Проблема: &quot;Refusing update: too few prefixes&quot;</h3>
  <p id="Anhy"><strong>Причина:</strong> API вернуло менее 500 префиксов (обычно проблема с сетью или API RIPE)<br /><strong>Решение:</strong></p>
  <p id="loqR">bash</p>
  <pre id="ZFqT"># Проверить соединение с RIPE
curl -I https://stat.ripe.net

# Применить последний рабочий кеш
sudo systemctl start mobile443-apply.service

# Проверить логи ошибок
journalctl -u mobile443-update.service -n 50</pre>
  <h3 id="kJXQ">Проблема: &quot;Refusing update: new prefix count dropped too much&quot;</h3>
  <p id="vcod"><strong>Причина:</strong> Количество префиксов упало более чем на 30% от предыдущего значения (защита от битого обновления)<br /><strong>Решение:</strong> Если изменение ожидаемое (например, удалили AS из списка), можно принудительно обновить:</p>
  <p id="oQdt">bash</p>
  <pre id="zcOh"># Удалить старый кеш и запустить обновление
sudo rm /var/lib/mobile443/prefixes.txt
sudo systemctl start mobile443-update.service</pre>
  <h3 id="zqGk">Проблема: Нет доступа с мобильных устройств</h3>
  <p id="p5W6"><strong>Причина:</strong> Ваш мобильный оператор не в списке AS или использует нестандартные префиксы<br /><strong>Решение:</strong></p>
  <ol id="NO1i">
    <li id="66eV">Узнать AS своего оператора: <a href="https://2ip.ru/whois/" target="_blank">https://2ip.ru/whois/</a></li>
    <li id="JYl0">Добавить AS в <code>/opt/mobile443/asns.conf</code></li>
    <li id="jY3O">Обновить список</li>
  </ol>
  <h3 id="8f39">Проблема: Docker контейнеры не могут принимать соединения</h3>
  <p id="azah"><strong>Решение:</strong> Скрипт автоматически добавляет правила в цепочку DOCKER-USER, если она существует. Проверьте:</p>
  <p id="8yTo">bash</p>
  <pre id="sftI"># Убедиться, что правила есть
iptables -L DOCKER-USER -n -v | grep FILTER_MOBILE_443

# Если нет - применить кеш заново
sudo systemctl start mobile443-apply.service</pre>
  <h3 id="ZuHK">Проблема: Не запускается таймер</h3>
  <p id="OsBs">bash</p>
  <pre id="kate"># Проверить статус
systemctl status mobile443-update.timer

# Перезапустить таймер
sudo systemctl restart mobile443-update.timer
sudo systemctl daemon-reload</pre>
  <hr />
  <h2 id="2VVJ">📝 Примечания</h2>
  <ul id="eQNW">
    <li id="qN9u">Скрипт использует <strong>flock</strong> для предотвращения одновременных запусков</li>
    <li id="4iMV">Применяется <strong>защита от &quot;пустого&quot; обновления</strong> (минимум 500 префиксов)</li>
    <li id="78xC">При падении числа префиксов &gt;30% обновление <strong>отклоняется</strong></li>
    <li id="SyDg">Кеш хранится в <code>/var/lib/mobile443/prefixes.txt</code></li>
    <li id="Qnzl">Все операции <strong>идемпотентны</strong> - можно запускать многократно</li>
  </ul>
  <hr />
  <h2 id="00n6">🆘 Поддержка</h2>
  <p id="iZu4">Если возникли проблемы:</p>
  <ol id="S8Pr">
    <li id="shNY">Проверьте раздел Устранение неполадок</li>
    <li id="SLCw">Посмотрите логи: <code>journalctl -u mobile443-update.service -n 100</code></li>
    <li id="SrvS">Проверьте доступность API: <code>curl -I https://stat.ripe.net</code></li>
    <li id="kdOg">Убедитесь, что файл ASNs существует: <code>cat /opt/mobile443/asns.conf</code></li>
  </ol>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@idsmef/-4k4l5vCDqs</guid><link>https://teletype.in/@idsmef/-4k4l5vCDqs?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><comments>https://teletype.in/@idsmef/-4k4l5vCDqs?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef#comments</comments><dc:creator>idsmef</dc:creator><title>ИНСТРУКЦИЯ ПО ИСПОЛЬЗОВАНИЮ VK CLOUD SUBNET HUNTER</title><pubDate>Sun, 01 Mar 2026 13:16:45 GMT</pubDate><description><![CDATA[Скрипт предназначен для автоматического поиска и получения внешних IP-адресов с определенными префиксами (российские IP) в VK Cloud. Он последовательно перебирает указанные подсети, создавая и удаляя floating IP, пока не найдет IP с нужным префиксом.]]></description><content:encoded><![CDATA[
  <h1 id="JQXq">ИНСТРУКЦИЯ ПО ИСПОЛЬЗОВАНИЮ VK CLOUD SUBNET HUNTER</h1>
  <h2 id="9Wq9">📋 СОДЕРЖАНИЕ</h2>
  <ol id="bYF6">
    <li id="Up7V">Назначение скрипта</li>
    <li id="03X8">Системные требования</li>
    <li id="k2br">Подготовка к работе</li>
    <li id="348u">Настройка скрипта</li>
    <li id="nEji">Запуск скрипта</li>
    <li id="QS7h">Понимание вывода</li>
    <li id="I957">Устранение проблем</li>
    <li id="02vj">Дополнительные советы</li>
  </ol>
  <hr />
  <h2 id="bNAi">🎯 НАЗНАЧЕНИЕ СКРИПТА</h2>
  <p id="6fbG">Скрипт предназначен для автоматического поиска и получения внешних IP-адресов с определенными префиксами (российские IP) в VK Cloud. Он последовательно перебирает указанные подсети, создавая и удаляя floating IP, пока не найдет IP с нужным префиксом.</p>
  <p id="SPdJ"><strong>Целевые префиксы по умолчанию:</strong> <code>89.</code>, <code>185.</code>, <code>5.</code>, <code>95.</code>, <code>37.</code></p>
  <hr />
  <h2 id="zH9x">💻 СИСТЕМНЫЕ ТРЕБОВАНИЯ</h2>
  <h3 id="jDhZ">Необходимое ПО:</h3>
  <ul id="ok0f">
    <li id="l5iK"><strong>ОС:</strong> Linux (Ubuntu/Debian/CentOS) или WSL для Windows</li>
    <li id="rUAS"><strong>Python 3.x</strong> (обычно предустановлен)</li>
    <li id="NL4q"><strong>OpenStack Client</strong> - инструмент командной строки для работы с VK Cloud</li>
  </ul>
  <h3 id="AlJ5">Проверка установки:</h3>
  <p id="LPuh">bash</p>
  <pre id="RrZJ">python3 --version
openstack --version</pre>
  <hr />
  <h2 id="FXKZ">🔧 ПОДГОТОВКА К РАБОТЕ</h2>
  <h3 id="rCYJ">Шаг 1: Установка OpenStack клиента</h3>
  <p id="ZoQ1">bash</p>
  <pre id="khiz"># Ubuntu/Debian
apt update
apt install python3-pip -y
pip3 install python-openstackclient

# CentOS/RHEL
yum install python3-pip
pip3 install python-openstackclient</pre>
  <h3 id="tPdZ">Шаг 2: Скачивание файлов аутентификации из VK Cloud</h3>
  <ol id="qEkz">
    <li id="ulp9">Войдите в личный кабинет VK Cloud</li>
    <li id="YG8L">Перейдите в раздел &quot;Аккаунт&quot; → &quot;OpenStack авторизация&quot;</li>
    <li id="fAZs">Скачайте файл <code>project-openrc.sh</code></li>
    <li id="xqOZ">Поместите его в ту же папку, где будет находиться скрипт</li>
  </ol>
  <h3 id="pZeW">Шаг 3: Структура папок</h3>
  <p id="TP2N">Создайте отдельную папку для скрипта:</p>
  <p id="o0yt">bash</p>
  <pre id="Q4Ah">mkdir ~/vk-hunter
cd ~/vk-hunter</pre>
  <p id="ilU5">Поместите в эту папку:</p>
  <ul id="mPSG">
    <li id="8bJt"><code>project-openrc.sh</code> (файл аутентификации)</li>
    <li id="T2Af"><code>hunter.sh</code> (сам скрипт)</li>
  </ul>
  <hr />
  <h2 id="sCgB">⚙️ НАСТРОЙКА СКРИПТА</h2>
  <h3 id="l5Fq">Редактирование целевых подсетей</h3>
  <p id="ph4u">Откройте скрипт в текстовом редакторе:</p>
  <p id="pU5a">bash</p>
  <pre id="bYVJ">nano hunter.sh</pre>
  <p id="IsuT">Найдите строку (примерно 14-15):</p>
  <p id="XmTC">bash</p>
  <pre id="kvnh">TARGET_SUBNETS=(&quot;ext-sub19&quot; &quot;ext-sub21&quot; &quot;ext-sub26&quot; &quot;ext-sub35&quot; &quot;ext-sub37&quot;)</pre>
  <p id="tmBI"><strong>Замените на названия ваших подсетей</strong>, которые можно узнать командой:</p>
  <p id="YYRi">bash</p>
  <pre id="gFYP">openstack subnet list</pre>
  <h3 id="FdQC">Настройка защищенного IP</h3>
  <p id="ZHbH">Найдите строку (примерно 21):</p>
  <p id="OYgW">bash</p>
  <pre id="6kG3">SAVED_IP=&quot;90.x.x.x&quot;</pre>
  <p id="L56p">Замените на ваш реальный IP, который нельзя удалять (если есть).</p>
  <h3 id="WlwC">Настройка префиксов (опционально)</h3>
  <p id="QpGQ">При необходимости измените целевые префиксы:</p>
  <p id="k1xb">bash</p>
  <pre id="V8nb">PREFIXES=(&quot;89.&quot; &quot;185.&quot; &quot;5.&quot; &quot;95.&quot; &quot;37.&quot;)</pre>
  <h3 id="aPiw">Настройка задержек (опционально)</h3>
  <p id="oy39">bash</p>
  <pre id="udVz">MIN_DELAY=3  # Минимальная задержка между попытками
MAX_DELAY=7  # Максимальная задержка</pre>
  <hr />
  <h2 id="euw5">🚀 ЗАПУСК СКРИПТА</h2>
  <h3 id="5ICV">Шаг 1: Сделайте скрипт исполняемым</h3>
  <p id="xD8T">bash</p>
  <pre id="lQs7">chmod +x hunter.sh</pre>
  <h3 id="g6Iq">Шаг 2: Запустите скрипт</h3>
  <p id="dVxk">bash</p>
  <pre id="anGg">./hunter.sh</pre>
  <h3 id="kTwK">Шаг 3: Введите пароль (при первом запуске)</h3>
  <p id="hb6l">Скрипт запросит пароль от VK Cloud (тот же, что используете для входа в личный кабинет):</p>
  <p id="gEOM">text</p>
  <pre id="LSNf">🔐 Требуется аутентификация в VK Cloud
Введите ваш пароль от VK Cloud: [введите пароль]</pre>
  <p id="rZRT">Пароль не отображается на экране - это нормально.</p>
  <hr />
  <h2 id="9lUY">📊 ПОНИМАНИЕ ВЫВОДА</h2>
  <h3 id="DUAU">Начальный экран</h3>
  <p id="E8n0">text</p>
  <pre id="EtmZ">⚡ VK CLOUD SUBNET HUNTER v3.3 ⚡
🎯 Охотник за российскими IP-адресами
📡 Целевые префиксы: 89. 185. 5. 95. 37.
🛡️ Защищенный IP: 90.x.x.x</pre>
  <h3 id="HUNT">Процесс охоты</h3>
  <p id="AQeS">Скрипт создает таблицу с колонками:</p>
  <ul id="kVwP">
    <li id="28QG"><strong>№</strong> - номер попытки</li>
    <li id="Fhq0"><strong>IP Адрес</strong> - полученный IP</li>
    <li id="wxP3"><strong>Подсеть</strong> - подсеть, из которой получен IP</li>
    <li id="2OZN"><strong>Статус</strong> - результат проверки</li>
  </ul>
  <p id="v1Fc"><strong>Возможные статусы:</strong></p>
  <ul id="ue5u">
    <li id="XfQQ"><code>❌ Мимо</code> - IP не подходит под целевые префиксы</li>
    <li id="07su"><code>⚠️ Подсеть занята</code> - в подсети нет свободных IP</li>
    <li id="KHlr"><code>✅ БИНГО! (89.*)</code> - НАЙДЕН НУЖНЫЙ IP! 🎉</li>
  </ul>
  <h3 id="I8MD">Пример успешного нахождения</h3>
  <p id="RRaq">text</p>
  <pre id="WE6I">🏆🏆🏆  ПОЗДРАВЛЯЮ! ЦЕЛЕВОЙ IP НАЙДЕН!  🏆🏆🏆

┌──────────────────────────────────────────────────────────┐
│ IP адрес:     89.123.45.67                               │
│ ID:           6a7b8c9d-0e1f-2a3b-4c5d-6e7f8a9b0c1d      │
│ Подсеть:      ext-sub19                                   │
│ Подсеть ID:   1a2b3c4d-5e6f-7a8b-9c0d-1e2f3a4b5c6d      │
│ Найден в:     2024-01-15 14:23:45                        │
│ Попыток:      47                                          │
└──────────────────────────────────────────────────────────┘</pre>
  <hr />
  <h2 id="m9Ds">🔍 УСТРАНЕНИЕ ПРОБЛЕМ</h2>
  <h3 id="SllE">Проблема: &quot;OpenStack клиент не найден!&quot;</h3>
  <p id="bphA"><strong>Решение:</strong></p>
  <p id="N6Qi">bash</p>
  <pre id="4Vuj">pip3 install python-openstackclient
# или
sudo apt install python3-openstackclient  # для Ubuntu</pre>
  <h3 id="VfIU">Проблема: &quot;Не удалось аутентифицироваться&quot;</h3>
  <p id="E6Ca"><strong>Проверьте:</strong></p>
  <ol id="efXI">
    <li id="Kdi2">Правильность пароля</li>
    <li id="HSiU">Наличие файла <code>project-openrc.sh</code> в текущей папке</li>
    <li id="rCfo">Срок действия аккаунта в VK Cloud</li>
  </ol>
  <h3 id="Imh6">Проблема: &quot;Ни одна из указанных подсетей не найдена&quot;</h3>
  <p id="0r1x"><strong>Решение:</strong></p>
  <ol id="8hU1">
    <li id="NOK0">Проверьте названия подсетей:</li>
  </ol>
  <p id="MG6y">bash</p>
  <pre id="cHyS">openstack subnet list</pre>
  <ol id="6nBl">
    <li id="KbKa">Исправьте массив <code>TARGET_SUBNETS</code> в скрипте</li>
  </ol>
  <h3 id="10K4">Проблема: Скрипт работает медленно</h3>
  <p id="wYJX"><strong>Настройте задержки в скрипте:</strong></p>
  <p id="swlb">bash</p>
  <pre id="SuQh">MIN_DELAY=1  # Уменьшите до 1 секунды
MAX_DELAY=3  # Уменьшите до 3 секунд</pre>
  <h3 id="JoX0">Проблема: Постоянно &quot;Подсеть занята&quot;</h3>
  <p id="WrcO"><strong>Возможные причины:</strong></p>
  <ul id="iXzJ">
    <li id="AQol">Достигнут лимит квоты на IP-адреса</li>
    <li id="bKVB">В подсети закончились свободные IP</li>
    <li id="KPjx">Слишком быстрые запросы (увеличьте задержки)</li>
  </ul>
  <hr />
  <h2 id="es6B">💡 ДОПОЛНИТЕЛЬНЫЕ СОВЕТЫ</h2>
  <h3 id="fpEE">1. Запуск в фоне (screen/tmux)</h3>
  <p id="WYCJ">Для длительной работы:</p>
  <p id="mTJU">bash</p>
  <pre id="dmhm"># Установка screen
apt install screen

# Создание сессии
screen -S vk-hunter

# Запуск скрипта
./hunter.sh

# Отсоединение: Ctrl+A, затем D
# Возврат: screen -r vk-hunter</pre>
  <h3 id="UuRM">2. Использование найденного IP</h3>
  <p id="Z0ud">После нахождения IP, прикрепите его к серверу:</p>
  <p id="95XU">bash</p>
  <pre id="PQbP"># Список серверов
openstack server list

# Прикрепление IP к серверу
openstack server add floating ip ИМЯ_СЕРВЕРА НАЙДЕННЫЙ_IP

# Пример
openstack server add floating ip my-server 89.123.45.67</pre>
  <h3 id="tEb6">3. Автоматическое сохранение логов</h3>
  <p id="u0P9">bash</p>
  <pre id="s0X1">./hunter.sh | tee hunt.log</pre>
  <h3 id="zf6T">4. Экспорт переменных без пароля</h3>
  <p id="wnL7">Для автоматизации можно экспортировать пароль заранее:</p>
  <p id="dMIp">bash</p>
  <pre id="Ecpb">export OS_PASSWORD=&quot;ваш_пароль&quot;
./hunter.sh</pre>
  <hr />
  <h2 id="N0Ev">⚠️ ВАЖНЫЕ ЗАМЕЧАНИЯ</h2>
  <ol id="HPbi">
    <li id="4FSt"><strong>Квоты:</strong> VK Cloud имеет ограничения на количество floating IP</li>
    <li id="oj4E"><strong>Стоимость:</strong> За каждый созданный IP может взиматься плата</li>
    <li id="rYXw"><strong>Безопасность:</strong> Не передавайте файл <code>project-openrc.sh</code> третьим лицам</li>
    <li id="HNEk"><strong>Стабильность:</strong> При слишком частых запросах API может временно блокировать доступ</li>
  </ol>
  <hr />
  <h2 id="SBGq">🆘 ПОЛУЧЕНИЕ ПОМОЩИ</h2>
  <ul id="icbM">
    <li id="qiQk"><strong>Автор скрипта:</strong> @idsmef</li>
    <li id="BnX8"><strong>Telegram канал:</strong> <a href="https://t.me/idsmef" target="_blank">https://t.me/idsmef</a></li>
    <li id="P9ji"><strong>Документация VK Cloud:</strong> <a href="https://cloud.vk.com/docs/" target="_blank">https://cloud.vk.com/docs/</a></li>
  </ul>

]]></content:encoded></item><item><guid isPermaLink="true">https://teletype.in/@idsmef/IiSaL4SqYaS</guid><link>https://teletype.in/@idsmef/IiSaL4SqYaS?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef</link><comments>https://teletype.in/@idsmef/IiSaL4SqYaS?utm_source=teletype&amp;utm_medium=feed_rss&amp;utm_campaign=idsmef#comments</comments><dc:creator>idsmef</dc:creator><title>Инструкция: Создание пользователя adm с правами root и домашней папкой /root</title><pubDate>Tue, 24 Feb 2026 17:25:24 GMT</pubDate><description><![CDATA[Да, создать пользователя adm с домашней папкой /root и дать ему права суперпользователя возможно, хотя это нестандартная конфигурация. Вот полная инструкция:]]></description><content:encoded><![CDATA[
  <p id="30sF">Да, создать пользователя <code>adm</code> с домашней папкой <code>/root</code> и дать ему права суперпользователя возможно, хотя это нестандартная конфигурация. Вот полная инструкция:</p>
  <h2 id="t4e1">Инструкция: Создание пользователя adm с правами root и домашней папкой /root</h2>
  <h3 id="uMDf">Шаг 1: Создание пользователя с указанием домашней директории</h3>
  <p id="W54Q">Создадим пользователя <code>adm</code> с домашней папкой <code>/root</code>:</p>
  <p id="GtUD">bash</p>
  <pre id="KeC3">sudo useradd -m -d /root -s /bin/bash adm</pre>
  <p id="6RfN"><strong>Объяснение параметров:</strong></p>
  <ul id="5WNL">
    <li id="xVPO"><code>-m</code> — создать домашнюю директорию, если она не существует</li>
    <li id="CmY3"><code>-d /root</code> — указать <code>/root</code> как домашнюю директорию</li>
    <li id="zLBN"><code>-s /bin/bash</code> — установить bash как командную оболочку</li>
    <li id="qgl6"><code>adm</code> — имя создаваемого пользователя</li>
  </ul>
  <h3 id="SpC4">Шаг 2: Установка пароля для пользователя</h3>
  <p id="qmEx">bash</p>
  <pre id="KEUg">sudo passwd adm</pre>
  <p id="m7so">Система запросит ввод нового пароля дважды .</p>
  <h3 id="UywU">Шаг 3: Проверка создания пользователя</h3>
  <p id="R2WA">Убедимся, что пользователь создан с правильной домашней директорией:</p>
  <p id="UYLi">bash</p>
  <pre id="zQDD">getent passwd adm</pre>
  <p id="UB05">Вы должны увидеть строку, где последнее поле (перед командой оболочки) указывает на <code>/root</code>:</p>
  <p id="2w57">text</p>
  <pre id="1Ts9">adm:x:1001:1001::/root:/bin/bash</pre>
  <h3 id="tJb7">Шаг 4: Настройка прав на домашнюю директорию /root</h3>
  <p id="MrWB">Поскольку <code>/root</code> принадлежит пользователю root, нужно дать доступ пользователю <code>adm</code>:</p>
  <p id="DNRE">bash</p>
  <pre id="MLW0"># Добавим пользователя adm в группу root
sudo usermod -aG root adm

# Изменим права доступа к директории /root
sudo chmod 750 /root

# Убедимся, что владелец и группа установлены правильно
sudo chown root:root /root</pre>
  <p id="C4Zj"><strong>Важно</strong>: Права <code>750</code> означают:</p>
  <ul id="6NkK">
    <li id="hByL"><code>7</code> (rwx) для владельца (root) — полный доступ</li>
    <li id="d7fS"><code>5</code> (r-x) для группы (root) — чтение и выполнение</li>
    <li id="aPTX"><code>0</code> (---) для остальных — нет доступа</li>
  </ul>
  <h3 id="qRwJ">Шаг 5: Копирование файлов конфигурации (опционально)</h3>
  <p id="5ph0">Чтобы у пользователя <code>adm</code> были стандартные файлы конфигурации оболочки:</p>
  <p id="yH08">bash</p>
  <pre id="Oduy"># Скопируем файлы из /etc/skel в /root
sudo cp -rT /etc/skel /root/

# Изменим владельца скопированных файлов
sudo chown -R adm:adm /root/.bashrc /root/.profile 2&gt;/dev/null</pre>
  <h3 id="C7RX">Шаг 6: Предоставление прав суперпользователя (sudo)</h3>
  <p id="eCtt"><strong>Способ А: Через группу sudo (рекомендуется для Ubuntu/Debian)</strong></p>
  <p id="ridX">bash</p>
  <pre id="xtJe"># Добавляем пользователя в группу sudo
sudo usermod -aG sudo adm</pre>
  <p id="ISA1"><strong>Способ Б: Через группу wheel (для RHEL/CentOS/AlmaLinux)</strong></p>
  <p id="H4bf">bash</p>
  <pre id="zeV9"># Добавляем пользователя в группу wheel
sudo usermod -aG wheel adm</pre>
  <p id="mu6e"><strong>Способ В: Напрямую через sudoers (максимальные права)</strong></p>
  <p id="3vOh">bash</p>
  <pre id="KFoX"># Редактируем файл sudoers через visudo (обязательно!)
sudo visudo -f /etc/sudoers.d/adm</pre>
  <p id="ylDb">Добавьте строку:</p>
  <p id="LKp7">text</p>
  <pre id="jiwY">adm ALL=(ALL:ALL) ALL</pre>
  <p id="v7MN">или для доступа без пароля:</p>
  <p id="fYsz">text</p>
  <pre id="Jp0E">adm ALL=(ALL:ALL) NOPASSWD: ALL</pre>
  <h3 id="6ZCu">Шаг 7: Настройка окружения пользователя</h3>
  <p id="1vqw">Создадим файл <code>.bashrc</code> в <code>/root</code> для пользователя <code>adm</code> (если его нет):</p>
  <p id="dVW3">bash</p>
  <pre id="OoVM"># Создадим базовый .bashrc
cat &gt; /root/.bashrc &lt;&lt; &#x27;EOF&#x27;
# ~/.bashrc: executed by bash(1) for interactive shells

# If not running interactively, don&#x27;t do anything
case $- in
    *i*) ;;
    *) return;;
esac

# Set colorful prompt
if [ &quot;$USER&quot; = &quot;root&quot; ]; then
    PS1=&#x27;\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ &#x27;
else
    PS1=&#x27;\[\033[01;32m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ &#x27;
fi

# Alias definitions
alias ll=&#x27;ls -alF&#x27;
alias la=&#x27;ls -A&#x27;
alias l=&#x27;ls -CF&#x27;

# Enable color support
if [ -x /usr/bin/dircolors ]; then
    eval &quot;$(dircolors -b)&quot;
    alias ls=&#x27;ls --color=auto&#x27;
fi

# Enable bash completion
if [ -f /etc/bash_completion ]; then
    . /etc/bash_completion
fi
EOF

# Установим владельца
sudo chown adm:adm /root/.bashrc</pre>
  <h3 id="D4K5">Шаг 8: Проверка прав пользователя</h3>
  <p id="DLnw">Переключитесь на пользователя <code>adm</code> и проверьте его права:</p>
  <p id="FS5n">bash</p>
  <pre id="VYMU"># Переключение на пользователя adm
sudo su - adm

# Проверка текущего пользователя и директории
whoami
pwd
id

# Проверка sudo прав
sudo whoami
# Должно вернуть &quot;root&quot;

# Проверка доступа к системным файлам
sudo ls -la /root
sudo cat /etc/shadow</pre>
  <h3 id="jQBI">Шаг 9: Настройка SSH для пользователя adm (опционально)</h3>
  <p id="bCdK">Если нужно разрешить вход по SSH для пользователя <code>adm</code>:</p>
  <p id="tATr">bash</p>
  <pre id="hgQ0"># Создаем SSH директорию в /root (если её нет)
sudo mkdir -p /root/.ssh
sudo chmod 700 /root/.ssh

# Добавляем публичный ключ (если используется)
sudo nano /root/.ssh/authorized_keys
# Вставьте содержимое публичного ключа

# Устанавливаем правильного владельца
sudo chown -R adm:adm /root/.ssh
sudo chmod 600 /root/.ssh/authorized_keys</pre>
  <h3 id="w8wb">Полный скрипт для автоматизации</h3>
  <p id="9Mg9">Вот полный скрипт, который выполняет все шаги автоматически:</p>
  <p id="Ei4h">bash</p>
  <pre id="1ElS">#!/bin/bash

# Создание пользователя adm с домашней папкой /root
echo &quot;Создание пользователя adm...&quot;
sudo useradd -m -d /root -s /bin/bash adm

# Установка пароля
echo &quot;Установите пароль для пользователя adm:&quot;
sudo passwd adm

# Добавление в группы
echo &quot;Добавление в группы sudo и root...&quot;
sudo usermod -aG sudo,root adm

# Настройка прав на /root
echo &quot;Настройка прав доступа к /root...&quot;
sudo chmod 750 /root
sudo chown root:root /root

# Настройка sudo прав
echo &quot;Предоставление sudo прав...&quot;
echo &quot;adm ALL=(ALL:ALL) ALL&quot; | sudo tee /etc/sudoers.d/adm
sudo chmod 440 /etc/sudoers.d/adm

# Копирование файлов конфигурации
echo &quot;Копирование файлов конфигурации...&quot;
sudo cp -rT /etc/skel/ /root/
sudo chown -R adm:adm /root/.bashrc /root/.profile 2&gt;/dev/null

# Создание .bashrc если его нет
if [ ! -f /root/.bashrc ]; then
    echo &quot;Создание .bashrc...&quot;
    cat &gt; /root/.bashrc &lt;&lt; &#x27;INNER_EOF&#x27;
# ~/.bashrc for adm user
export PS1=&#x27;\[\033[01;31m\]\u@\h\[\033[00m\]:\[\033[01;34m\]\w\[\033[00m\]\$ &#x27;
alias ll=&#x27;ls -alF&#x27;
alias la=&#x27;ls -A&#x27;
alias l=&#x27;ls -CF&#x27;
INNER_EOF
    sudo chown adm:adm /root/.bashrc
fi

echo &quot;Готово! Пользователь adm создан.&quot;
echo &quot;Переключитесь на него: sudo su - adm&quot;
echo &quot;Проверьте права: sudo whoami&quot;</pre>
  <h3 id="V5jH">Важные предупреждения</h3>
  <ol id="pOTJ">
    <li id="kIHe"><strong>Безопасность</strong>: Создание пользователя с домашней папкой <code>/root</code> нестандартно и может создать путаницу. Обычно root и обычные пользователи имеют раздельные домашние директории по соображениям безопасности .</li>
    <li id="Diqh"><strong>Конфликты</strong>: Если несколько пользователей используют <code>/root</code> как домашнюю папку, возможны конфликты с файлами конфигурации.</li>
    <li id="lW8j"><strong>Альтернатива</strong>: Рекомендуется оставить стандартную домашнюю папку <code>/home/adm</code> и просто дать пользователю права sudo:bashsudo adduser adm sudo usermod -aG sudo adm</li>
    <li id="wGEv"><strong>Проверка</strong>: После создания убедитесь, что пользователь имеет все необходимые права, но при этом не создает угроз безопасности системе.</li>
  </ol>

]]></content:encoded></item></channel></rss>