Маршрутизация в Mac OS при VPN подключении
Появилась как-то задача подключатся по VPN к рабочей сети, чтобы иметь доступ к внутренним ресурсам.
Средствами Мака это можно сделать создав VPN подключение и 2 варианта:
1. поставить галочку «Слать весь трафик через VPN подключение»
2. статически прописать статически route add -net 192.168.10.0/24 192.168.44.1, где 192.168.10.0/24 — сеть в которой находятся компьютеры на работе, 192.168.44.1 VPN шлюз к которому я подключаюсб.
Итак после каждого подключения нужно делать вторую манипуляцию, так как общий доступ в интернет ограничен и скорость не ахты. Или задача состоит в том чтобы ходить на сайты (например youtube) через более быстрый канал VPN…
Итак задачу я решил следующим образом:
создал скрипт: touch /etc/ppp/ip-up
дал ему прав на исполнение: chmod +x /etc/ppp/ip-up
создал файл для логов: touch /tmp/ppp.log
Содержимое скрипта:
#!/bin/sh
VPNWORK=»192.168.44.1″; #обьявляем переменную (например по названию VPN подключения)
if [ $IPREMOTE = $VPNWORK ] #проверяем, если совпадает добавляем маршрут
then
/sbin/route -n add -net 192.168.10.0/24 $IPREMOTE > /tmp/ppp.log 2>&1
fi
Таким образом после подключения к сети добавляется маршрут, и нет необходимости добавлять его вручную, так-же при отключении от VPN он удаляется сам.
При необходимости добавлять DNS сервер можно дописать текст между then и fi:
echo «nameserver 4.2.2.1» > /etc/resolv.conf
Вместо 4.2.2.1 укажите свой основной DNS и второй записью рабочий.
Но при этом после отключения нам надо вернуть предыдущий DNS конфиг на место, для этого создаем: touch /etc/ppp/ip-down && chmod +x /etc/ppp/ip-down
Перед началом работы делаем бекап:
cp /etc/resolv.conf /etc/resolv.conf_original
и добавляем в скрипт /etc/ppp/ip-down:
#!/bin/sh
cat /etc/resolv.conf_original > /etc/resolv.conf
Собственно всё. При каждом подключении VPN прописывается маршрут, работаете сколько надо, после отключения удаляется, при этом у вас не будет загвоздок с DNS.
Источник
Как разделить VPN трафик в MacOS
Предположим, вы разработчик и часть ресурсов (например база данных) находятся в корпоративной сети, доступ в которую осуществляется через 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.
Теперь весь трафик идет через мое обычное соединение, а трафик к корпоративному серверу идет через VPN.
Для удобства в файле
/.profile создаем алиасы на команду добавления маршрутов
Теперь чтобы поднять соединение, необходимо подключиться к VPN и выполнить команду server-vpn-up.
Альтернативный вариант, это создать файл /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 и поднятии его в самый верх.
Источник
taldanzig / osxvpnrouting.markdown
Routing tips for VPNs on OS X
When VPNs Just Work™, they’re a fantastic way of allowing access to a private network from remote locations. When they don’t work it can be an experience in frustration. I’ve had situations where I can connect to a VPN from my Mac, but various networking situations cause routing conflicts. Here are a couple of cases and how I’ve been able to get around them.
Case 1: conflicting additional routes.
In this example the VPN we are connecting to has a subnet that does not conflict with our local IP, but has additional routes that conflict in some way with our local network’s routing. In my example the remote subnet is 10.0.x.0/24, my local subnet is 10.0.y.0/24, and the conflicting route is 10.0.0.0/8. Without the later route, I can’t access all hosts on the VPN without manually adding the route after connecting to the VPN:
In the above case the VPN is a PPTP VPN that uses ppp0 as the network interface. With this additional route, I can now access all the hosts I need to on the VPN. This won’t solve the case of trying to access addresses on the 10.0.y.0/24 subnet though.
Case 2: conflicting subnet between VPN and local network.
Fairly often a VPN on a private address space subnet can end up conflicting with a local subnet. For example if both the remote and local networks share the 192.168.0.0/24 subnet then our VPN connection ends up being pretty useless as all of the remote addresses will end up being routed to the local network device.
It is possible to get around this in some cases as long as the VPN IP address doesn’t conflict directly with a local IP address that you need access to. In this case we need to add a specific route for the remote IP:
In the above case I’m routing the host 192.168.0.x (replace the x with your specific address) via the tun0 device (in this case an OpenVPN connection).
Useful commands to debug routing issues.
The following command will show the existing routing table (IPv4 only):
The following command will show you how a specific host will get routed:
Источник
Как выборочно маршрутизировать сетевой трафик через VPN на Mac OS X Leopard?
Я не хочу отправлять весь свой сетевой трафик вниз к VPN, когда я подключен к сети моей компании (через VPN) из дома. Например, когда я работаю из дома, я хотел бы иметь возможность создавать резервные копии всех своих файлов в Time Capsule дома и по-прежнему иметь доступ к внутренней сети компании.
Я использую встроенный VPN-клиент Leopard. Я попытался снять флажок » отправлять весь трафик через VPN-соединение.»Если я это сделаю, я потеряю доступ к внутренним веб-сайтам моей компании это через curl или веб-браузер (хотя внутренние IP-адреса все еще доступны). Было бы идеально, если бы я мог выборочно выбрать набор IP-адресов или доменов для маршрутизации через VPN и сохранить остальные в своей сети. Достижимо ли это с помощью встроенного VPN-клиента Leopard? Если у вас есть какие-либо рекомендации программного обеспечения, я хотел бы услышать их, а также.
4 ответов
создать файл / etc/ppp / ip-up следующего содержания:
замена С подсетью вы хотите маршрутизировать через VPN (например. 192.168.0.0/16)
выполнить от имени root:
этот файл будет выполняться при каждом подключении к VPN.
- : интерфейс VPN (например, ppp0 )
- : неизвестный, был 0 в моем случае
- : IP сервера VPN
- : адрес VPN-шлюза
- : обычный (не vpn) шлюз для подключения к локальной сети
Я хотел сделать нечто подобное. Подключите VPN, а затем маршрутизируйте дополнительную сеть через эту VPN. Я закончил со следующим битом Applescript:
вам нужно изменить «Work» к имени вашего VPN соединения, 192.168.1.1 на ваш адрес шлюза и 172.16.0.0/16 в адрес сети, к которой вы хотите маршрут. Дополнительные сети можно добавить, повторив последнюю строку с разными адресами.
есть скрытая функция в настройках сети на MacOS:вы можете сортировать интерфейсов.
открыть системные настройки — > Сеть — > нажмите gear внизу слева -> Set service Order.
важно, что у вас есть сетевые интерфейсы, отсортированный в порядке, вы хотите их использовать. Если вы хотите, чтобы все данные, не относящиеся к локальной сети, интерфейс VPN наверху. Вроде такой
таким образом, нет необходимости проверять следующие настройки в Session Options :
отправить весь трафик через VPN-соединение
Источник
Настройка подключения VPN на Mac
Чтобы подключиться к сети VPN, необходимо ввести настройки конфигурации на панели «Сеть». Эти настройки включают адрес сервера VPN, имя учетной записи и другие параметры идентификации, такие как пароль или сертификат, полученные от сетевого администратора.
Если Вы получили файл настроек VPN от администратора сети, можно импортировать его для настройки подключения. Если нет, то настройки можно ввести вручную.
Импорт файла настроек VPN
На Mac выполните одно из следующих действий.
Дважды нажмите на файл, чтобы открыть настройки сети и автоматически импортировать настройки.
Выберите пункт меню «Apple»
> «Системные настройки», нажмите «Сеть», нажмите раскрывающееся меню «Действия» , затем выберите «Импортировать конфигурации». Выберите файл, затем нажмите «Импортировать».
Введите настройки VPN автоматически
На Mac выберите меню Apple
> «Системные настройки», затем нажмите «Сеть».
Нажмите кнопку «Добавить» в списке слева, нажмите всплывающее меню «Интерфейс», затем выберите «VPN».
Нажмите всплывающее меню «Тип VPN», затем выберите тип VPN-подключения, который Вы хотите настроить, в зависимости от сети, к которой Вы подключаете компьютер. Присвойте имя службе VPN, затем нажмите «Создать».
Протокол L2TP — это расширенная версия протокола PPTP, который используется интернет-провайдерами для поддержки VPN через Интернет.
Протокол IPSec (Internet Protocol Security) является набором протоколов безопасности.
IKEv2 — это протокол, который настраивает сопоставление безопасности в IPSec.
Введите адрес сервера и имя учетной записи для VPN-подключения.
Нажмите «Настройки аутентификации», затем введите информацию, полученную от администратора сети.
Если Вы получили соответствующие указания от администратора сети, нажмите «Дополнительно» и введите дополнительную информацию, такую как параметры сеанса, настройки TCP/IP, DNS-серверы и прокси.
Дополнительная информация, которую Вы можете ввести, зависит от типа настраиваемого VPN-подключения.
Нажмите «Применить», затем нажмите «ОК».
Выберите «Показывать статус VPN в строке меню», чтобы использовать значок статуса VPN для подключения к сети и переключения между службами VPN.
Для удаления конфигурации VPN выберите службу VPN в списке сетевых служб и нажмите кнопку «Удалить» .
Источник