Заворачиваем весь трафик локальной сети в 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 созданы и активированы клиенты

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

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

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

Теперь зайдем в 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
- Информационная безопасность
Привет
Разделение трафика между VPN и локальной сеткой
6 posts • Page 1 of 1
RGoo Уже с Приветом Posts: 1917 Joined: Tue Jul 08, 2003 9:42 am Location: Canada
Разделение трафика между VPN и локальной сеткой
Post by RGoo » Tue Jan 27, 2009 8:12 pm
Есть машина, подключенная к локальной сетке и VPN (софтверно, т.е. стоит софт который эмулирует вторую сетевую карту), и-нет есть на выходе из локалки (роутер) и на выходе из VPN. Подскажите пожалуйста, как разделить трафик ? Т.е. что-бы софт, которому надо VPN — как ходил в VPN, так и ходил (как и сейчас), а вот скажем Firefox\ICQ — ходил в инет через локальную сетку. Сейчас похоже все идет через VPN, что не здорово.
Дочки rulezzz !
genka8 Уже с Приветом Posts: 7979 Joined: Wed Jun 16, 2004 3:01 pm Location: Kiev-> Charm(?) City Contact:
Re: Разделение трафика между VPN и локальной сеткой
Post by genka8 » Tue Jan 27, 2009 8:16 pm
Если через VPN нужен доступ только к определенным IP адресам или сеткам, то вопрос можно решить при помощи static routes.
Возможно, что делить трафик на уровне программ могут некоторые software firewalls, но это лишь мое предположение.
Who его знает
Searcher Уже с Приветом Posts: 2703 Joined: Thu May 09, 2002 9:39 am Location: MA, USA
Re: Разделение трафика между VPN и локальной сеткой
Post by Searcher » Tue Jan 27, 2009 8:58 pm
RGoo wrote: Есть машина, подключенная к локальной сетке и VPN (софтверно, т.е. стоит софт который эмулирует вторую сетевую карту),
Т.е. мы говорим об установленном обычном VPN client? Они все так делают, ставят «виртуальный адаптер», который и «перехватывает» трафик который надо запустить в VPN tunnel.
RGoo wrote: и-нет есть на выходе из локалки (роутер) и на выходе из VPN. Подскажите пожалуйста, как разделить трафик ? Т.е. что-бы софт, которому надо VPN — как ходил в VPN, так и ходил (как и сейчас), а вот скажем Firefox\ICQ — ходил в инет через локальную сетку. Сейчас похоже все идет через VPN, что не здорово.
Ключевое выражение «split tunneling»:
Как настраивается зависит от производителя оборудования/софта. Помнится у Sonicwall дополнительных телодвижений не требовалось. У Cisco это должно быть прописано в параметрах тоннеля в том устройстве, которое тоннель терминирует. Там же определяются и адреса, к которым разрешен доступ посредством тоннеля.
RGoo Уже с Приветом Posts: 1917 Joined: Tue Jul 08, 2003 9:42 am Location: Canada
Re: Разделение трафика между VPN и локальной сеткой
Post by RGoo » Wed Jan 28, 2009 5:52 am
Разделить виды трафика (vpn от не-vpn)
Приветствую всех знающих и неравнодушных. Запросы снаружи с ip-адреса 91.227.16.11 на порт 90 перенаправляются во внутрь на 192.168.0.15 порт 8888. Там сидит локальный Аппач. Перенаправление настроено в роутере. Когда на локальной машине Windows10 192.168.0.15 запускаю VPN, то запрос к Аппачу извне уже не проходит. Нужно как-то разделить эти два вида трафика: чтобы трафик с 91.227.16.11 на локальную машину ходил без vpn, а всё остальное — через vpn. Подозреваю, нужно прописывать маршруты на локальной машине, но сам не могу сообразить, как это должно выглядеть. Не так много опыта. Помогите, пожалуйста, инструкциями.
Отслеживать
задан 11 авг в 14:22
Egelschnecke Egelschnecke
11 1 1 бронзовый знак
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Подключение перестаёт устанавливаться, потому что возникает асимметричная маршрутизация: ответный трафик с сервера до IP-адреса подключающегося начинает маршрутизироваться через VPN, с IP-адреса сервера VPN, а не адреса вашего сервера.
Пакет даже может дойти до получателя (зависит от настроек VPN-сервера), но его компьютер не может связать запрос и ответ из-за несовпадения IP-адресов.
Необходимо в Apache настроить bind к физическому (не-VPN) интерфейсу либо адресу, и убедиться, что у вас сохраняется маршрут по умолчанию через не-VPN-интерфейс, но при этом имеет метрику выше.
чтобы трафик с 91.227.16.11 на локальную машину ходил без vpn, а всё остальное — через vpn
Если имеется в виду, что указанный адрес — IP клиента, то это совсем просто — добавьте маршрут до 91.227.16.11/32 через физический интерфейс, Apache перенастраивать не потребуется.
Как настроить VPN на роутере: интернет без ограничений
![]()
Интернет, наполненный духом свободы, становится все более и более контролируемым — провайдеры блокируют все подряд на свое усмотрение, поисковые системы следят за каждым вашим шагом, да и злоумышленники не дремлют. Неудивительно, что многие задумываются о том, чтобы обойти ограничения, вернувшись во времена «свободного Интернета». И VPN — один из таких способов.
Что такое VPN и зачем он нужен
VPN (Virtual Private Network, виртуальная частная сеть) — технология, позволяющая организовать локальную сеть поверх другой сети (чаще всего интернета). Чтобы пояснить, приведем такой пример. Допустим, вы военнослужащий срочной службы и хотите написать письмо девушке. Вы не собираетесь выдавать каких-либо секретов, но вам наверняка будет неприятно, что вашу переписку будут читать военные цензоры. Поэтому вы идете к прапорщику Семенову и договариваетесь с ним, что он будет отправлять ваши письма с городского почтового ящика. Семенов предлагает также, чтобы девушка писала ответы на адрес его городской квартиры, а он будет носить эти письма вам. Таким образом, прапорщик организовал виртуальную частную почту поверх обычной почты.
![]()
VPN-сервисы делают то же самое, подменяя ваш IP-адрес адресом своего сервера, зачастую расположенного в другой стране. Трафик между вами и VPN-сервером зашифрован, поэтому никто, даже ваш провайдер, не сможет определить, на какие сайты вы ходили и что там делали. Минус такой схемы в том, что бесплатные VPN-сервисы не отличаются высокой скоростью, да и уровень предоставляемой ими конфиденциальности зачастую сомнителен. А надежные и высокоскоростные VPN-сервисы требуют хоть и небольшой, но регулярной оплаты — в среднем, 2-5 долларов в месяц. Ну, так ведь и прапорщик Семенов вряд ли будет носить чужие письма «за спасибо».
Зачем подключать роутер к VPN
Подключить компьютер к VPN несложно. Вам не нужно разбираться, «как все устроено», достаточно скачать с сайта провайдера VPN-сервиса специальную утилиту, запустить ее, ввести полученные при регистрации логин/пароль — и все. Но при этом «свободный Интернет» будет только на этом компьютере. Все остальные устройства — пусть даже и подключенные к тому же роутеру — будут по-прежнему «под колпаком». Можно, конечно, установить ту же утилиту на все остальные компьютеры, а на смартфоны — аналогичные мобильные приложения (которые тоже можно скачать с сайта провайдера сервиса). Но это слишком хлопотно, намного удобнее подключить через VPN сам роутер. Правда, тут уже потребуется немного разобраться.
![]()
Во-первых, не всякий роутер в принципе может работать VPN-клиентом. Если настроить подключение не удается, то вполне возможно, что прошивка вашего роутера просто не позволяет подключаться к VPN-серверу поверх обычного интернета. В этом случае можно воспользоваться альтернативной прошивкой для роутеров DD-wrt или Tomato, но это потребует определенных знаний и навыков.
Во-вторых, многие, способные подключаться к VPN, роутеры предлагают небольшой выбор протоколов для подключения (OpenVPN, PPTP, L2TP и т.д.), а иногда выбора нет вообще и доступный протокол только один. Если вы подсоединяетесь к определенному VPN-серверу, убедитесь, что у него найдется хотя бы один общий протокол с вашим роутером.
Как подключить роутер к VPN
Зайдите в веб-интерфейс роутера, как это описано в руководстве по эксплуатации (обычно он находится по адресу 192.168.0.1 или 192.168.1.1). Если в меню найдется раздел «VPN-клиент», воспользоваться следует именно им — ваш роутер подготовлен для работы с VPN, и никаких проблем не предвидится.
![]()
Если такого раздела нет, попробуйте создать новое WAN-подключение. Для этого надо найти пункт меню «WAN» или «Internet». Иногда этот пункт расположен в корневом меню, иногда — в разделах «Connections», «Network» или «Settings». На открывшейся странице следует создать новое подключение и выбрать необходимый протокол.
![]()
Если вариантов выбора больше одного (и VPN-сервер, и роутер имеют несколько общих протоколов), то имейте в виду, что OpenVPN считается более безопасным, но он довольно сильно нагружает процессор роутера и может снижать скорость соединения.
При выборе PPTP и L2TP вам потребуется ввести данные, полученные от VPN-сервиса при регистрации: адрес сервера, пароль и логин. Иногда также требуется ввести IP-адреса DNS-серверов. Также следует задать получение IP-адреса от сервера (Dynamic IP).
![]()
Поищите на сайте VPN-сервиса описание настроек роутеров — даже если вашей модели там нет, посмотрите какие именно параметры требуется ввести.
При выборе OpenVPN вам может потребоваться загрузить конфигурационный файл с расширением .ovpn — он содержит настройки, относящиеся к конкретному серверу. Этот файл также можно загрузить с сайта VPN-сервиса.
![]()
Сохраните настройки и дождитесь подключения к WAN (возможно, потребуется перезагрузка роутера). Если подключения не происходит, попробуйте отключить в настройках роутера IPv6, найти опцию VPN Passthrough и убедиться, что она включена или отключить NAT для клиентов.