Задать вопрос
  • Как сделать объединение двух сетей, две сети со своим белым IP?

    shurshur
    @shurshur
    praiden, в значении параметра -o указывается интерфейс, а не IP. В принципе, в данном случае можно опустить - всё равно в POSTROUTING другой трафик не попадёт...
  • Как мне сделать чтобы бот записывал, то что введет участник в переменную в модальном окне?

    shurshur
    @shurshur
    Кирилл, смотреть в документации или в тысячах пояснительных бригад синтаксис конструкций INSERT и UPDATE.
  • Передача запроса через API: как скрыть информацию об отправителе?

    shurshur
    @shurshur
    Airtone, для сервисов нет никакого сайта. Они видят, как с некоего IP приходят запросы. На этом IP может даже и сайта никакого не быть.

    И дальше уже вопрос, соотнесут ли эти запросы с Россией. Если IP относится к AS, владелец которой имеет прямое отношение к России (в whois указана страна RU, в базах типа GeoIP адреса числятся за Россией), то совершенно неважно, где физически находится сервер.

    Прокси - это легально! Как легально иметь дома нож - это же не означает, что с его помощью будет совершено преступление? Но естественно надо ограничить доступ посторонних. Самое простое и вполне разумное - поднять VPN до этого прокси и повесить его на приватный адрес внутри этого VPN.
  • Почему половина музыкальных ботов в Discordе перестали работать?

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

    Ну а так, вероятно, опять чего-то ютуб подкрутил и youtube_dl перестал справляться с доставанием музыки.
  • Как мне сделать чтобы бот записывал, то что введет участник в переменную в модальном окне?

    shurshur
    @shurshur
    Кирилл, в коде в тексте вопроса я вижу некую переменную name. Я так понимаю, её и хочется записывать?

    В sqlite да, можно, это простейшая база данных, которая не требует установки, просто данные хранятся в файле на диске. Для несложных применений сойдёт, а если боту потребуется рост и развитие, то можно будет переделать на более зрелую базу.
  • Передача запроса через API: как скрыть информацию об отправителе?

    shurshur
    @shurshur
    Airtone, где размещён "модуль" - неважно. Важно, с какого IP приходят запросы. Ну, естественно, не надо светить реальный IP в X-Fordwarded-For. И в rDNS не надо совершенно случайно (тм) оставлять домен .ru.

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

    Платные прокси вряд ли помогут, тем более если коммерческий аккаунт начинает ходить через рандомные прокси и тем более в разных странах - это уже подозрительно. А ходить по API из сети хостера - это более чем нормально. Как бы API и предполагает работу сервисов, где-то там хостящихся.
  • Передача запроса через API: как скрыть информацию об отправителе?

    shurshur
    @shurshur
    Просто обеспечить запросы с нероссийского IP. Для чего запросы делать с зарубежного сервака. Можно просто прокси там на дешёвой виртуалке поднять.
  • Как сделать объединение двух сетей, две сети со своим белым IP?

    shurshur
    @shurshur
    praiden, тогда на домашнем сервере поднимаем VPN. Делаем статический роут мимо VPN до внешнего сервера, чтобы при поднятии VPN он не начинал пускать трафик VPN внутрь VPN:

    ip route add IP_ВНЕШНЕГО_СЕРВЕРА via IP_ДОМАШНЕГО_РОУТЕРА


    Затем убираем роутинг по умолчанию через домашний роутер и поднимаем через VPN:

    ip route del default via IP_ДОМАШНЕГО_РОУТЕРА
    ip route add default dev ИНТЕРФЕЙС_VPN
    # или так:
    #ip route add default via IP_ВНЕШНЕГО_СЕРВЕРА_ВНУТРИ_VPN


    После этого весь трафик сервера будет идти в интернет через VPN. Можно с помощью tracepath убедиться.

    Это, конечно, работает до перезагрузки или перезапуска VPN. Надо отдельно обеспечить, чтобы всё это поднималось автоматически. В некоторых VPN можно маршруты задавать прям в конфиге. Например, в openvpn есть ключ route конфига, который позволяет это сделать. Можно сделать отдельный скрипт, который всё настраивает, и как-то запускать его при поднятии VPN (например, в openvpn для этого тоже есть специальная инструкция).

    После обустройства домашнего сервера перейдём к внешнему.

    Там надо настроить SNAT/DNAT через iptables. На входе пакеты на нужные порты должны получать изменение IP получателя, чтобы они летели в VPN (DNAT - Destination NAT), а на выходе сервер должен подменять адрес отправителя на свой, чтобы пакеты летели от имени сервера (SNAT - Source NAT).

    # снаружи прилетает пакет - заменяем ему получателя на домашний сервер
    iptables -t nat -A PREROUTING -p tcp --dport 12345 -d ВНЕШНИЙ_IP_СЕРВЕРА -j DNAT --to IP_ДОМАШНЕГО_ВНУТРИ_VPN:12345
    # от домашнего сервера прилетает пакет - в конце маршрутизации меняем ему IP источника,
    # чтобы казалось, что его отправил внешний сервер
    iptables -t nat -A POSTROUTING -s IP_ДОМАШНЕГО_ВНУТРИ_VPN -o ВНЕШНИЙ_ИНТЕРФЕЙС_СЕРВЕРА -j SNAT --to ВНЕШНИЙ_IP_СЕРВЕРА


    Также надо разрешить форвард пакетов (по умолчанию выключен): в файл /etc/sysctl.conf добавляем

    net.ipv4.ip_forward=1

    Затем вызываем sysctl -p, чтобы применить без перезагрузки.

    Настройки iptables могут быть плохо совместимы с сторонними средствами управления iptables, в частности, с всякими firewalld/ufw, так что их надо будет отключить, ну или адаптировать под них приведённые примеры правил.
  • Как мне сделать чтобы бот записывал, то что введет участник в переменную в модальном окне?

    shurshur
    @shurshur
    Кирилл,

    with open("file.json", "w") as f:
        json.dump({"name": name }, fp=f)


    Прям по учебнику.

    Но судя по тому что там "информация о себе", у каждого пользователя должен быть свой файл? Или в одном файле все пользователи?

    Дальше встрянет проблема что если файл одновременно читается и пишется, то всё умрёт. Ещё хуже если он одновременно записывается два раза.

    И мы плавно придём к пониманию всех преимуществ баз данных для такой задачи.
  • Как сделать объединение двух сетей, две сети со своим белым IP?

    shurshur
    @shurshur
    praiden, ну вот предлагаю по порядку обсуждать.

    Игровые сервера могут работать на разных портах одного IP? Если да, то можно их на одном IP навесить на разные порты.

    Дома обычный интернет работает через этот сервер или сервер "параллелен" остальным пользователям (например, всё ходит через роутер)?

    На сервере винда, Linux или ещё что-то (BSD, Solaris, Android... да, конечно, вряд ли, но уточнить надо)?

    Будет ли нормально, если весь исходящий трафик с сервера будет ходить через vds?
  • Как сделать объединение двух сетей, две сети со своим белым IP?

    shurshur
    @shurshur
    praiden, откуда я знаю сколько тебе нужно?

    Я так понимаю у тебя какой-то игровой сервер, который слишком тяжёлый, чтобы его ставить у хостера, но дома нет внешнего IP? Тогда достаточно одного IP, реально. Пробросить нужный порт или несколько через VPN, на стороне домашнего сервера или (сложный вариант) сделать policy routing для посылки ответных пакетов через VPN, или (гораздо проще) весь трафик с этого сервера завернуть в VPN (но потребуется не забыть отдельный статический маршрут до внешнего сервера, чтобы VPN работал). Второй вариант может быть плох, если по какой-то причине трафик не нужно пускать через VPN. Например, если дома свой собственный интернет ходит через этот же сервер.

    В общем, если будет больше подробностей задачи, то будет и больше целенаправленных советов.
  • Как сделать объединение двух сетей, две сети со своим белым IP?

    shurshur
    @shurshur
    praiden, я ничего не взял, 4 IP упоминались в вопросе и переписке.
  • Как сменить кодировку MySQL?

    shurshur
    @shurshur
    pixal, можно изменить кодировку базы, а ещё можно указывать кодировку у конкретных таблиц. И менять кодировку при коннекте к базе принудительно.
  • Что особенного в IP адресе 8.8.8.8?

    shurshur
    @shurshur
    Griboks, ну не всегда, оно ещё может по BGP отдавать себя в разных сетях.
  • Почему не работает ping?

    shurshur
    @shurshur
    127.0.0.1 можно поднять вручную.

    ip l set up dev lo
    ip a add 127.0.0.1/8 dev lo

    Но в целом собирать систему с нуля это оооочень сложный квест. Я 20 лет назад пытался собрать LFS, словил кучу отсутствующих в книжке (LFS по сути книжка) ошибок, поправил их (это требует приличного понимания) и упёрся в то, что там в каком-то софте automake ооочень в недрах валился с совершенно непонятной ошибкой, которую мне скоро надоело отлаживать. В итоге кастомную сборку на систему с 486 процессором и 8 Мб оперативы я сделал из Gentoo, это оказалось намного быстрее и удобнее...
  • Что особенного в IP адресе 8.8.8.8?

    shurshur
    @shurshur
    Либо провайдер во время блокировки NATит 8.8.8.8 на свой собственный DNS, поскольку этот DNS часто стоит во многих системах и устройствах вместо провайдерского. Можно трейс сравнить при включённом и неоплаченном доступе, если он заметно отличается то это тот самый случай...
  • Как мне сделать чтобы бот записывал, то что введет участник в переменную в модальном окне?

    shurshur
    @shurshur
    Кирилл, в какую переменную? Куда? Что с этой переменной будет делаться?

    В коде в вопросе есть переменная name. Если заниматься буквоедством, то вот переменная. Правда, она локальная и выбрасывается при выходе из функции.
  • Как сделать объединение двух сетей, две сети со своим белым IP?

    shurshur
    @shurshur
    praiden, насколько я понял предыдущую переписку, у неё 4 IP. Если это не так, то, конечно, такой финт ушами не прокатит.

    Можно сделать nat но придётся делать policy routing, чтобы ответные пакеты с конечного сервера летели в VPN. Либо, как вариант, этому серверу весь трафик наружу завернуть в VPN.
  • Как мне сделать чтобы бот записывал, то что введет участник в переменную в модальном окне?

    shurshur
    @shurshur
    Кирилл, эта переменная свойство чего? Сервера? Канала? Пользователя?

    Например, если это свойство канала, то заводим словарь с данными и ключом channel.id. В него кладём нужные данные:

    channel_data = {}
    
    ...
    
    d = channel_data.get(channel.id, None)
    if not d:
        # по этому каналу у нас пока нет записи в словаре, создаём новую
        d = channel_data[channel.id] = {}
    d["text"] = "Новый текст на замену старому"


    Это просто пример для иллюстрации принципа, тут данныех хранятся в памяти. Можно вместо этого записывать их, например, в базу. Или в redis. Или хотя бы в файл. Можно сочетать, например, хранить и в памяти, и в базе - чтобы при перезапуске бота данные не терялись (тогда при загрузке надо загружать данные из базы, ну или регулярно по таймеру).

    Не забываем, что в Python всё передаётся по ссылке, поэтому d и channel_data[channel.id] будут ссылками на одно и то же, что можно проверить, выведя их id:

    print (id(d))
    print (id(channel_data[channel.id]))
  • Как собрать и запустить образ докера?

    shurshur
    @shurshur
    Xian, если приложенька лежит в image, то да. Если в image её нет и её прокинули внутрь через volume, то никак.