Frequently Asked Questions
Question
PPTP клиент на FreeBSD средствами встроенного ppp
Answer
Как уже упоминалось в одной из местных тем мной же любимым, mpd отличается кривизной с MTU на создаваемом интерфейсе, точнее - отсутствием "сглаживающих" разность значений MTU средств. Посему мы долго и далеко не ходим, а создаем автоподнимающийся pptp клиент посредством запуска уже предустановленного софта в FreeBSD. Для того чтобы это все дело автозапускалось правим rc.conf:
ppp_enable="YES"
ppp_mode="ddial"
ppp_profile="corbina"
ppp_nat="NO"
ну да... Я использую копипасту с живого примера настроек для корбины. Потому что именно корбина отличается кривизной создания VPN соединений, требуя от владельца никс сервера доставания языком затылка. Далее переходим в /etc/ppp и создаем там файлик ppp.conf:
# more ppp.conf
corbina:
set dial
set login
set timeout 0
set ifaddr 0 0
resolv restore
set authname yourlogin
set authkey yourpassword
set device "!/usr/local/sbin/pptp vpn.spb.corbina.net --nolaunchpppd --nobuffer"
set log Phase command
add default HISADDR
nat enable no
Про nat enable , думаю, понятно. Хотите включаете, хотите - нет. Т.е. от ппое отличается только технологической строкой запуска тп клиента с параметрами. Что касается опять же корбины, она требует спец прибабахов чтобы не пустить машину в разнос. Например под адресом vpn.spb.corbina.net кроется целая туча ип, которые приходится отдельным скриптом маршрутизировать через шлюз локалки. Проще всего выбрать один из ип с этого адреса, просто сказав ping vpn.spb.corbina.net , затем вписать вместо имени в строку ип. И забыть нафиг. Но что делать дальше? Проблема, как уже писалось, в том что корбина мухлюет с маршрутами, требуя создания кривого п-п соединения, посему мы рассматриваем вариант "автопатчения" новосозданного туннеля средствами того же встроенного ррр. В каталоге /etc/ppp создаем 2 файла, ppp.linkup :
# more ppp.linkup
corbina:
!bg /etc/ppp/linkup
и ppp.linkdown :
# more ppp.linkdown
corbina:
!bg /etc/ppp/linkdown
Надеюсь, все понятно? Один файлик (указанием какой и являются эти файлы с соотв. названиями) исполняется при поднятии линка, второй - при его пропадании. Теперь мы совершенно спокойно можем создавать 2 файлика, путь и название которых указали в файлах. Это /etc/ppp/linkdown :
# more linkdown
/sbin/route delete default
/sbin/route add default 10.116.8.1
/sbin/route delete -host 83.102.254.231
и /etc/ppp/linkup :
# more linkup
/sbin/route delete -host 83.102.254.231
/sbin/route add -host 83.102.254.231 10.116.8.1
/sbin/route delete default
/sbin/route add default 83.102.254.231
Поясню... Линкуп говорит о том что он меняет создающийся pptp маршрут до сервера впн корбины с "через интерфейс" на "через шлюз локалки", затем меняет шлюз по умолчанию с "что там у вас" на "ип адрес" впн сервера корбины. Вот теперь мы создали то убожество, которое типаадмины корбины считают VPN соединением. Ну... Флаг им во все места. Линкдаун какбе гаварит нам(с) вернуть все в исходное состояние. Шлюз возвращается на место, убивается созданный руками путь до сервера впн корбины.
Пример сей торжества над кривостью рук чужих я вывесил не зря. Это хорошо показывает возможность работы встроенного ррр клиента со скриптами.