Как запустить весь трафик через vpn
Перейти к содержимому

Как запустить весь трафик через vpn

  • автор:

Как запустить весь трафик через vpn

Как правило, после подключения по VPN весь трафик перенаправляется через это соединение.

Если на компьютере, например, были загрузка данных, клиент-серверные взаимодействия или авторизация доступа, то они прекращаются. Torrent и браузеры также начинают работать только через VPN.

Чтобы этого не происходило и VPN-подключение использовалось только для доступа в корпоративную сеть, в настройках VPN необходимо снять галочку в пункте:

«Использовать основной шлюз в удаленной сети» (см. рисунок)

Заворачиваем весь трафик локальной сети в vpn без ограничения скорости

В прошлой статье мы разбирали, как анонимизировать весь Интернет-трафик одного хоста. Теперь давайте повысим уровень безопасности, обернув всю локальную сеть VPN-ом. При этом мы избавимся от опасности выйти в интернет с еще не настроенного девайса и ассоциировать адрес своего провайдера с этим устройством.

Для этой цели можно просто настроить VPN-клиент на шлюзе, если это позволяет роутер. Но такое решение черевато последствиями в виде уменьшения скорости работы Интернета, повышенной нагрузки на роутер, к тому же некоторые клиенты отправляют весь трафик через основное соединение сразу же в случае отключения от VPN. Не стоит забывать, что даже ведущие VPN-провайдеры не могут обеспечить 100% аптайм своих серверов.

Итак, каковы наши цели:

  • пропускать через VPN весь без исключения исходящий трафик
  • делать это с максимально возможной скоростью
  • не зависеть от временных неполадок VPN-провайдера
  • максимум анонимности в Интернете

Подготовка

Нам нужен мощный роутер, способный шифровать трафик на высокой скорости. Он будет выступать в роли VPN-шлюза. Мы нашли замечательные мини-ПК на AliExpress, которые подошли под эту задачу: четырехъядерный Intel Celeron, нативная поддержка AES-CBC, AES-XTS, AES-GCM, AES-ICM и аж четыре RJ-45 порта. И по умолчанию на них была установлена pfSense. С ней и будем работать.

Если ваш Интернет-провайдер требует особой настройки соединения, вы можете взять еще два роутера и разделить доступ к интернету и локальную сеть, а между ними поставить VPN-шлюз. В другом случае, можете напрямую подключить провод провайдера к VPN-шлюзу, а за ним разместить ваш домашний роутер с локальной сетью. Первоначальная настройка Интернет-соединения на pfSense выходит за рамки этой статьи.

Настройка

Статья предполагает, что интернет подключен к первому порту, ваш ПК или домашняя сеть — ко второму, и что до настройки VPN вы смогли выйти в интернет.

Во избежание дальнейших проблем давайте авторизуемся у любимого VPN-провайдера и найдем инструкцию по настройке pfSense. Если ваш провайдер не предоставляет инструкцию по ручной настройке в pfSense, можно воспользоваться вот этой от моего любимого провайдера: www.expressvpn.com/support/vpn-setup/pfsense-with-expressvpn-openvpn — основная суть не изменится. Приведенная статья с картинками расписывает, как полностью настроить только что купленный роутер с pfSense.

Вот краткий чеклист настройки нового VPN-а:

  • System — Cert. Manager — CAs. Добавляем сертификат VPN CA
  • System — Cert. Manager — Certificates. Добавляем сертификат VPN сервера
  • VPN — OpenVPN — Clients. Создаем нового клиента по инструкции от VPN-провайдера
  • Interfaces — Assignment. Добавляем клиентов как интерфейсы
  • System — Routing. Проверяем что появился шлюз.
  • Firewall — NAT. Добавляем правила NAT для каждого клиента
  • Firewall — Rules — LAN. Добавляем перенаправление всего трафика из сети через Gateway
  • System — Routing. Для активного VPN-a в настройках шлюза указываем Monitor IP, пингом до которого будет проверяться работоспособность VPN-а

На этом этапе останавливаемся и проверяем, что доступ в интернет через VPN есть, и что при отключении от VPN доступ пропадает вовсе. Если интернета нет — где-то ошиблись, смотрим логи VPN, проверяем настройки заново. Если после отключения VPN трафик начинает идти через основной шлюз, значит накосячили в Firewall — Rules — LAN.

Теперь интересная часть. Если ваш провайдер выдает 20 Мбит в секунду, и то ночью — то на этом этапе вы уже получили локальную сеть, полностью закрытую VPN-ом, который работает с максимально возможной скоростью. Но что, если у вас канал пошире?

Масштабируемся

Настраиваем еще пару-тройку VPN клиентов для разных серверов по инструкции выше. Добавлять сертификаты CA и сервера не нужно, выбираем уже добавленные. Также не выполняем шаг с Firewall — Rules — LAN, его мы сделаем позже. Необходимое количество клиентов устанавливается эмпирическим путем по результатам замеров скорости через каждый отдельный сервер.

После того как завершили, у нас должна быть следующая картина:

— В VPN — OpenVPN — Clients созданы и активированы клиенты

VPN - OpenVPN - Clients

— В Interfaces — Assignment созданы и активированы интерфейсы для каждого клиента

Interfaces - Assignment

— В Status — OpenVPN все клиенты находятся в состоянии «up»

Status - OpenVPN

— В System — Routing появились шлюзы, и для них указаны пингуемые IP-адреса.
(Если не можете придумать, кого попинговать — откройте shodan.io и найдите все IP google)

System - Routing

Теперь зайдем в System — Routing — Gateway Groups. Нажмите Add. Укажите запоминающееся имя в Group Name.

Теперь обратите внимание на таблицу Gateway Priority. Группы шлюзов работают следующим образом: failover по уровням, балансировка внутри уровня. Столбец Tier указывает, в каком уровне будет использоваться данный шлюз. Простейший вариант — указываем все активные VPN-шлюзы в первом уровне. Вариант для медленного интернета — создаем двух клиентов и размещаем их на первом и втором уровне, но в этом случае будет только отказоустойчивость.

Ниже найдите Trigger Level. Это условие, при котором произойдет временное исключение шлюза из группы. Варианты кроме Member Down позволяют перестать отправлять пакеты шлюзу чуть раньше, чем он упадет полностью — по превышению порога потери пакетов и/или по высокому пингу. Пороги потерь и пинга задаются для каждого шлюза индивидуально в System — Routing — Gateway.

Как только выбрали удобный вариант расстановки шлюзов по уровням, нажмите Save.

Пришло время направить трафик в новую группу шлюзов. Идем в Firewall — Rules — LAN, открываем созданное ранее правило перенаправления, спускаемся до списка со шлюзами и видим в этом списке созданную нами группу. Выбираем её, сохраняем правило и применяем изменения. Всё, теперь каждое новое соединение будет идти через новый VPN-клиент в группе.

Время тестирования: открываем api.ipify.me, отключаем кэш и keep-alive, и перезагружаем страницу. Если вы единственный пользователь в сети, на каждое обновление страницы вы должны видеть новый IP адрес, отличающийся от вашего домашнего. Если вы видите один и тот же адрес, полностью обновите страницу при помощи Ctrl+F5 (Command+Shift+R на маках), или откройте новую приватную вкладку. Если не помогло — значит где-то ошиблись в настройках группы, или не сменили шлюз в правилах фаерволла.

Теперь о плохом. К сожалению, у данного решения есть небольшой трудноуловимый баг, если использовать его перед роутером локальной сети (а не коммутатором). Рано или поздно у вас отваливается один из VPN-клиентов, срабатывает исключение его из группы, и всё хорошо до того момента, пока VPN не поднимется обратно. Так как все пользователи находятся за NAT, а VPN-роутер видит только один IP-адрес и 65 тысяч портов, со временем он ассоциирует все порты с теми VPN-клиентами, которые никогда не падали. Соответственно, как только VPN-клиент поднимается, через него не идет никакой трафик. Клиент полностью жив, через него идут пинги и некоторое стабильное количество служебного трафика, но через него не идет трафик клиентов. По идее это решалось бы сбросом таблицы соединений, и для этого даже есть галочка в настройках pfSense, но в моих исследованиях эта галочка напрочь блокировала всякий доступ к роутеру, так как клиенты начинали валиться циклично, при этом роняя только-только установленные соединения с веб-интерфейсом, что сильно затрудняло исправление проблемы. Без этой галочки при наличии более двух VPN-ов они уравновешивали себя, так что доступ хотя бы через один всегда был. В конце концов я настроил в мониторинге условие «если пять минут на интерфейсе было меньше 1000 байт трафика в секунду, сообщить мне», и в особо запущенных случаях перезагружаю зомби-VPN-клиента вручную с целью сбросить таблицу соединений.

Итак, мы получили сеть, полностью пропускаемую через несколько распределенных VPN-ов. За счет сочетания нескольких разных VPN-серверов мы не зависим от доступности каждого из них в отдельности, а скорость сети ограничена только вашим каналом за вычетом шифрования. Если вдруг вам не хватит одного роутера — их тоже можно масштабировать, но это тема для отдельной статьи.

Как защититься от утечки VPN-трафика

Независимо от того, по какой причине вы выбрали использовать VPN, главное — это сохранность ваших данных. Организуя доступ через VPN, мы полагаем, что весь отправляемый и получаемый через шифрованный VPN-канал трафик надежно защищен. Но не стоит забывать о том, что какую бы надежную VPN мы не использовали, возможна утечка VPN-трафика, и в этом нет вины поставщика VPN. Не верьте уловкам продавцов, что у них самая безопасная VPN на планете. Безусловно, правильный выбор поставщика VPN – половина успеха, но повышение безопасности используемого VPN только в ваших руках. Обеспечить 100% безопасность данных невозможно, но можно снизить вероятность утечки до минимума. Один из вариантов утечки VPN-трафика – когда трафик, который должен идти по защищенному каналу (VPN), идет по открытому каналу. Причиной такой утечки может быть ситуация, когда потеряно подключение к VPN серверу по различным причинам, например, если используется бесплатная или очень дешевая VPN. Чтобы не проверять каждую минуту работает ли VPN, лучше потратить 10-15 минут на то чтобы повысить безопасность VPN и свести к минимуму риск утечки VPN трафика.

Пропало VPN-подключение – как защититься от утечки

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

Доступ через VPN и запрет трафика от приложений с использованием стандартных средств Windows

Запретить трафик при обрыве VPN-соединения можно без использования сторонних приложений, например, используя утилиту taskkill.exe, которая удалит процесс, использующий трафик через VPN. Для этого создаем задачу в «Планировщике задач Windows». Запускаем планировщик, нажав сочетание клавиш Win и R, в открывшемся окне вводим taskschd.msc и нажимаем кнопку «ОК». Пропало VPN-подключение – как защититься от утечкиВ открывшемся окне планировщика задач выбираем пункт меню «Создать» -> «Задачу…». Доступ через VPN и запрет трафика от приложенийПри этом откроется окно создания задачи, где необходимо указать название задачи – произвольное, к примеру, как у нас, – VPN_utorrent, чтобы в дальнейшем ориентироваться на то, что данная задача создана именно для приложения Utorrent. Задаем параметр «Выполнять с наивысшими правами». Параметр «Выполнять с наивысшими правами»Далее заполняем параметры задачи в закладках «Триггеры» и «Действия». В закладке «Тригеры» выбираем «Журнал Приложение», Источник выбираем RasClient (это клиент удаленного доступа Windows), код события указываем 20226. Нажимаем кнопку «ОК» и переходим к заполнению закладки «Действия». Заполняем параметры задачи в закладках «Триггеры» и «Действия»В закладке «Действия» жмем кнопку «Создать» и в открывшемся окне задаем программу taskkill.exe, а в аргументах указываем /f /im utorrent.exe. Нажимаем кнопку «ОК» и закрываем «Планировщик». В закладке «Действия» жмем кнопку «Создать»Таким образом, если пропадет VPN-подключение, процесс приложения будет остановлен и доступ к интернету для указанного приложения, в нашем случае utorrent.exe, будет ограничен. Для того чтобы при разрывах VPN полностью блокировался весь трафик можно воспользоваться способом, описанным в статье. При этом будет блокирован абсолютно весь трафик, в том числе и открытый.

Отправка всего трафика через защищенную VPN

Чтобы пускать весь трафик через VPN необходимо удалить из маршрутизации шлюз интернета по умолчанию и заменить его на vpn шлюз, т.к. если будут зафиксированы разрывы VPN трафик VPN пойдет через него. Для этого необходимо запустить командную строку от имени администратора, например, в строке поиска ввести cmd. Отправка всего трафика через защищенную VPNПри этом в результатах отобразится классическое приложение «Командная строка». Щелкаем по ней правой кнопкой мыши и выбираем «Запустить от имени администратора». «Запустить от имени администратора»В открывшемся окне командной строки в необходимо ввести следующие команды: route delete 0.0.0.0 mask 0.0.0.0 route add –p 1.1.1.1 mask 255.255.255.0 192.168.0.1 route add –p 0.0.0.0 mask 0.0.0.0 1.1.1.1 где: 192.168.0.1 — шлюз интернета, 1.1.1.1 — VPN-шлюз. После ввода каждой команды необходимо нажимать клавишу «Enter» на клавиатуре, в результате должен появляться результат «ОК». Когда все команды введены и получен положительный результат, окно командной строки можно закрыть. «Запустить от имени администратора»В результате данной настройки при потере соединения с сервером VPN пропадут все соединения – в том числе будет невозможен доступ к интернет ресурсам. Для отмены внесенных изменений необходимо ввести в командной строке команды заменив add –p на delete. Также существуют специальные программы, которые несколько раз в секунду проверяют VPN-соединение для заданных приложений и приостанавливает их работу, если VPN соединение обрывается. В этом случае VPN-трафик не выходит за пределы защищенного соединения. Такие программы бывают как платные, так и бесплатные. Самые популярные из них VPN-watcher и VPNetMon.

Заключение

Таким образом, независимо от того какая VPN работает у вас, вы всегда можете повысить ее безопасность и предотвратить утечки VPN-трафика буквально за 10-15 минут. В статье изложены далеко не все способы предотвращения утечки VPN-трафика, если по каким-то причинам вы не смогли воспользоваться данными способами, пишите в комментариях с какими проблемами вы столкнулись. Жду ваших вопросов в комментариях, ваш Mr. Whoer

Заворачиваем весь трафик локальной сети в vpn без ограничения скорости

В прошлой статье мы разбирали, как анонимизировать весь Интернет-трафик одного хоста. Теперь давайте повысим уровень безопасности, обернув всю локальную сеть VPN-ом. При этом мы избавимся от опасности выйти в интернет с еще не настроенного девайса и ассоциировать адрес своего провайдера с этим устройством.

Для этой цели можно просто настроить VPN-клиент на шлюзе, если это позволяет роутер. Но такое решение черевато последствиями в виде уменьшения скорости работы Интернета, повышенной нагрузки на роутер, к тому же некоторые клиенты отправляют весь трафик через основное соединение сразу же в случае отключения от VPN. Не стоит забывать, что даже ведущие VPN-провайдеры не могут обеспечить 100% аптайм своих серверов.

Итак, каковы наши цели:

  • пропускать через VPN весь без исключения исходящий трафик
  • делать это с максимально возможной скоростью
  • не зависеть от временных неполадок VPN-провайдера
  • максимум анонимности в Интернете

Подготовка

Нам нужен мощный роутер, способный шифровать трафик на высокой скорости. Он будет выступать в роли VPN-шлюза. Мы нашли замечательные мини-ПК на AliExpress, которые подошли под эту задачу: четырехъядерный Intel Celeron, нативная поддержка AES-CBC, AES-XTS, AES-GCM, AES-ICM и аж четыре RJ-45 порта. И по умолчанию на них была установлена pfSense. С ней и будем работать.

Если ваш Интернет-провайдер требует особой настройки соединения, вы можете взять еще два роутера и разделить доступ к интернету и локальную сеть, а между ними поставить VPN-шлюз. В другом случае, можете напрямую подключить провод провайдера к VPN-шлюзу, а за ним разместить ваш домашний роутер с локальной сетью. Первоначальная настройка Интернет-соединения на pfSense выходит за рамки этой статьи.

Настройка

Статья предполагает, что интернет подключен к первому порту, ваш ПК или домашняя сеть — ко второму, и что до настройки VPN вы смогли выйти в интернет.

Во избежание дальнейших проблем давайте авторизуемся у любимого VPN-провайдера и найдем инструкцию по настройке pfSense. Если ваш провайдер не предоставляет инструкцию по ручной настройке в pfSense, можно воспользоваться вот этой от моего любимого провайдера: www.expressvpn.com/support/vpn-setup/pfsense-with-expressvpn-openvpn — основная суть не изменится. Приведенная статья с картинками расписывает, как полностью настроить только что купленный роутер с pfSense.

Вот краткий чеклист настройки нового VPN-а:

  • System — Cert. Manager — CAs. Добавляем сертификат VPN CA
  • System — Cert. Manager — Certificates. Добавляем сертификат VPN сервера
  • VPN — OpenVPN — Clients. Создаем нового клиента по инструкции от VPN-провайдера
  • Interfaces — Assignment. Добавляем клиентов как интерфейсы
  • System — Routing. Проверяем что появился шлюз.
  • Firewall — NAT. Добавляем правила NAT для каждого клиента
  • Firewall — Rules — LAN. Добавляем перенаправление всего трафика из сети через Gateway
  • System — Routing. Для активного VPN-a в настройках шлюза указываем Monitor IP, пингом до которого будет проверяться работоспособность VPN-а

На этом этапе останавливаемся и проверяем, что доступ в интернет через VPN есть, и что при отключении от VPN доступ пропадает вовсе. Если интернета нет — где-то ошиблись, смотрим логи VPN, проверяем настройки заново. Если после отключения VPN трафик начинает идти через основной шлюз, значит накосячили в Firewall — Rules — LAN.

Теперь интересная часть. Если ваш провайдер выдает 20 Мбит в секунду, и то ночью — то на этом этапе вы уже получили локальную сеть, полностью закрытую VPN-ом, который работает с максимально возможной скоростью. Но что, если у вас канал пошире?

Масштабируемся

Настраиваем еще пару-тройку VPN клиентов для разных серверов по инструкции выше. Добавлять сертификаты CA и сервера не нужно, выбираем уже добавленные. Также не выполняем шаг с Firewall — Rules — LAN, его мы сделаем позже. Необходимое количество клиентов устанавливается эмпирическим путем по результатам замеров скорости через каждый отдельный сервер.

После того как завершили, у нас должна быть следующая картина:

— В VPN — OpenVPN — Clients созданы и активированы клиенты

VPN - OpenVPN - Clients

— В Interfaces — Assignment созданы и активированы интерфейсы для каждого клиента

Interfaces - Assignment

— В Status — OpenVPN все клиенты находятся в состоянии «up»

Status - OpenVPN

— В System — Routing появились шлюзы, и для них указаны пингуемые IP-адреса.
(Если не можете придумать, кого попинговать — откройте shodan.io и найдите все IP google)

System - Routing

Теперь зайдем в System — Routing — Gateway Groups. Нажмите Add. Укажите запоминающееся имя в Group Name.

Теперь обратите внимание на таблицу Gateway Priority. Группы шлюзов работают следующим образом: failover по уровням, балансировка внутри уровня. Столбец Tier указывает, в каком уровне будет использоваться данный шлюз. Простейший вариант — указываем все активные VPN-шлюзы в первом уровне. Вариант для медленного интернета — создаем двух клиентов и размещаем их на первом и втором уровне, но в этом случае будет только отказоустойчивость.

Ниже найдите Trigger Level. Это условие, при котором произойдет временное исключение шлюза из группы. Варианты кроме Member Down позволяют перестать отправлять пакеты шлюзу чуть раньше, чем он упадет полностью — по превышению порога потери пакетов и/или по высокому пингу. Пороги потерь и пинга задаются для каждого шлюза индивидуально в System — Routing — Gateway.

Как только выбрали удобный вариант расстановки шлюзов по уровням, нажмите Save.

Пришло время направить трафик в новую группу шлюзов. Идем в Firewall — Rules — LAN, открываем созданное ранее правило перенаправления, спускаемся до списка со шлюзами и видим в этом списке созданную нами группу. Выбираем её, сохраняем правило и применяем изменения. Всё, теперь каждое новое соединение будет идти через новый VPN-клиент в группе.

Время тестирования: открываем api.ipify.me, отключаем кэш и keep-alive, и перезагружаем страницу. Если вы единственный пользователь в сети, на каждое обновление страницы вы должны видеть новый IP адрес, отличающийся от вашего домашнего. Если вы видите один и тот же адрес, полностью обновите страницу при помощи Ctrl+F5 (Command+Shift+R на маках), или откройте новую приватную вкладку. Если не помогло — значит где-то ошиблись в настройках группы, или не сменили шлюз в правилах фаерволла.

Теперь о плохом. К сожалению, у данного решения есть небольшой трудноуловимый баг, если использовать его перед роутером локальной сети (а не коммутатором). Рано или поздно у вас отваливается один из VPN-клиентов, срабатывает исключение его из группы, и всё хорошо до того момента, пока VPN не поднимется обратно. Так как все пользователи находятся за NAT, а VPN-роутер видит только один IP-адрес и 65 тысяч портов, со временем он ассоциирует все порты с теми VPN-клиентами, которые никогда не падали. Соответственно, как только VPN-клиент поднимается, через него не идет никакой трафик. Клиент полностью жив, через него идут пинги и некоторое стабильное количество служебного трафика, но через него не идет трафик клиентов. По идее это решалось бы сбросом таблицы соединений, и для этого даже есть галочка в настройках pfSense, но в моих исследованиях эта галочка напрочь блокировала всякий доступ к роутеру, так как клиенты начинали валиться циклично, при этом роняя только-только установленные соединения с веб-интерфейсом, что сильно затрудняло исправление проблемы. Без этой галочки при наличии более двух VPN-ов они уравновешивали себя, так что доступ хотя бы через один всегда был. В конце концов я настроил в мониторинге условие «если пять минут на интерфейсе было меньше 1000 байт трафика в секунду, сообщить мне», и в особо запущенных случаях перезагружаю зомби-VPN-клиента вручную с целью сбросить таблицу соединений.

Итак, мы получили сеть, полностью пропускаемую через несколько распределенных VPN-ов. За счет сочетания нескольких разных VPN-серверов мы не зависим от доступности каждого из них в отдельности, а скорость сети ограничена только вашим каналом за вычетом шифрования. Если вдруг вам не хватит одного роутера — их тоже можно масштабировать, но это тема для отдельной статьи.

  • Блог компании Postuf
  • Информационная безопасность

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *