Как разделить трафик vpn на роутере
Как правило, после подключения по VPN весь трафик перенаправляется через это соединение.
Если на компьютере, например, были загрузка данных, клиент-серверные взаимодействия или авторизация доступа, то они прекращаются. Torrent и браузеры также начинают работать только через VPN.
Чтобы этого не происходило и VPN-подключение использовалось только для доступа в корпоративную сеть, в настройках VPN необходимо снять галочку в пункте:
«Использовать основной шлюз в удаленной сети» (см. рисунок)
Привет
Разделение трафика между 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-ом. При этом мы избавимся от опасности выйти в интернет с еще не настроенного девайса и ассоциировать адрес своего провайдера с этим устройством.
Для этой цели можно просто настроить 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
- Информационная безопасность
OpenVPN разделение трафика
OpenVPN является программным приложением с открытым исходным кодом, которое реализует методы виртуальной частной сети (VPN) для создания безопасных соединений точка-точка или между сайтами в маршрутизируемых или мостовых конфигурациях и средствах удаленного доступа.
В этой статье приведено руководство по настройке клиента OpenVPN на маршрутизаторе RUTxxx таким образом, чтобы часть клиентов локальной сети маршрутизатора достигала Интернета через сервер OpenVPN (веб-прокси), а другая часть достигала Интернета через глобальную сеть маршрутизатора. (мобильное, проводное или WiFi соединение). Следует также отметить, что это руководство предназначено для более продвинутых пользователей и, следовательно, пропускает некоторые из более понятных шагов, чтобы сохранить общую согласованность статьи. Например, пошаговая конфигурация экземпляра клиента OpenVPN будет опущена, и будут предоставлены только комментарии по определенным соответствующим параметрам. Если вы чувствуете, что недостаток информации мешает вам настроить конфигурацию, мы рекомендуем вам ознакомиться с нашими примерами конфигурации OpenVPN для справки и нашим руководством по созданию сертификатов TLS.
Обзор конфигурации и предварительные условия
Прежде чем мы начнем, давайте рассмотрим конфигурацию, которую мы пытаемся достичь, и предварительные условия, которые делают это возможным.
— Один маршрутизатор RUTxxx (исключая RUT850) с активным подключением к Интернету, который будет действовать как клиент OpenVPN
— Как минимум одно конечное устройство (ПК, ноутбук) для настройки маршрутизаторов и проверки настроек
Схема конфигурации:

На рисунке выше показана схема разделения трафика OpenVPN. Маршрутизатор RUTxxx действует как клиент OpenVPN (виртуальный IP: 10.0.0.6; P-t-P: 10.0.0.5), который подключен к удаленному серверу OpenVPN. IP-адреса маршрутизаторов LAN варьируются от 192.168.1.1 до 192.168.1.254.
Когда схема реализована, устройства в диапазоне IP от 192.168.1.1 до 192.168.1.127 достигают Интернета через глобальную сеть маршрутизатора, а устройства в диапазоне IP от 192.168.1.128 до 192.168.1.254 достигают Интернета через сервер OpenVPN, эффективно «принимая» Публичный IP-адрес сервера.
Конфигурация маршрутизатора
Большая часть конфигурации маршрутизатора будет выполнена через интерфейс командной строки. Подробные инструкции по всем интерфейсам командной строки, поддерживаемым маршрутизаторами RUTxxx, можно найти здесь. Выберите тот, который доступен или наиболее предпочтителен для вас, и вы все равно сможете шаг за шагом следовать руководству независимо от того, какой метод вы выбрали, так как используемые команды останутся идентичными.
OpenVPN клиент
— Во-первых, вы должны создать экземпляр клиента OpenVPN на вашем маршрутизаторе. Вы можете сделать это либо через командную строку, либо через WebUI маршрутизатора, Сервисы → VPN → OpenVPN. Мы не будем вдаваться в подробности, потому что конфигурация клиента будет зависеть от сервера OpenVPN, к которому вы подключаетесь. Вы можете найти подробные инструкции о том, как создать и настроить экземпляр клиента OpenVPN, в нашей статье с примерами конфигурации OpenVPN, которая также содержит информацию о том, как настроить сервер OpenVPN на маршрутизаторе RUTxxx, если это то, что вы используете для этой конфигурации.
— После того, как вы настроили свой клиент OpenVPN, вам, вероятно, следует проверить работоспособность соединения OpenVPN, так как это впоследствии облегчит поиск и устранение неисправностей. Самый простой способ сделать это — войти в WebUI маршрутизатора и проверить статус OpenVPN в Status → Network → OpenVPN:

Если соединение прошло успешно, мы можем запустить конфигурацию разделения трафика. Сначала нам нужно добавить дополнительную таблицу маршрутизации. Это можно сделать, введя следующую команду:
echo "5 rt" >> /etc/iproute2/rt_tables
Это добавляет новую таблицу маршрутизации с именем rt. / etc / iproute2 / rt_tables — это файл, используемый утилитами iproute2, которые переводят понятные для пользователя имена, заданные в командной строке, в целочисленные значения, используемые ядром. Таким образом, число 5 — это просто способ для iproute2 идентифицировать таблицу.
Далее нам нужно добавить несколько записей в файл конфигурации сети / etc / config / network. Вы можете редактировать файл с помощью команды vi. Введите vi / etc / config / network и нажмите кнопку «I» на клавиатуре, чтобы начать редактирование. Добавьте следующие строки:
config interface 'vpnas' option proto 'none' option ifname 'tun_c_MyClient' config route option interface 'vpnas' option target '0.0.0.0' option netmask '0.0.0.0' option table 'rt' option gateway '10.0.0.5' config rule option in 'lan' option src '192.168.1.128/25' option lookup 'rt' option priority '10'
Когда вы закончите, нажмите кнопку «Esc» и введите :wq, чтобы сохранить изменения и выйти из редактора (Control + Z, чтобы выйти без сохранения). Значения, выделенные красным, зависят от вашей конфигурации и, скорее всего, должны быть изменены:
опция ifname ‘tun_c_MyClient’ — имя вашего интерфейса OpenVPN. Вы можете проверить это с помощью этой команды: ifconfig | grep tun. Ответ должен выглядеть примерно так:
tun_c_MyClient Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
ПРИМЕЧАНИЕ. Если ответ пуст, ваше соединение OpenVPN может быть разорвано.
опция gateway ’10 .0.0.5 ‘- ваша виртуальная удаленная конечная точка (или P-t-P). Вы можете проверить это с помощью этой команды: ifconfig tun_c_MyClient. Замените часть MyClient своим собственным именем интерфейса OpenVPN. Ответ должен выглядеть примерно так:
tun_c_MyClient Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 inet addr:10.0.0.6 P-t-P:10.0.0.5 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 RX packets:62249 errors:0 dropped:0 overruns:0 frame:0 TX packets:62698 errors:0 dropped:1 overruns:0 carrier:0 collisions:0 txqueuelen:100 RX bytes:53341014 (50.8 MiB) TX bytes:11974147 (11.4 MiB)
option src ‘192.168.1.128/25’ — устройства из этого диапазона IP будут использовать сервер OpenVPN в качестве шлюза по умолчанию в Интернет.
Далее нам нужно создать короткий пользовательский скрипт /etc/openvpn/up.sh, который бы добавил маршрут, который позволит указанному диапазону локальной сети достигать Интернет через сервер OpenVPN:
echo -e '#!/bin/ash'"\n"'ip route add default via 10.0.0.5 table rt' > /etc/openvpn/up.sh
Далее нам нужно предоставить исполняемые разрешения для вновь созданного скрипта:
chmod +x /etc/openvpn/up.sh
Наконец, нам нужно отредактировать скрипт OpenVPN роутера /etc/init.d/openvpn, чтобы он выполнял ранее созданный скрипт /etc/openvpn/up.sh каждый раз, когда устанавливается туннель OpenVPN. Введите vi /etc/init.d/openvpn и нажмите кнопку «I» на клавиатуре, чтобы начать редактирование. Прокрутите вниз, пока не найдете функцию start_instance (). Добавьте следующие строки, выделенные красным, в конце функции start_instance ():
start_instance() < local s="$1" . . . config_list_foreach "$s" "_extra" append_extended_params openvpn_add_instance "$s" "/var/etc" "openvpn-$s.conf" "/tmp/openvpn-$s.status" echo 'script-security 2' >> $OPENVPN_CONFIG echo 'up /etc/openvpn/up.sh' >> $OPENVPN_CONFIG >
Когда вы закончите, нажмите кнопку «Esc» и введите :wq, чтобы сохранить изменения и выйти из редактора (Control + Z, чтобы выйти без сохранения).
Когда вы закончите настройку, не забудьте перезапустить соответствующие сервисы. Вы можете сделать это, перезапустив весь маршрутизатор (команда перезагрузки) или просто перезапустив сеть и службы openvpn:
/etc/init.d/network restart /etc/init.d/openvpn restart
ПРИМЕЧАНИЕ. Перезапуск сетевой службы приведет к кратковременной потере соединения для передачи данных.
Тестирование настройки
Если вы выполнили шаги, представленные выше, ваша настройка должна быть завершена. Но, как и в случае с любой другой конфигурацией, всегда целесообразно проверить настройку, чтобы убедиться в ее правильной работе. Чтобы протестировать эту конкретную конфигурацию, необходимо выполнить несколько шагов:
Проверьте вновь созданную таблицу маршрутизации с помощью команды ip route show table rt (где rt — имя таблицы). Если все в порядке, ответ должен содержать эту строку (значения, выделенные красным цветом, должны быть из вашей собственной конфигурации):
default via 10.0.0.5 dev tun_c_MyClient proto static
Проверьте, было ли добавлено правильное правило IP. Вы можете сделать это с помощью правила ip. Ответ должен выглядеть примерно так (правило из нашей конфигурации выделено красным):
0: from all lookup local 10: from 192.168.1.128/25 iif br-lan lookup rt 32766: from all lookup main 32767: from all lookup default
Проверьте, подключены ли устройства с IP-адресами из разных диапазонов к Интернету через шлюз по умолчанию. Если у вас есть только одно устройство в данный момент, вы можете настроить статический IP-адрес (руководство для пользователей Linux здесь; для Windows здесь) для этого устройства в одном диапазоне, а затем в другом. Согласно нашей конфигурации, если IP-адрес устройства находится в диапазоне 192.168.1.1 — 192.168.1.127, его общедоступный IP-адрес должен соответствовать IP-адресу маршрутизатора; если IP-адрес попадает в диапазон 192.168.1.128 — 192.168.1.254, его общедоступный IP-адрес должен соответствовать IP-адресу сервера OpenVPN. Вы можете проверить публичный IP-адрес на этом сайте.
Если все вышеперечисленное в порядке, поздравляем, ваша конфигурация работает!
