Ответы пользователя по тегу Open Source
  • Какой VPN выбрать?

    xenon
    @xenon
    Too drunk to fsck
    Я бы все-таки предпочел wireguard и пока что не слишком волновался насчет того, что его блокируют - это все легко обходится. Раз у вас свой сервер, то решается все легко.

    Думать о том, как там будет через 3 года, и готовиться обязательно к самому худшему сценарию пока не нужно. А то потратите силы на подготовку к самому худшему, а он не случится - обидно будет. Но даже если случится, через три года если что и переставите, а там может или шах или ишак. А все это время лучше жить с быстрым VPN, пользоваться которым одно удовольствие. И ставится он "красиво", системным способом, а не как Outline.

    У wg очень простая сигнатура для DPI, поэтому легко его детектят и блочат. Но для этой проблемы несколько вариантов решений.

    Решение 1 от ValdikSS : Сначала с того же клиентского порта и на тот же серверный "пробить" соединение другим пакетом (без сигнатуры). Так как для DPI этот пакет - часть соединения, то оно уже не похоже на wg. А вот wg сервер просто проигнорирует первый мусорный пакет, выбросит, а на второй ответит.

    wg0.conf: ListenPort = 56789

    sudo nping --udp --count 1 --data-length 16 --source-port 56789 --dest-port DEST_PORT DEST_IP


    Как проверить, что wireguard не заблокирован?
    https://ntc.party/t/wireguard/4968/6
    (обратите внимание на то, что на клиенте нужно зафиксировать ListenPort)

    2. Тот же самый эффект, но без ручного запуска nping каждый раз (просто автоматизируем то же решение):
    в конфиг wg (wg0.conf или какой у вас) просто пишем:
    [Interface]
    PrivateKey = ....
    Address = 10.9.0.2/24
    ListenPort = 12345
    
    PreUp = nping --udp --count 1 --data-length 16 --source-port 12345 --dest-port 12345 123.123.123.123


    3. Можно чуть больше заморочиться, и замаскировать (обфусцировать) wg трафик через netfilter - если на клиенте и сервере закодировать его с одинаковым ключом (и самым простым шифрованием) - DPI его не видит.
    https://github.com/infinet/xt_wgobfs

    В общем, wireguard сам по себе искаропки не умеет "прятаться" (это и не его задача), но если нужно его спрятать - это делается в две минуты. (Ну первый раз подольше, пока разбираешься). Силы зла и негетеросексуализма и так уже вынуждены применять дорогой и тяжелый DPI для блокировки очень простого VPN. Блокировать обфусцированный, как в этих примерах - на порядок (порядки) сложнее (если вообще возможно) и точно неэффективно - огромные затраты, чтоб заблочить VPN всего паре десятков тысяч ITшников, которые тут же как-то иначе наладят себе VPNы (в крайнем случае перейдут на Outline или что-то еще) - бессмысленно, поэтому, думаю, никогда и не случится.
    Ответ написан
    Комментировать
  • Как ввязаться в большой opensource-проект?

    xenon
    @xenon
    Too drunk to fsck
    Для примера — сам линукс-кернел. Кода — очень много. И даже примерно понимать все основные принципы, как они реализованы внутри (и как происходит фильтрование в netfilter и как создается файл в fs) — задачка непростая. Но он делится на однообразные куски. Например, драйвера сетевых карт — сотни карт поддерживаются, все драйвера — очень похожи друг на друга. Прочитал (или даже написал) вдумчиво один драйвер и более-менее понял их всех, и получил общее представление о том, что там работает выше в ядре. Есть даже туториалы по написанию LKM и каких-то реальных и псевдо-драйверов — отличный способ начать. Аналогично с таржетами netfilter, с файловыми системами, queue discipline итд. Начинаете как раз с узкого куска, ищете туториалы (если они есть — не всегда), читаете исходники аналогичных модулей. В итоге сможете сделать один маленький кусок, и получите кое-какое смутное представление о тех частях ядра, которые сопряжены с ним.
    Ответ написан
    Комментировать