Как выборочно маршрутизировать сетевой трафик через VPN на Mac OS X Leopard?

96336
newtonapple

Я не хочу отправлять весь мой сетевой трафик в VPN, когда я подключен к сети моей компании (через VPN) из дома. Например, когда я работаю из дома, я хотел бы иметь возможность делать резервные копии всех своих файлов в Time Capsule дома и по-прежнему иметь доступ к внутренней сети компании.

Я использую встроенный VPN-клиент Leopard. Я пытался снять флажок «Отправить весь трафик через VPN-соединение». Если я сделаю это, я потеряю доступ к внутренним веб-сайтам моей компании, будь то через curl или веб-браузер (хотя внутренние IP-адреса все еще доступны). Было бы идеально, если бы я мог выборочно выбрать набор IP-адресов или доменов для маршрутизации через VPN, а остальные оставить в своей собственной сети. Это достижимо с помощью встроенного VPN-клиента Leopard? Если у вас есть какие-либо рекомендации по программному обеспечению, я бы тоже хотел их услышать.

88
Первое решение будет работать только на PPP VPN. Следующее решение будет работать в Cisco VPN (и других типах, не относящихся к Cisco) http://superuser.com/questions/91191/how-to-force-split-tunnel-routing-on-mac-to-a- сиг-VPN dr jimbob 10 лет назад 2

4 ответа на вопрос

77
Aleksei Balandin

Создайте файл / etc / ppp / ip-up со следующим содержимым:

#!/bin/sh /sbin/route add <SUBNET> -interface $1  

заменяя <SUBNET>подсеть, вы хотите маршрутизировать через VPN (например, 192.168.0.0/16)

выполнить от имени пользователя root:

chmod 0755 /etc/ppp/ip-up 

Этот файл будет выполняться каждый раз, когда вы подключаетесь к VPN.

Параметры, данные для скрипта:

  • $1: Интерфейс VPN (например ppp0)
  • $2Неизвестно, было 0в моем случае
  • $3: IP VPN-сервера
  • $4: Адрес VPN-шлюза
  • $5: Обычный (не vpn) шлюз для ваших локальных сетей
Кончик Алексея работал на меня. Мне только интересно, что делает первая строка (#! / Bin / sh). Разве это не закомментировано. Я спрашиваю об этом, так как я описываю это для использования в нашей компании, и чем проще, тем лучше :-) Спасибо, Эдгар Edgar Wieringa 13 лет назад 1
@EdgarWieringa: преобразовал ваш ответ в комментарий. Надеюсь, это лучше! :) studiohack 13 лет назад 1
@ Эдгар - нет. Эта первая строка особенная. http://en.wikipedia.org/wiki/Shebang_(Unix) James Moore 13 лет назад 6
Джеймс прав, но, конечно, в случае сценария оболочки это не обязательно. Если шебанга нет, ОС все равно отправит его в оболочку. :-) Benson 13 лет назад 0
На 10.7 / Lion мне повезло больше с: / sbin / route add 172.16.0.0/16 -interface $ 1 Аргументы, которые я видел при получении ip-up: $ 1 = интерфейс VPN, например, 'ppp0' $ 2 = '0' (не уверен, что это значение) $ 3 = ваш VPN IP $ 4 = IP-адрес публичного шлюза VPN $ 5 = обычный шлюз по умолчанию для Ethernet / Wi-Fi Gabe Martin-Dempesy 12 лет назад 6
Интересно ... Будет ли этот метод работать со встроенным VPN на взломанном устройстве iOS? Я всегда чувствую себя грязно, возиться с `/ etc` на моем iPad. mralexgray 11 лет назад 0
Это прекрасно работает на Льва. Я боролся с этим в течение нескольких дней. Спасибо, Алексей. Anriëtte Myburgh 11 лет назад 0
Горный лев, кажется, те же параметры, -интерфейс $ 1, а также всего $ 4 должно работать хорошо tutuDajuju 11 лет назад 0
Что произойдет, если у меня настроено два или более VPN-подключений? Как мне отличить их в `/ etc / ppp / ip-up`, чтобы я мог добавить маршруты соответственно? Будет ли передано дружественное имя VPN в качестве шестого аргумента (`ipparam`)? Kal 10 лет назад 3
Сэкономил здесь время :) Hatem Alimam 9 лет назад 0
Параметры от $ 1 до $ 5, которые немного отличаются для OS X 10.9, которая имеет $ 6, можно найти на вашей странице man pppd: `$ man -P 'less -p" / etc / ppp / ip-up "' pppd ` Pro Backup 8 лет назад 1
Работает на Yosemite как ответил, и удаляет маршруты после отключения. Ницца! Zayne S Halsall 8 лет назад 0
По какой-то причине мне пришлось снова запустить chmod, я исправил это некоторое время назад, но перестал работать. Запуск chmod исправил это снова. Anriëtte Myburgh 8 лет назад 0
`/ etc / ppp / ip-up` не вызывается в моей системе; MacOS `10.13`. Я сделал похожий скрипт, который регистрирует выполнение, у него есть владелец `root: staff` и мод` 0755`. Вызов его вручную выполняет скрипт. Мое VPN-соединение представляет собой «L2TP over IPSec», а для «Configure IPv4» установлено значение «Using PPP». Я `tail -f` логов и Подключение или отключение vpn ничего не делает с` / etc / ppp / ip-up`. GabLeRoux 7 лет назад 1
Я сделал суть с моим сценарием регистрации здесь: https://gist.github.com/GabLeRoux/c7d4c9046d9b5ec7bce822426613912a, дайте мне знать, если кто-то знает решение. По крайней мере мне удалось пропустить «Отправить весь трафик через VPN-соединение» со следующим ответом: https://superuser.com/a/121259/55267 GabLeRoux 7 лет назад 0
Это по-прежнему позволяет мне подключаться к устройствам в моей локальной сети, но больше не позволяет использовать DNS в моей локальной сети. Таким образом, я могу пропинговать 192.168.0.1, но я не могу пропинговать myfirewall. (Даже если я использую «ping myfirewall.mylan.lan» с mylan.lan в качестве поискового домена в моих настройках, и в настройках настроен 192.168.0.1 в качестве первого DNS-сервера.) Tango 5 лет назад 0
9
Martin Hilton

Я хотел сделать подобное. Подключите VPN, а затем направьте дополнительную сеть через этот VPN. Я закончил со следующим битом Applescript:

-- Connect Work VPN  tell application "System Events" tell network preferences tell current location tell service "Work" connect tell current configuration repeat until get connected = true delay 1 end repeat end tell end tell end tell end tell end tell  set gateway to "192.168.1.1"  do shell script "route add 172.16.0.0/16 " & gateway with administrator privileges 

Вам нужно изменить "Work"имя вашего VPN-подключения, 192.168.1.1адрес вашего шлюза и 172.16.0.0/16адрес сети, в которую вы хотите направить маршрут. Дополнительные сети могут быть добавлены путем повторения последней строки с другими адресами.

(Незначительное добавление для тех, кто интересуется этим IP-адресом: так же, как говорил вопросивший, 172.16.0.0/16 - это личное адресное пространство, такое же, как 10.xxx и 192.168.xx Итак, на самом деле это часть VPN, а не какой-то внешний веб-сайт или что-то еще.) Arjan 15 лет назад 1
Итак, `192.168.1.1` - это ваш маршрутизатор в VPN или маршрутизатор в локальной сети? И вам не нужно устанавливать маршрут по умолчанию обратно в вашу локальную сеть? Jack M. 14 лет назад 1
7
GabLeRoux

В настройках сети на MacOS есть скрытая функция : вы можете сортировать интерфейсы .

Откройте Системные настройки -> Сеть -> Нажмите gearвнизу слева ->Set service Order...

<code> Установить сервисный заказ ... </ code> Заказ VPN

Очень важно, чтобы ваши сетевые интерфейсы были отсортированы в том порядке, в котором вы хотите их использовать. Если вы хотите, чтобы ВСЕ данные, не относящиеся к локальной сети, передавались в VPN, поместите интерфейс VPN наверх. Сортировать как это

  1. VPN
  2. Ethernet
  3. аэропорт

Не так:

  1. аэропорт
  2. Ethernet
  3. VPN

Таким образом, нет необходимости проверять следующие настройки в Session Options:

Отправить весь трафик через VPN-соединение

✅ Проверено на L2TP VPNсоединение

Я не думаю, что это отвечает на вопрос, если OP не выполняет резервное копирование в Time Machine через Ethernet и подключение к сети компании. Аэропорт (беспроводное соединение) Josh Newman 14 лет назад 0
Я использовал трюк запуска ppp, но он не работал, пока я не переместил свое соединение vpn ниже беспроводного соединения. Это правильный ответ. Arosboro 12 лет назад 1
Это действительно будет главный ответ! Большое спасибо, было бы невозможно понять! Andre Soares 8 лет назад 0
Это работает для L2TP IPSec VPN, но НЕ работает для Cisco IPSec VPN. Cisco IPSec VPN недоступны в диалоговом окне «Установить порядок обслуживания» goofology 6 лет назад 0
1
Alexis Hirst

Я посмотрел в Интернете, чтобы узнать, смогу ли я найти что-нибудь, и, насколько я понимаю, вы, похоже, хотите иметь возможность использовать ваш компьютер как обычно, а также иметь возможность подключаться к внутренним веб-сайтам компании, так что вы можете нужно настроить пользовательскую таблицу маршрутизации.

Эта ссылка, по- видимому, применима только к 10.4, но материал командной строки все еще может работать.

Похожие вопросы