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

96

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

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

newtonapple
источник
2
Первое решение будет работать только на PPP VPN. Следующее решение будет работать на Cisco VPN (и других типов ничего конкретного Cisco) superuser.com/questions/91191/...
дг jimbob

Ответы:

84

Создайте файл / 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) шлюз для ваших локальных сетей
Алексей Баландин
источник
1
Кончик Алексея работал на меня. Мне только интересно, что делает первая строка (#! / Bin / sh). Разве это не закомментировано. Я спрашиваю об этом, так как я описываю это для использования в нашей компании, и чем проще, тем лучше :-) Спасибо, Эдгар
Эдгар Виеринга
1
@EdgarWieringa: преобразовал ваш ответ в комментарий. Надеюсь, это лучше! :)
studiohack
6
@ Эдгар - нет. Эта первая строка особенная. en.wikipedia.org/wiki/Shebang_(Unix)
Джеймс Мур
6
На 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 / wifi
Гейб Мартин-Демпси
4
Что произойдет, если у меня настроено два или более VPN-подключения? Как мне отличить их, /etc/ppp/ip-upчтобы я мог добавить маршруты соответственно? Будет ли дружественное имя VPN передано в качестве шестого аргумента ( ipparam)?
Кал
11

Я хотел сделать подобное. Подключите 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адрес сети, в которую вы хотите направить маршрут. Дополнительные сети могут быть добавлены путем повторения последней строки с другими адресами.

Мартин Хилтон
источник
1
(Незначительное добавление для тех, кто интересуется этим IP-адресом: так же, как об этом говорил вопросник, 172.16.0.0/16 является частным адресным пространством, таким же, как 10.xxx и 192.168.xx Итак, фактически это часть VPN, а не какой-то внешний веб-сайт или что-то
Арджан
1
Итак 192.168.1.1, ваш маршрутизатор в VPN или маршрутизатор в локальной сети? И вам не нужно устанавливать маршрут по умолчанию обратно в вашу локальную сеть?
Джек М.
8

В настройках сети на 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соединение

GabLeRoux
источник
Я не думаю, что это отвечает на вопрос, если OP не выполняет резервное копирование на Time Machine через Ethernet и подключение к сети компании. Аэропорт (беспроводное соединение)
Джош Ньюман,
1
Я использовал трюк запуска ppp, но он не работал, пока я не переместил свое соединение vpn ниже беспроводного соединения. Это правильный ответ.
Аросборо
Это действительно будет главный ответ! Большое спасибо, было бы невозможно понять!
Андре Соареш
1
Это работает для L2TP IPSec VPN, но НЕ работает для Cisco IPSec VPN. Cisco IPSec VPN недоступны в диалоговом окне «Установить порядок обслуживания»
goofology
1

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

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

Алексис Херст
источник