Как разделить VPN трафик в MacOS

от автора

VPN

VPN (англ. Virtual Private Network — виртуальная частная сеть — обобщённое название технологий, позволяющих обеспечить одно или несколько сетевых соединений (логическую сеть) поверх другой сети (например, Интернет) WikiPedia

Предположим, вы разработчик и часть ресурсов (например база данных) находятся в корпоративной сети, доступ в которую осуществляется через VPN. Или вы используете один из сервисов анонимизации (например HideMe) чтобы слушать Spotify или Pandora, недоступные с российских IP адресов (или пытаетесь получить доступ к заблокированным ресурсам). Или, как и я, подвержены паранойи и взяли на DigitalOcean самый маленький сервер за 5$/месяц и настроили там свой маленький VPN сервер.

Если вы посмотрите на все доступные инструкции как настраивать VPN на Mac OS, то увидите что авторы говорят вам ставить галку «отправлять весь трафик через VPN», что приводит к тому, что (Капитан Очевидность) весь трафик идет через VPN, что в свою очередь накладывает все ограничения корпоративной сети (запрет на посещение отдельных ресурсов, закрытые порты и т.д.) или ограничения сервиса анонимизации (узкий канал, долгий ping и т.д.).

Возникает вопрос — нельзя ли через VPN пускать только определенный трафик, а весь остальной (основной) трафик пусть идет по обычному каналу без ограничений.

Делается это довольно просто.

Кратко пройдемся по настройке VPN соединения.

Нажимаем на «яблочко» в левом верхнем углу экрана и выбираем «Системные настройки».

Выбираем «Сеть»

Нажимаем на «плюсик» в списке сетевых соединений.

Выбираем «VPN»

Тип VPN (в моем случае это L2TP через IPSec)

Заполняем параметры соединения

Галку «Отправлять весь трафик через VPN» не ставим

Теперь нам надо узнать интерфейс через который идет VPN-трафик.

Запускаем ifconfig без подключенного VPN

Подключаем VPN и снова запускаем ifconfig

Видим что появился интерфейс ppp0

Теперь по умолчанию весь трафик идет по обычному соединению (не VPN).

Далее, мне нужно чтобы коннекты к моему серверу, расположенному по адресу 192.168.0.20 шли через VPN. Для этого нам нужно построить сетевой маршрут. Воспользуемся штатной unix-командой route.

sudo /sbin/route add -host 192.168.0.20 -interface ppp0 

Теперь весь трафик идет через мое обычное соединение, а трафик к корпоративному серверу идет через VPN.

Для удобства в файле ~/.profile создаем алиасы на команду добавления маршрутов

alias server-vpn-up='sudo /sbin/route add -host 192.168.0.20 -interface ppp0' 

Теперь чтобы поднять соединение, необходимо подключиться к VPN и выполнить команду server-vpn-up.

Какие могут встретиться подводные камни.

1. Может быть конфликт IP-адресов, если внутренняя и внешняя сеть используют одно адресное пространство (возможно я использую не правильный термин, поправьте в комментариях пожалуйста). Т.е. у вас и VPN и внутренняя домашняя сеть находятся в 192.168.0… В моем случае решением было перенастройка домашней сети на 10.0.1…

2. При подключении VPN автоматически ставился корпоративный DNS 192.168.0.7. И хотя весь трафик должен был идти вроде как не через VPN, все сайты переставали открываться. Решилось это добавлением Google-ового DNS 8.8.8.8 и поднятии его в самый верх.

ссылка на оригинал статьи http://habrahabr.ru/post/272461/


Комментарии

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

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