Как стать автором
Обновить

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

Время на прочтение2 мин
Количество просмотров33K


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


Предположим, вы разработчик и часть ресурсов (например база данных) находятся в корпоративной сети, доступ в которую осуществляется через 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.

Альтернативный вариант, это создать файл /etc/ppp/ip-up, прописать в него [в моем случае]

#!/bin/sh
/sbin/route add 192.168.0.0/24 -interface $1


и дать права на выполнение

sudo chmod +x /etc/ppp/ip-up


После этого маршрут будет прописываться автоматически после соединения с VPN.

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

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

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

Теги:
Хабы:
Если эта публикация вас вдохновила и вы хотите поддержать автора — не стесняйтесь нажать на кнопку
Всего голосов 12: ↑5 и ↓7-2
Комментарии9

Публикации

Истории

Работа

Ближайшие события

27 августа – 7 октября
Премия digital-кейсов «Проксима»
МоскваОнлайн
28 – 29 сентября
Конференция E-CODE
МоскваОнлайн
28 сентября – 5 октября
О! Хакатон
Онлайн
30 сентября – 1 октября
Конференция фронтенд-разработчиков FrontendConf 2024
МоскваОнлайн
3 – 18 октября
Kokoc Hackathon 2024
Онлайн
7 – 8 ноября
Конференция byteoilgas_conf 2024
МоскваОнлайн