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

Комментарии 32

Автор, вы мой герой! Работаю удаленно, по VPN подключаюсь к рабочей сети. Все было хорошо, но недавно зачем-то заблокировали все исходящие SMTP соединения из локальной сети в интернет (видимо чтоб вирусы спам не слали). Чтобы отправить почту через Gmail приходилось либо отключать VPN либо пользоваться веб-интерфейсом =(

Читал на буржуйских сайтах какие то кривые решения, которые судя по отзывам работали через раз, поэтому не захотел даже с ними морочиться.
Попробую сделать по вашему рецепту, надеюсь все получиться! Кстати укажите, на какой версии Mac OS вы это все проверяли
Пробуйте, пишите вопросы — допишу к главному посту.
версия 10.6.2, но работать будем на любом макос, возможны вариации с местом размещения конфигов ppp
Все получилось, еще раз спасибо!
Несколько замечаний
> 1. поставить галочку «Слать весь трафик через VPN подключение»
галочку надо не поставить, а убрать
> создал файл для логов: touch: /tmp/ppp.log
двоеточие после touch конечно же лишнее
Пожалуйста.
По замечаниям:
1. перечитайте — это варианты как пользоватся ВПНОМ, тоесть ИЛИ слать весь трафик в подключение ИЛИ прописывать руками рауты
мое решение позволяет не слать все и не прописывать руками
2. Ошибку поправляю, спасибо.
При включенной галке «Слать весь трафик через VPN подключение» даже с вашими скриптами у меня весь трафик идет через VPN, что и не удивительно система добавляет свой маршрут по умолчанию через VPN. Так что чтоб эти манипуляции имели смысл — галку мне приходится снимать.
Да, галочку надо снимать если пользоватся скриптами ip-up…
Если галочку поставить, а в ip-up писать маршруты, которые должны _не_ идти в впн — тоже будет работать.
Логично, тут я думаю что если человек решил себе настроить то «логическое мышление» как минимум MUST HAVE -), чтобы под свою задачу подредактировать…
А где можно прочитать про такие фишки? Чтоб самому уметь подобное.
Дык, на оф сайте эпла, в гугле, провести тэсты и будете уметь… Нерешаемых задач нет-)
man man
Хороший, а главное полезный пост, спасибо!
Спасибо.
Вот он какой Mac-way…
Это скорее *nix-way. Данное решение будет работать с pptp-впнами и в линуксах, и на BSD, и в Солярисе. Будут только чуть-чуть отличаться пути.
Многие, я например по началу, не думал что с МакОс можно пытатся работать как с Юниксом -)
про /etc/ppp/ip-* конечно интересно, но по хорошему маршруты в рабочую сеть должны передаваться впн-сервером
Вот-вот, и костылей таких не будет
Так и передается, как default router, директор например юзает интернет по ВПН через работу, лично у меня дома интернет в разы шустрее…
Или наоборот — на работе выдается только на рабочие адреса маршрут, а мне как-бы и в интернет надо…
такое… это инструмент
И какие проблемы?
Если вы внутри сети, то вам VPN и не нужен. Если вы снаружи, то маршруты в частную сеть должны приходить с VPN-сервера.
НЛО прилетело и опубликовало эту надпись здесь
Верно. Только при таком подходе, в случае изменения адресации в частной сети или добавлении новых сегментов и т.п., придется переписывать/дописывать скрипты.
В любом случае, каждый использует то, что ему удобнее.
Есть третий вариант. Без прописывания руками и без посыла всего в VPN.


Вот таблица маршрутизации в результате:
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.0.1.1 UGSc 47 105 en1
default 194.125.ХХ.ХХ UGScI 0 0 ppp0
10.0.1/24 link#5 UCS 4 0 en1
[---snip---]
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 2 110337 lo0
192.168.10 ppp0 USc 2 0 ppp0
[---snip---]
194.125.ХХ.ХХ 10.0.1.1 UGHS 449 479 en1


И по строчкам:
1. Маршрут по умолчанию в интернет (айрпорт)
2. Маршрут по умолчанию в интернет (через впн)
3. Локальная сеть дома
— пропущено — 4,5. локалхост :)
6. локальная сеть на работе
— пропущено — 7. маршрут до гейта на работе

Всё что нужно — перетащить соединения в свойствах сети в нужном порядке. Это также может быть актуально когда у вас два соединения к локальной сети. Например, я работаю в основном по WiFi, но для копирования больших файлов подключаю Ethernet, он у меня выше приоритетом чем WiFi — копирование идет через него (правда текущие соединения разрываются из-за смены маршрута).
как вариант, просто у меня дома домашний макос про + ноутбук макос, + часто айфон тыкаю или модем какой-то чужей — следить за приоритетами в настройках нет времени — вот мое решение…
будет ли данный способ работать не для штатного Mac OS VPN клиента, а с Cisco VPN клиента? или нет никакой разницы?
если ppp то нет никакой разници
Смотря что вы имеете ввиду под Cisco VPN клиентом. Под виндой, к примеру, цисковский клиент заради безопасности перекрывал вообще все, кроме себя. Т.е. даже по локальной сети ни куда не пускал.
я не разбираюсь во всех тонкостях, но если проблема касаеться именно этого
2. статически прописать статически route add -net 192.168.10.0/24 192.168.44.1, где 192.168.10.0/24 — сеть в которой находятся компьютеры на работе, 192.168.44.1 VPN шлюз к которому я подключаюсб.

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

то могу подсказать, как у меня реализовано.
В script Editor-е вбиваем

set LF to ASCII character 10
set yourScr1 to «route add -net 172.16.0.0 -netmask 255.255.0.0 172.16.39.254»
set yourScr2 to «route add 192.168.96.0 -netmask 255.255.224.0 172.16.39.254»
set yourScr3 to «route add 192.168.128.0 -netmask 255.255.128.0 172.16.39.254»
set passwordStr to «YOUR_Password» as string
set sudoScr to «sudo » & yourScr1 & "; sudo " & yourScr2 & "; sudo " & yourScr3 & "; sudo -k"
do shell script «sudo -v» & " << ++" & LF & passwordStr & LF
do shell script sudoScr


в примере у меня вписано несколько маршрутов, 172.16.39.254 — шлюз.
Сохраняем как приложение и добавляем в автозагрузку.

В Тигре было попроще — я просто в автоматоре вбивал shell-скрипт (например: sudo route add -net 192.168.10.0/24 192.168.44.1 ) и добавлял в автозагрузку, а в лео такая схема у меня не срабатывала
В какую автозагрузку? при VPN-ppp подключении возможна лишь автозагрузка из /etc/ppp/peers/$NameOfConnection или скриптом /etc/ppp/ip-up
Если вы говорите про автозагрузку при включении MacOs то, не знаю как у вас работает, а у меня система ругается если я хочу прописать route add 192.168.96.0 -netmask 255.255.224.0 172.16.39.254, так как адреса 172.16.39.254, соответственно и шлюза по этому адресу и ИНТЕРФЕЙСА в системе не существует. Верней должно ругатся и во-всех Unix системах так и происходит. В макОс у меня такой раут повесился на en0 интерфейс, соответственно при VPN подключении к такому шлюзу интерфейс в таблице маршрутизации изменится? Проверить возможности нет.
Спасибо.
да, в автозагрузку системы.
в примере я описывал свою сеть и свой шлюз соответственно

для вашего случая будет примерно такое:
set LF to ASCII character 10
set yourScr1 to «route add -net 192.168.10.0/24 192.168.44.1»
set passwordStr to «YOUR_Password» as string
set sudoScr to «sudo » & yourScr1 & "; sudo -k"
do shell script «sudo -v» & " << ++" & LF & passwordStr & LF
do shell script sudoScr


аккуратнее с кавычками, хабр автоматом меняет на «»
А что делать в случае, если шлюз имеет динамически выделяемый IP-адрес?
правило будет выглядеть так:
/sbin/route -n add -net 192.168.10.0/24 -interface ppp0 > /tmp/ppp.log 2>&1
На протяжении многих лет, с каждым новым рабочим маком мне так хочется поставить вам плюс в карму! :)
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации