Как выборочно маршрутизировать сетевой трафик через VPN на Mac OS X Leopard?
Я не хочу отправлять весь свой сетевой трафик в VPN, когда я подключен к сети моей компании (через VPN) из дома. Например, когда я работаю из дома, я хотел бы иметь возможность делать резервные копии всех своих файлов в Time Capsule дома и по-прежнему иметь доступ к внутренней сети компании.
Я использую встроенный VPN-клиент Leopard. Я пытался снять флажок "Отправить весь трафик через VPN-соединение". Если я сделаю это, я потеряю доступ к внутренним веб-сайтам моей компании, будь то через curl или веб-браузер (хотя внутренние IP-адреса все еще доступны). Было бы идеально, если бы я мог выборочно выбрать набор IP-адресов или доменов для маршрутизации через VPN, а остальные оставить в своей собственной сети. Это достижимо с помощью встроенного VPN-клиента Leopard? Если у вас есть какие-либо рекомендации по программному обеспечению, я бы тоже хотел их услышать.
5 ответов
Создайте файл /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) шлюз для ваших локальных сетей
В настройках сети на MacOS есть скрытая функция: вы можете сортировать интерфейсы.
Откройте Системные настройки -> Сеть -> Нажмите gear
внизу слева -> Set service Order...
Очень важно, чтобы ваши сетевые интерфейсы были отсортированы в том порядке, в котором вы хотите их использовать. Если вы хотите, чтобы ВСЕ данные, не относящиеся к локальной сети, передавались в VPN, поместите интерфейс VPN наверх. Сортировать как это
- VPN
- Ethernet
- аэропорт
Не так:
- аэропорт
- Ethernet
- VPN
Таким образом, нет необходимости проверять следующие настройки в Session Options
:
Отправить весь трафик через VPN-соединение
✅ Проверено на L2TP VPN
соединение
Я хотел сделать подобное. Подключите 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
на адрес сети, на которую вы хотите направить. Дополнительные сети могут быть добавлены путем повторения последней строки с другими адресами.
Единственное правильное решение для MacOS — использоватьnetworksetup
:
Сначала найдите имя вашей VPN-сети.
$ networksetup -listnetworkserviceorder
Далее настроим дополнительные маршруты
$ networksetup -setadditionalroutes networkservice [dest1 mask1 gate1] [dest2 mask2 gate2] ... [destN maskN gateN]
Пример:
$ networksetup -setadditionalroutes "my vpn network name" 10.100.1.0 255.255.255.0 10.100.1.1 10.100.2.0 255.255.255.0 10.100.2.1
Проверьте эти настройки:
$ networksetup -getadditionalroutes "my vpn network name"
10.100.1.0 255.255.255.0 10.100.1.1
10.100.2.0 255.255.255.0 10.100.2.1
Чтобы удалить эти настройки, просто установите их без адресов:
$ networksetup -setadditionalroutes "my vpn network name"
Я посмотрел в Интернете, чтобы узнать, смогу ли я найти что-нибудь, и, насколько я понимаю, вы, похоже, хотите иметь возможность использовать ваш компьютер как обычно, а также иметь возможность подключаться к внутренним веб-сайтам компании, так что вы можете нужно настроить пользовательскую таблицу маршрутизации.
Эта ссылка, по- видимому, относится только к 10.4, но материал командной строки все еще может работать.