Задать вопрос

Можно ли частично (выборочно) заблокировать доступ в интернет при выключенном VPN?

В данный момент использую NekoBox что бы направлять трафик некоторых доменов и приложений (например Steam) через VPN сервер.

А можно ли как то сделать, что бы к некоторым доменам и/или приложениям БЛОКИРОВАЛСЯ доступ в интернет, если VPN НЕ запущен? На смартфоне с root есть программы что умеют так делать. А на ПК?

В NekoBox настроен "кастомный" маршрут:
{
    "rules": [
        {
            "outbound": "proxy",
            "process_name": [
                "steam.exe",
                "steamservice.exe",
                "steamwebhelper.exe"
            ]
        },
        {
            "domain_suffix": [
                "steamcommunity.com",
                "steampowered.com"
            ],
            "outbound": "proxy"
        }
    ]
}

И вот этот самый кастомный маршрут должен блокироваться "если ВПН не запущен".
  • Вопрос задан
  • 850 просмотров
Подписаться 1 Простой Комментировать
Помогут разобраться в теме Все курсы
  • Merion Academy
    Онлайн-курс по сетевым технологиям Huawei
    2 месяца
    Далее
  • Skillfactory
    Управление информационной инфобезопасностью
    11 месяцев
    Далее
  • ProductStar
    Профессия Белый хакер
    9 месяцев
    Далее
Решения вопроса 1
K14Mua
@K14Mua Автор вопроса
Спасибо доброму человеку Zil1 что написал очень подробную инструкцию как решить мою проблему в этом комментарии ( Как заблокировать домен/программу так, что б запуск ВПН отменял эту блокировку? )

Тут я дублирую его ответ что бы отметить вопрос решенным

Итак. Я использовал ВПН клиент NekoBox и протокол Shadowsocks
В дополнение к этому нужно установить программу https://github.com/netchx/netch
А так же расширение браузера ZeroOmega (если используете Chrome как и я)

В NekoBox нужно вернуть настройки маршрутов к значению по умолчанию, если они были изменены. Так же нужно выключить режим TUN если он был включен. А лучше переустановить NekoBox с нуля

Другими словами удаляем NekoBox, ставим его заново, добавляем свой конфиг Shadowsocks, запускаем его и все Больше ничего с NekoBox делать не нужно, его настройка полностью завершена

Теперь переходим к настройке Netch. Тут нужно настроить SOCKS сервер

68d56c6524667135680813.png
Ничего сложного, нужно заполнить только первые две строки, имя (любое) и IP : Порт из NekoBox
Остальные строки трогать не нужно

68d570200795b983917395.png
Следующим шагом нужно выбрать "Mode" из списка предустановленных или создать свой (Вкладка Mode >> Create Process Mode). Mode это настройка маршрутизации наподобие той что была в NekoBox. В предустановленных правилах уже есть Steam, можно использовать его, или создать на его основе своё прописав всё что нужно. Можно указать IP адреса, названия *.exe приложений, пути до приложений или до папки с приложениями. Интернет трафик всего что вы укажите в Mode, будет пропускаться через VPN NekoBox. Если же NekoBox не запущен, доступ в интернет указанным приложениям будет заблокирован

68d572e43a598544328808.png
В целом это все что нужно. Можете еще текущий профиль с понятным названием, или сделать несколько для быстрого переключения, если нужно. Кнопка "Start" запускает процесс перенаправления. Теперь трафик ресурсов прописанных в выбранном Mode будет идти исключительно через NekoBox, или блокироваться если ВПН не подключен

Последний важный шаг, это настройка автозапуска Netch и NekoBox

68d5750650e26338701957.png
C настройкой клиента Steam окончено. А что если мы откроем сайт Steam в браузере? Netch к сожалению не умеет работать напрямую с сайтами. Разве что весь браузер Chrome.exe прописать, но это перебор. Нужен избирательный метод

Для этого в браузер нужно поставить расширение ZeroOmega

https://chromewebstore.google.com/detail/proxy-swi...
После установки расширения заходим в его настройки, и добавляем профиль, почти так же как в Netch

68d57743550f9664128452.png
А потом в разделе auto switch настраиваем маску доменов, которые должны открываться через NekoBox

68d57abdf3c6f383150219.png
В конце переходим на нужный сайт, и включаем режим auto switch в расширении

68d57f509b0d3216633446.png
На этом вроде бы все. В итоге

Мы направляем трафик сайта Steam и клиента Steam через NekoBox. А если NekoBox не подключен к ВПН серверу, или банально даже не запущен, то ни сайт ни клиент не подключится к интернету. Именно это я и хотел сделать когда задавал свой вопрос, но не знал как этого добиться...

З.Ы. Альтернативный вариант для программ на ПК. Вместо Netch, с которым у меня лично были проблемы (не всегда срабатывал автозапуск), можно использовать ProxiFyre (Не путать с ProxiFire !!!). Минус в том что это консольное приложение без графического интерфейса, а плюс в том что его можно запустить как службу. У служб должно быть меньше проблем с автозапуском

Итак, в целом инструкция об установке взята со страницы проекта - github.com/wiresock/proxifyre
Но я переведу ее на русский

Перед установкой ProxiFyre нужно сначала установить Windows Packet Filter и Visual Studio Runtime Libraries 2022 года. Для этого посещаем страницу github.com/wiresock/ndisapi/releases а затем learn.microsoft.com/en-us/cpp/windows/latest-supported-vc-redist?view=msvc-170 и качаем установщики ARM64, 32-bit (x86) или 64-bit (x64) в зависимости от того какая у вас система. Качать все 3 версии не нужно, только одну. Установка этих программ примитивная, установщики сделают все сами.

Затем качаете сам ProxiFyre со страницы релизов - github.com/wiresock/proxifyre/releases
Там так же три версии, выбираете нужную. Получаете просто архив с программой который нужно распаковать. Я не уверен, но обычно для подобных программ рекомендуют использовать пути без пробелов и русских букв.

После распаковки в папке с программой нужно создать конфиг файл - app-config.json
Затем открыть его блокнотом и вписать что-то вроде этого:

{
 "logLevel": "Error",
 "proxies": [
   {
     "appNames": ["C:\\Program Files (x86)\\Steam", "C:\\Program Files (x86)\\Common Files\\Steam", "msedge.exe"],
     "socks5ProxyEndpoint": "127.0.0.1:2080",
     "supportedProtocols": ["TCP", "UDP"]
   }
 ],
 "excludes": [
   "C:\\Program Files (x86)\\Steam\\steamapps\\common"
 ]
}


"logLevel": "Error" - отвечает за то, какие записи сохранять в логе, Error - только ошибки.
Другие варианты Warning, Info, Debug, All. Если изменить на All то каждый лог файл может занимать по 100 МБ и больше

В строке appNames указаны папки и программы, трафик которых следует направлять через VPN (NekoBox)
"C:\\Program Files (x86)\\Steam" - значит что через VPN будет направляется трафик всех программ в этой папке
"msedge.exe" - значит что через VPN будет направляется трафик браузера Edge. Я использую его что бы проверить работает ли программа. Если VPN выключен то Edge не сможет получить доступ в интернет

"socks5ProxyEndpoint": "127.0.0.1:2080" это тот же IP и Порт из NekoBox, точно так же как я делал в Netch

"supportedProtocols": ["TCP", "UDP"] - это протоколы к которым следует применять правило, я выбрал оба

"excludes": ["C:\\Program Files (x86)\\Steam\\steamapps\\common"] - исключение. Указанная строка означает что трафик программ (игр) из папки common не нужно направлять через VPN. Вместо адреса папки там так же можно указывать названия.exe приложений

И на этом все, сохраняем файл и запускаем ProxiFyre.exe от имени админа. Если консоль программы открылась и осталась открытой, значит все работает. Но что бы не запускать программу каждый день вручную, ее можно превратить службу которая сама будет запускаться при старте ПК. Но для этого нужно вводить команды консоли

Сначала запустите консоль (CMD) от имени админа
Пропишите команду cd папка_с_программой
Где "папка_с_программой" это путь куда вы распаковали ProxiFyre

Следующая команда
ProxiFyre.exe install

Затем
ProxiFyre.exe start
Что бы запустить службу

Теперь служба каждый раз должна запускаться при старте ПК

Так же есть команады "ProxiFyre.exe stop" и "ProxiFyre.exe uninstall" что бы остановить или удалить службу
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 4
@Disel0k
Пропишите явно маршруты через удаленный шлюз. Нет шлюза нет доступа, вернулся шлюз - вернулся доступ
Ответ написан
@Refguser
Решения для бизнеса: корп.сайты, ИМ, боты и пр.
А можно ли как то сделать, что бы к некоторым доменам и/или приложениям БЛОКИРОВАЛСЯ доступ в интернет, если VPN НЕ запущен?


К доменам проще простого - в хостс заверни на локал.
Для блокировки программ/приложений есть файрволы.
Ответ написан
@benten115124
Никак этого не добиться. Я тоже пытался такое сделать, перечитал десятки страниц (твой вопрос так через поиск и нашел), и пришел только к одному выводу. Единственный способ сделать нечто подобное это заблокировать нужные ресурсы на роутере, тогда в теории ВПН на ПК будет обходить эту блокировку. Но мой роутер не настолько продвинутый что бы я смог это проверить. Нужен действительно дрогой роутер, а мой всего 8к стоял...
Ответ написан
Комментировать
@Kuddesnik
Можно создать правило в брандмауэре windows, который будет блокировать траффик от этих приложений если он идёт через твой основной сетевой интерфейс в интернет/локальную сеть.
Таким образом когда NekoBox выключен то все будет блокироваться потому что трафф будет идти в основной интерфейс, а если nekobox запущен, то будет идти через него и правило фаера не будет срабатывать.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы