Скрипт-помощник для настройки VPN соединения Сравнение версий

Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

Следующая версия
Предыдущая версия
wiki:скрипт_vpn [2009/07/23 17:46]
создано
wiki:скрипт_vpn [2009/07/23 18:17] (текущий)
Вот теперь - создал.
Строка 4: Строка 4:
 |   ​[[http://​forum.ubuntu.ru/​index.php?​action=profile;​u=9777|peabody]] ​  ​| ​  ​Все версии ​  | |   ​[[http://​forum.ubuntu.ru/​index.php?​action=profile;​u=9777|peabody]] ​  ​| ​  ​Все версии ​  |
  
-===== Краткое описание ​=====+==== Краткое описание ====
  
 Данный скрипт позволяет значительно упростить процесс создания vpn-подключения. Данный скрипт позволяет значительно упростить процесс создания vpn-подключения.
  
-===== Использование скрипта ​===== +==== Использование скрипта ==== 
  
-1. Скачать архив со скриптом можно {{:wiki:скрипт_vpn.tar.gz|отсюда}}. Например так:​((Здесь и далее специально даны команды для консоли. Это сделано специально,​ на случай использования скрипта на системах без графического интерфейса))\\ +1. Скачать архив со скриптом можно {{:wiki:vpn_script.tar.gz|отсюда}}. Например так:​((Здесь и далее специально даны команды для консоли. Это сделано специально,​ на случай использования скрипта на системах без графического интерфейса))\\ 
-FIXME\\+<​code>​ubuntu@ubuntu:​~$ wget http://​help.ubuntu.ru/​_media/​wiki/​vpn_script.tar.gz</​code>​
 2. Распаковать архив в домашнюю папку. Например так:\\ 2. Распаковать архив в домашнюю папку. Например так:\\
-FIXME\\+<​code>​ubuntu@ubuntu:​~$ tar -xvvf vpn_script.tar.gz</​code>​
 3. Запустить на выполнение скрипт ​ vpn.sh ​ Например,​ так:\\ 3. Запустить на выполнение скрипт ​ vpn.sh ​ Например,​ так:\\
-<​code>​$ sudo bash ~/​vpn_prj/​vpn.sh</​code>​\\+<​code>​ubuntu@ubuntu:​~$ sudo bash ~/​vpn_prj/​vpn.sh</​code>​\\
  
 +==== Использование скрипта в домашних сетях различных провайдеров ====
 +
 +Многие провайдеры,​ использующие VPN, предоставляют пользователям возможность подключения к внутренним сетевым ресурсам без использования VPN. Таким образом,​ если Вы не можете получить доступ в интернет из-за того, что у Вас не настроен VPN, Вы можете обратиться к внутресетевому ресурсу,​ на котором доступен данный скрипт. Ниже приведен список провайдеров,​ на внутренних ресурсах которых расположен данный скрипт,​ а также все необходимые инструкции по настройке.
 +
 +=== Corbina Telecom ===
 +
 +Абонентам Corbina Telecom достаточно пройти по этой ссылке:​ [[http://​help.corbina.ru/​internet/​install/​linux/​|http://​help.corbina.ru/​internet/​install/​linux/​]]\\
 +
 +==== Листинг скрипта ====
 +
 +На самом деле это не один скрипт,​ а несколько. ​
 +
 +=== vpn.sh ===
 +
 +<code bash>
 +#!/bin/bash
 +
 +printf "​Выберите язык установки / Choose installation language ​ (1 - русский/​2 - English): " ​
 +read i_install
 +if [ $i_install = "​1"​ ]; then
 +bash "​$PWD"/​vpn_rus.sh
 +elif [ $i_install = "​2"​ ]; then
 +bash "​$PWD"/​vpn_eng.sh
 +fi
 +exit 0
 +</​code>​
 +
 +=== vpn_rus.sh ===
 +
 +<code bash>
 +#!/bin/bash
 +#path to ppp
 +ppp=/​etc/​ppp
 +
 +if [[ $(id) != '​uid=0'​* ]]; then
 +echo "​Только пользователь с правами root может настраивать VPN. Также вы можете воспользоваться командой '​sudo'"​
 +exit 1
 +fi
 +echo "​Вас приветствует скрипт для настройки VPN-соединений! Вам будет задано несколько вопросов,​ и если Вы корректно и точно на них ответите - то получите рабочее VPN-соединение с настроенными маршрутами! Помните - причина 99% ошибок и неудач при настройке VPN с помощью этого скрипта - это банальная невнимательность! Будьте внимательны и успехов Вам!"​
 +echo "​Итак,​ приступим!"​
 +echo "​------------------------"​
 +printf "​Введите название VPN-соединения (например,​ corbina или vpn_corbina):​ "
 +read i_vpn_name
 +echo "​------------------------"​
 +echo "​Выберите пожалуйста,​ своего провайдера:"​
 +echo " ​  1. Корбина-Телеком"​
 +echo " ​  2. Билайн"​
 +echo " ​  3. Другой"​
 +printf "​Ваш провайдер?​ (1/2/3)? " ​
 +read provider
 +if [ $provider = "​1"​ ]; then
 +prov="​Корбина-Телеком"​
 +vpn_address="​vpn.corbina.net"​
 +elif [ $provider = "​2"​ ]; then
 +prov="​Билайн"​
 +vpn_address="​vpn.internet.beeline.ru"​
 +elif [ $provider = "​3"​ ]; then
 +prov="​Другой"​
 +echo "​ВНИМАНИЕ! Вы должны отредактировать файл '​route'​ (он скачивается,​ как правило,​ в домашнюю папку, либо лежит в папке vpn_prj, если вы распаковывали архив со скачанным скриптом) т.к. он настроен для работы в Корбине и Билайн. Маршруты для вашего провайдера уточняйте в службе поддержки. Остановите скрипт командой Ctrl+C для завершения скрипта,​ отредактируйте файл '​route'​ и запустите скрипт заново из вашей домашней директории."​
 +echo "​------------------------"​
 +printf "​Введите свой адрес VPN: "
 +read vpn_address
 +else
 +echo "Вы ввели неправильный вариант ответа. Пожалуйста,​ запустите скрипт заново."​
 +exit 1
 +fi
 +
 +if [ $provider = "​3"​ ]; then
 +region="​3"​
 +routes="​route"​
 +else
 +echo "​------------------------"​
 +echo "​Выберите пожалуйста,​ ваш регион:"​
 +echo " ​  1. Москва и МО"
 +echo " ​  2. Санкт-Петербург и ЛО"
 +echo " ​  3. Другой"​
 +printf "​Ваш регион?​ (1/2/3)? "
 +read region
 +if [ $region = "​1"​ ]; then
 +region_name="​Москва и МО"
 +routes="​route.msk"​
 +elif [ $region = "​2"​ ]; then
 +region_name="​Санкт-Петербург и ЛО"
 +routes="​route.piter"​
 +elif [ $region = "​3"​ ]; then
 +region_name="​Другой"​
 +routes="​route"​
 +else
 +echo "Вы ввели неправильный вариант ответа. Пожалуйста,​ запустите скрипт заново."​
 +exit 1
 +fi
 +fi
 +
 +echo "​------------------------"​
 +printf "​Введите ваш логин для доступа в интернет:​ "
 +read i_login
 +echo "​------------------------"​
 +printf "​Введите ваш пароль для доступа в интернет:​ "
 +read i_password
 +
 +echo "​------------------------"​
 +echo "​Автоматически определяется адрес вашего шлюза..." ​
 +i_gw=$(route|grep default|awk '​{print $2}')
 +echo "​Определено!"​
 +echo "IP вашего районного шлюза: $i_gw"
 +if [ $provider = "​3"​ ]; then
 +printf "​Районный шлюз определён правильно:​ (y/n) ? "
 +read i_yn
 +if [ $i_yn = "​n"​ ]; then
 +printf "​Введите IP-адрес вашего шлюза: "
 +read i_gw
 +fi
 +else
 +if [[ $i_gw != '​10.'​* ]]; then
 +echo "К сожалению,​ IP-адрес шлюза определился неправильно. Он должен иметь вид 10.x.x.x, поэтому Вам нужно ввести его вручную."​
 +printf "​Введите IP-адрес вашего шлюза: "
 +read i_gw
 +fi
 +fi
 +if [ $region = "​2"​ ]; then
 +routing="​Преднастроенные маршруты в файле '​route',​ т.к. в Санкт-Петербург и ЛО нет поддержки DHCP-маршрутов"​
 +i_dhcp="​n"​
 +else
 +echo "​------------------------"​
 +echo "​Теперь вы должны выбрать метод получения маршрутов. Вы можете выбрать автополучение маршрутов по DHCP или предустановленный набор в файле '​route'"​
 +echo "​------------------------"​
 +printf "Вы хотите получать маршруты через DHCP? ([y]/n)? " ​
 +read i_dhcp
 +if [ $i_dhcp = "​y"​ ]; then
 +routing="​Получение через DHCP"
 +elif [ $i_dhcp = "​n"​ ]; then
 +routing="​Преднастроенные маршруты в файле '​route'"​
 +if [ $provider = "​3"​ ]; then
 +echo "​ВНИМАНИЕ! Вы должны отредактировать файл '​route'​ (он скачивается,​ как правило,​ в домашнюю папку, либо лежит в папке vpn_prj, если вы распаковывали архив со скачанным скриптом) т.к. он настроен для работы в Корбине и Билайн. Маршруты для вашего провайдера уточняйте в службе поддержки. Остановите скрипт командой Ctrl+C для завершения скрипта,​ отредактируйте файл '​route'​ и запустите скрипт заново из вашей домашней директории."​
 +fi
 +else
 +echo "Вы ввели неправильный вариант ответа. Пожалуйста,​ запустите скрипт заново."​
 +exit 1
 +fi
 +fi
 +echo "​------------------------"​
 +printf "​Хотите автоматически установить пакет pptp-linux? Отвечайте '​n'​ если он уже установлен в системе,​ или у вас устаревший дистрибутив (Debian Etch, Xandros, установленный на Eee PC и т.п.) (y/n): " ​
 +read i_install
 +if [ $i_install = "​y"​ ]; then
 +pptp_linux="​Да"​
 +else
 +pptp_linux="​Нет"​
 +fi
 +echo "​------------------------"​
 +echo "​Проверка введённых данных:"​
 +echo "​ Имя соединения:​ $i_vpn_name"​
 +echo "​ Провайдер:​ $prov"
 +if [[ $provider != "​3"​ ]]; then
 +echo "​ Регион:​ $region_name"​
 +fi
 +echo "​ Логин:​ $i_login"​
 +echo "​ Пароль:​ $i_password"​
 +echo "​ Адрес VPN-сервера:​ $vpn_address"​
 +echo "​ Шлюз:​ $i_gw"
 +echo "​ Настройка маршрутов:​ $routing"​
 +echo "​ Установка пакета pptp-linux: $pptp_linux"​
 +printf "​Вся информация верна? (y/n)? "
 +read i_correct
 +if [ $i_correct = "​n"​ ]; then
 +echo "​------------------------"​
 +echo "​Уточните данные и запустите скрипт заново."​
 +exit 1
 +fi
 +
 +if [ $i_install = "​y"​ ]; then
 +echo "​Определяется тип вашей системы..."​
 +bit=$(uname -m)
 +echo "​Тип вашей системы определён как: $bit"
 +echo "​Устанавливается $bit версия pptp-linux..."​
 +if [ $bit = "​i686"​ ]; then
 +dpkg -i "​$PWD"/​pptp-linux_1.7.0-2ubuntu2_i386.deb
 +elif [ $bit = "​x86_64"​ ]; then
 +dpkg -i "​$PWD"/​pptp-linux_1.7.0-2ubuntu2_amd64.deb
 +fi
 +fi
 +
 +if [ $i_dhcp = "​y"​ ]; then
 +cp "​$PWD"/​rfc3442-classless-static-routes /​etc/​dhcp3/​dhclient-exit-hooks.d/​rfc3442-classless-static-routes
 +mv /​etc/​dhcp3/​dhclient.conf /​etc/​dhcp3/​dhclient.conf_bak
 +cp "​$PWD"/​dhclient.conf /​etc/​dhcp3/​dhclient.conf
 +echo "​------------------------"​
 +echo "​Автонастройка маршрутов через DHCP установлена."​
 +fi
 +echo "​------------------------"​
 +echo "​Создаются VPN-параметры..."​
 +
 +
 +echo "​${i_login} PPTP ${i_password} *" > $ppp/​chap-secrets
 +
 +
 +cp "​$PWD"/​ip $ppp/ip-up > /dev/null
 +printf "​${ppp}/​ip-up.d/​\$6 \$1 \$2 \$3 \$4 \$5 \$6" >> $ppp/ip-up
 +chmod a+x $ppp/ip-up
 +
 +cp "​$PWD"/​ip $ppp/​ip-down > /dev/null
 +printf "​${ppp}/​ip-down.d/​\$6 \$1 \$2 \$3 \$4 \$5 \$6" >> $ppp/​ip-down
 +chmod a+x $ppp/​ip-down
 +
 +cp "​$PWD"/​$routes $ppp/​ip-up.d/​$i_vpn_name
 +
 +printf "route del \$4 dev \$1\n" >> $ppp/​ip-up.d/​$i_vpn_name
 +printf "route add -host \$4 gw ${i_gw}\n"​ >> $ppp/​ip-up.d/​$i_vpn_name
 +printf "​do_route add ${i_gw} \n" >> $ppp/​ip-up.d/​$i_vpn_name
 +printf "route del default \n"   >> $ppp/​ip-up.d/​$i_vpn_name
 +printf "route add default dev \$1 \n" >> $ppp/​ip-up.d/​$i_vpn_name
 +
 +chmod a+x $ppp/​ip-up.d/​$i_vpn_name
 +
 +cp "​$PWD"/​$routes $ppp/​ip-down.d/​$i_vpn_name
 +printf "​do_route del ${i_gw} \n"​ >>​ $ppp/​ip-down.d/​$i_vpn_name
 +printf "route del default \n" >> $ppp/​ip-down.d/​$i_vpn_name
 +printf "route add default gw ${i_gw}\n"​ >> $ppp/​ip-down.d/​$i_vpn_name
 +chmod a+x $ppp/​ip-down.d/​$i_vpn_name
 +
 +printf "​nodeflate\nnobsdcomp\nnoauth\n"​ > $ppp/​options.$i_vpn_name
 +
 +printf "pty \"pptp $vpn_address --nolaunchpppd --nobuffer --loglevel 0\"​\n"​ > $ppp/​peers/​$i_vpn_name
 +printf "​connect /​bin/​true\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "name ${i_login}\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "​remotename PPTP\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "file ${ppp}/​options.$i_vpn_name\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "​ipparam $i_vpn_name\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "​persist\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "​maxfail 0\n" >> $ppp/​peers/​$i_vpn_name
 +printf "​lcp-echo-interval 30\n" >> $ppp/​peers/​$i_vpn_name
 +printf "​lcp-echo-failure 4\n" >> $ppp/​peers/​$i_vpn_name
 +printf "mtu 1460\n"​ >> $ppp/​peers/​$i_vpn_name
 +echo "​------------------------"​
 +echo "​Оптимизация настроек соединения выполнена!"​
 +echo "​------------------------"​
 +echo "​Автоматическое восстановление соединения после разрыва настроено!"​
 +echo "​------------------------"​
 +echo "​Настройка параметров успешно завершена!"​
 +echo "​------------------------"​
 +echo "​Перезагрузка сетевых служб..."​
 +/​etc/​init.d/​networking restart
 +echo "​Выполнено!"​
 +echo "​------------------------"​
 +printf "Вы хотите создать VPN-соединение с интернетом сейчас?​ ([y]/n)? " ​
 +read i_vpnstart
 +if [ $i_vpnstart = "​y"​ ]; then
 +echo "​------------------------"​
 +echo "​Запускается VPN-соединение..."​
 +pon $i_vpn_name
 +echo "​VPN-соединение запущено. Если всё сделано правильно и на счёте есть деньги то Вы в интернете:​)"​
 +echo "​------------------------"​
 +echo "​Чтобы подключиться к интернету,​ напечатайте в консоли:​ sudo pon $i_vpn_name" ​
 +echo "​Чтобы разорвать соединение,​ напечатайте в консоли:​ sudo poff"
 +echo "​------------------------"​
 +echo "Не забудьте сказать спасибо на форуме) По всем вопросам об этом скрипте - http://​homenet.corbina.net/​index.php?​showtopic=199266"​
 +else
 +echo "​------------------------"​
 +echo "​Чтобы подключиться к интернету,​ напечатайте в консоли:​ sudo pon $i_vpn_name" ​
 +echo "​Чтобы разорвать соединение,​ напечатайте в консоли:​ sudo poff"
 +echo "​------------------------"​
 +echo "Не забудьте сказать спасибо на форуме) По всем вопросам об этом скрипте - http://​homenet.corbina.net/​index.php?​showtopic=199266"​
 +fi
 +exit 0
 +</​code>​
 +
 +=== vpn_eng.sh ===
 +
 +<code bash>
 +#!/bin/bash
 +#path to ppp
 +ppp=/​etc/​ppp
 +
 +if [[ $(id) != '​uid=0'​* ]]; then
 +echo "Only root can set up VPN connections. Also you can use '​sudo'​."​
 +exit 1
 +fi
 +echo "​Welcome to VPN connection setup wizard! You'll be asked a few questions, and if you answer right - you'll get a working VPN connection with correct routing. Remember that 99% mistakes during VPN connection setup using this script is banal inattention. Be attentive and have luck!"
 +echo "So, let's begin!"​
 +echo "​------------------------"​
 +printf "Enter your VPN connection name (e.g. corbina or vpn_corbina):​ "
 +read i_vpn_name
 +echo "​------------------------"​
 +echo "​Please choose your provider:"​
 +echo " ​  1. Corbina Telecom"​
 +echo " ​  2. Beeline"​
 +echo " ​  3. Other"
 +printf "Your provider is ...? (1/2/3)? " ​
 +read provider
 +if [ $provider = "​1"​ ]; then
 +prov="​Corbina Telecom"​
 +vpn_address="​vpn.corbina.net"​
 +elif [ $provider = "​2"​ ]; then
 +prov="​Beeline"​
 +vpn_address="​vpn.internet.beeline.ru"​
 +elif [ $provider = "​3"​ ]; then
 +prov="​Other"​
 +echo "​WARNING! You have to edit '​route'​ file attached to this script manually as it's configured to work with Corbina and Beeline only. Check your routing settings at your provider'​s technical support. Stop this script with Ctrl+C, edit '​route'​ file and then restart script."​
 +echo "​------------------------"​
 +printf "Enter your VPN address: "
 +read vpn_address
 +else
 +echo "​You'​ve entered wrong answer. Please restart this script."​
 +exit 1
 +fi
 +
 +if [ $provider = "​3"​ ]; then
 +region="​3"​
 +routes="​route"​
 +else
 +echo "​------------------------"​
 +echo "​Please choose your region:"​
 +echo " ​  1. Moscow region"​
 +echo " ​  2. St.Petersburg region"​
 +echo " ​  3. other"
 +printf "Your region is ...? (1/2/3)? "
 +read region
 +if [ $region = "​1"​ ]; then
 +region_name="​Moscow region"​
 +routes="​route.msk"​
 +elif [ $region = "​2"​ ]; then
 +region_name="​St.Petersburg region"​
 +routes="​route.piter"​
 +elif [ $region = "​3"​ ]; then
 +region_name="​other"​
 +routes="​route"​
 +else
 +echo "​You'​ve entered wrong answer. Please restart this script."​
 +exit 1
 +fi
 +fi
 +
 +echo "​------------------------"​
 +printf "Enter your internet login: "
 +read i_login
 +echo "​------------------------"​
 +printf "Enter your internet password: "
 +read i_password
 +
 +echo "​------------------------"​
 +echo "​Trying to detect your gateway IP automatically..." ​
 +i_gw=$(route|grep default|awk '​{print $2}')
 +echo "​Detected!"​
 +echo "Your local gateway IP is $i_gw"
 +if [ $provider = "​3"​ ]; then
 +printf "Is this correct? (y/n)"
 +read i_yn
 +if [ $i_yn = "​n"​ ]; then
 +printf "Enter your gateway IP: "
 +read i_gw
 +fi
 +else
 +if [[ $i_gw != '​10.'​* ]]; then
 +echo "​Unfortunately,​ the gateway IP wasn't detected correctly. It must look like 10.x.x.x, so you have to enter it manually."​
 +printf "Enter your gateway IP: "
 +read i_gw
 +fi
 +fi
 +if [ $region = "​2"​ ]; then
 +routing="​Pre-set routes are in '​route'​ file as St.Petersburg and it's region doesn'​t have DHCP-routing support."​
 +i_dhcp="​n"​
 +else
 +echo "​------------------------"​
 +echo "Now you have to choose routing setup method. You can choose DHCP routing or pre-set routes in '​route'​ file."
 +echo "​------------------------"​
 +printf "Do you want to get routes via DHCP? ([y]/n)? " ​
 +read i_dhcp
 +if [ $i_dhcp = "​y"​ ]; then
 +routing="​via DHCP"
 +elif [ $i_dhcp = "​n"​ ]; then
 +routing="​pre-set in '​route'​ file"
 +if [ $provider = "​3"​ ]; then
 +echo "​WARNING! You have to edit '​route'​ file attached to this script manually as it's configured to work with Corbina and Beeline only. Check your routing settings at your provider'​s technical support. Stop this script with Ctrl+C, edit '​route'​ file and then restart script."​
 +fi
 +else
 +echo "​You'​ve entered wrong answer. Please restart this script."​
 +exit 1
 +fi
 +fi
 +echo "​------------------------"​
 +printf "Do you want to automatically install pptp-linux package? Answer '​n'​ if it's already installed or you have old distro (Debian Etch, Xandros on Eee PC etc.) (y/n): " ​
 +read i_install
 +if [ $i_install = "​y"​ ]; then
 +pptp_linux="​Yes"​
 +else
 +pptp_linux="​No"​
 +fi
 +echo "​------------------------"​
 +echo "​Checking gathered information :"
 +echo "​ Connection name: $i_vpn_name"​
 +echo "​ Provider:​ $prov"
 +if [[ $provider != "​3"​ ]]; then
 +echo "​ Region:​ $region_name"​
 +fi
 +echo "​ Login:​ $i_login"​
 +echo "​ Password:​ $i_password"​
 +echo " VPN address: $vpn_address"​
 +echo "​ Gateway:​ $i_gw"
 +echo "​ Routing setup: $routing"​
 +echo "​ pptp-linux package setup: $pptp_linux"​
 +printf "Is this correct? (y/n)? "
 +read i_correct
 +if [ $i_correct = "​n"​ ]; then
 +echo "​------------------------"​
 +echo "Check the information and restart this script."​
 +exit 1
 +fi
 +
 +if [ $i_install = "​y"​ ]; then
 +echo "​Detecting your system type..."​
 +bit=$(uname -m)
 +echo "Your system is detected as: $bit"
 +echo "​Installing $bit version of pptp-linux..."​
 +if [ $bit = "​i686"​ ]; then
 +dpkg -i "​$PWD"/​pptp-linux_1.7.0-2ubuntu2_i386.deb
 +elif [ $bit = "​x86_64"​ ]; then
 +dpkg -i "​$PWD"/​pptp-linux_1.7.0-2ubuntu2_amd64.deb
 +fi
 +fi
 +
 +if [ $i_dhcp = "​y"​ ]; then
 +cp "​$PWD"/​rfc3442-classless-static-routes /​etc/​dhcp3/​dhclient-exit-hooks.d/​rfc3442-classless-static-routes
 +mv /​etc/​dhcp3/​dhclient.conf /​etc/​dhcp3/​dhclient.conf_bak
 +cp "​$PWD"/​dhclient.conf /​etc/​dhcp3/​dhclient.conf
 +echo "​------------------------"​
 +echo "​Routing auto-setup via DHCP installed."​
 +fi
 +echo "​------------------------"​
 +echo "​Writing parameters for VPN connection..."​
 +
 +
 +echo "​${i_login} PPTP ${i_password} *" > $ppp/​chap-secrets
 +
 +
 +cp "​$PWD"/​ip $ppp/ip-up > /dev/null
 +printf "​${ppp}/​ip-up.d/​\$6 \$1 \$2 \$3 \$4 \$5 \$6" >> $ppp/ip-up
 +chmod a+x $ppp/ip-up
 +
 +cp "​$PWD"/​ip $ppp/​ip-down > /dev/null
 +printf "​${ppp}/​ip-down.d/​\$6 \$1 \$2 \$3 \$4 \$5 \$6" >> $ppp/​ip-down
 +chmod a+x $ppp/​ip-down
 +
 +cp "​$PWD"/​$routes $ppp/​ip-up.d/​$i_vpn_name
 +
 +printf "route del \$4 dev \$1\n" >> $ppp/​ip-up.d/​$i_vpn_name
 +printf "route add -host \$4 gw ${i_gw}\n"​ >> $ppp/​ip-up.d/​$i_vpn_name
 +printf "​do_route add ${i_gw} \n" >> $ppp/​ip-up.d/​$i_vpn_name
 +printf "route del default \n"   >> $ppp/​ip-up.d/​$i_vpn_name
 +printf "route add default dev \$1 \n" >> $ppp/​ip-up.d/​$i_vpn_name
 +
 +chmod a+x $ppp/​ip-up.d/​$i_vpn_name
 +
 +cp "​$PWD"/​$routes $ppp/​ip-down.d/​$i_vpn_name
 +printf "​do_route del ${i_gw} \n"​ >>​ $ppp/​ip-down.d/​$i_vpn_name
 +printf "route del default \n" >> $ppp/​ip-down.d/​$i_vpn_name
 +printf "route add default gw ${i_gw}\n"​ >> $ppp/​ip-down.d/​$i_vpn_name
 +chmod a+x $ppp/​ip-down.d/​$i_vpn_name
 +
 +printf "​nodeflate\nnobsdcomp\nnoauth\n"​ > $ppp/​options.$i_vpn_name
 +
 +printf "pty \"pptp $vpn_address --nolaunchpppd --nobuffer --loglevel 0\"​\n"​ > $ppp/​peers/​$i_vpn_name
 +printf "​connect /​bin/​true\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "name ${i_login}\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "​remotename PPTP\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "file ${ppp}/​options.$i_vpn_name\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "​ipparam $i_vpn_name\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "​persist\n"​ >> $ppp/​peers/​$i_vpn_name
 +printf "​maxfail 0\n" >> $ppp/​peers/​$i_vpn_name
 +printf "​lcp-echo-interval 30\n" >> $ppp/​peers/​$i_vpn_name
 +printf "​lcp-echo-failure 4\n" >> $ppp/​peers/​$i_vpn_name
 +printf "mtu 1460\n"​ >> $ppp/​peers/​$i_vpn_name
 +echo "​------------------------"​
 +echo "​Settings optimization is done!"
 +echo "​------------------------"​
 +echo "Auto reconnect is set up!"
 +echo "​------------------------"​
 +echo "​Parameters setup succeeded!"​
 +echo "​------------------------"​
 +echo "​Restartint network services..."​
 +/​etc/​init.d/​networking restart
 +echo "​Done!"​
 +echo "​------------------------"​
 +printf "Do you want to establish your VPN connection now? ([y]/n)? " ​
 +read i_vpnstart
 +if [ $i_vpnstart = "​y"​ ]; then
 +echo "​------------------------"​
 +echo "​Starting VPN connection..."​
 +pon $i_vpn_name
 +echo "VPN connection is set up and running. If it's all OK and you pay your internet bills then you're already using Internet :)"
 +echo "​------------------------"​
 +echo "To connect, type: sudo pon $i_vpn_name" ​
 +echo "To disconnect: sudo poff"
 +echo "​------------------------"​
 +echo "​Don'​t forget to thank us at forum) All questions about this script - http://​homenet.corbina.net/​index.php?​showtopic=199266"​
 +else
 +echo "​------------------------"​
 +echo "To connect, type: sudo pon $i_vpn_name" ​
 +echo "To disconnect: sudo poff"
 +echo "​------------------------"​
 +echo " Don't forget to thank us at forum) All questions about this script - http://​homenet.corbina.net/​index.php?​showtopic=199266"​
 +fi
 +exit 0
 +</​code>​
 +
 +=== route.piter ===
 +
 +<code bash>
 +#!/bin/bash
 +
 +#PATH
 +PATH=/​usr/​local/​sbin:/​usr/​sbin:/​sbin:/​usr/​local/​bin:/​usr/​bin:/​bin
 +export PATH
 +
 +do_route ()
 +{
 + act=$1
 + gw=$2
 +#!!Все нижеперечисленные маршруты указаны только для Корбина-Телеком и Билайн!!
 +#​-------Общие маршруты для всех регионов--------------:​
 +#​Локальная сеть:
 +   route $act -net 10.0.0.0 netmask 255.0.0.0 gw $gw
 +#​corbina.ru,​ help.corbina.ru,​ home.corbina.ru
 +   route $act -host 89.179.135.67 gw $gw
 +#Форум homenet.corbina.net
 +   route $act -host 85.21.72.83 gw $gw
 +#​ftp.corbina.net
 +   route $act -host 195.14.50.21 gw $gw
 +#​SIP-сервер
 +   route $act -host 195.14.50.93 gw $gw
 +#​Игровые сервера
 +   route $act -host 85.21.37.16 netmask 255.255.240.0 gw $gw
 +#​Сервер статистики
 +   route $act -host 195.14.50.26 gw $gw
 +#​Сервер точного времени (NTP)
 +   route $act -host 195.14.40.141 gw $gw
 +#Corbina TV Москва+Питер
 +   route $act -host 85.21.138.208 netmask 255.255.255.240 gw $gw
 +   route $act -host 85.21.52.254 gw $gw
 +   route $act -host 85.21.88.130 gw $gw
 +   route $act -host 83.102.146.96 netmask 255.255.240.224 gw $gw
 +   route $act -net 78.107.23.0 netmask 255.255.255.0 gw $gw
 +#Corbina TV Питер
 +   route $act -host 83.102.255.128 netmask 255.255.255.240 gw $gw
 +}
 +</​code>​
 +
 +=== route.msk ===
 +
 +<code bash>
 +#!/bin/bash
 +
 +#PATH
 +PATH=/​usr/​local/​sbin:/​usr/​sbin:/​sbin:/​usr/​local/​bin:/​usr/​bin:/​bin
 +export PATH
 +iptv=(ifconfig eth0 | grep "inet addr" | sed "​s#​^\s*inet addr:##"​ | awk '​IFS="​ " {print $1;}')
 +do_route ()
 +{
 + act=$1
 + gw=$2
 +#!!Все нижеперечисленные маршруты указаны только для Корбина-Телеком и Билайн!!
 +#​-------Общие маршруты для всех регионов--------------:​
 +#​Локальная сеть:
 +   route $act -net 10.0.0.0 netmask 255.0.0.0 gw $gw
 +#​corbina.ru,​ help.corbina.ru,​ home.corbina.ru
 +   route $act -host 89.179.135.67 gw $gw
 +#Форум homenet.corbina.net
 +   route $act -host 85.21.72.83 gw $gw
 +#​ftp.corbina.net
 +   route $act -host 195.14.50.21 gw $gw
 +#​SIP-сервер
 +   route $act -host 195.14.50.93 gw $gw
 +#​Игровые сервера
 +   route $act -host 85.21.37.16 netmask 255.255.240.0 gw $gw
 +#​Сервер статистики
 +   route $act -host 195.14.50.26 gw $gw
 +#​Сервер точного времени (NTP)
 +   route $act -host 195.14.40.141 gw $gw
 +#​------------Москва--------------:​
 +#​Москва - Локальные ресурсы
 +   route $act -net 85.21.79.0 netmask 255.255.255.0 gw $gw
 +   route $act -net 85.21.90.0 netmask 255.255.255.0 gw $gw
 +#​Москва - Почтовый сервер
 +   route $act -host 195.14.50.16 gw $gw
 +#​Москва - Игровые сервера
 +   route $act -host 83.102.231.32 netmask 255.255.255.240 gw $gw
 +   route $act -host 85.21.108.16 netmask 255.255.255.240 gw $gw
 +#Corbina TV Москва+Питер
 +   route $act -host 85.21.138.208 netmask 255.255.255.240 gw $gw
 +   route $act -host 85.21.52.254 gw $gw
 +   route $act -host 85.21.88.130 gw $gw
 +   route $act -host 83.102.146.96 netmask 255.255.240.224 gw $gw
 +   route $act -net 78.107.23.0 netmask 255.255.255.0 gw $gw
 +#IP-TV через VLC
 +   route $act -net 233.32.240.0 netmask 255.255.255.0 gw $iptv
 +}
 +</​code>​
 +
 +=== route ===
 +
 +<code bash>
 +#!/bin/bash
 +
 +#PATH
 +PATH=/​usr/​local/​sbin:/​usr/​sbin:/​sbin:/​usr/​local/​bin:/​usr/​bin:/​bin
 +export PATH
 +
 +do_route ()
 +{
 + act=$1
 + gw=$2
 +#!!Все нижеперечисленные маршруты указаны только для Корбина-Телеком и Билайн!!
 +#​-------Общие маршруты для всех регионов--------------:​
 +#​Локальная сеть:
 +   route $act -net 10.0.0.0 netmask 255.0.0.0 gw $gw
 +#​corbina.ru,​ help.corbina.ru,​ home.corbina.ru
 +   route $act -host 89.179.135.67 gw $gw
 +#Форум homenet.corbina.net
 +   route $act -host 85.21.72.83 gw $gw
 +#​ftp.corbina.net
 +   route $act -host 195.14.50.21 gw $gw
 +#​SIP-сервер
 +   route $act -host 195.14.50.93 gw $gw
 +#​Игровые сервера
 +   route $act -host 85.21.37.16 netmask 255.255.240.0 gw $gw
 +#​Сервер статистики
 +   route $act -host 195.14.50.26 gw $gw
 +#​Сервер точного времени (NTP)
 +   route $act -host 195.14.40.141 gw $gw
 +}
 +</​code>​
 +
 +=== rfc3442-classless-static-routes ===
 +
 +<code bash>
 +RUN="​yes"​
 +
 +
 +if [ "​$RUN"​ = "​yes"​ ]; then
 +
 +         if [ x"​$new_rfc3442_classless_static_routes"​ != x""​ ]; then
 +
 +                 if [ x"​$reason"​ == x"​BOUND"​ ]; then
 +                         ​rfc_routes=($new_rfc3442_classless_static_routes)
 +
 +                         for(( i=0; i < ${#​rfc_routes[@]};​ )); do
 +                                 ​net_length=${rfc_routes[$i]}
 +
 +                                 ​((i++))
 +
 +                                 ​net_address=(0 0 0 0)
 +                                 for(( j=0; j < $[$net_length / 8 + \
 +                                     ​($net_length % 8 ? 1 : 0)]; j++, i++)); do
 +
 +                                         ​net_address[$j]=${rfc_routes[$i]}
 +                                 done
 +
 +                                 ​gateway=(0 0 0 0)
 +                                 for (( j=0; j < 4; j++, i++ )); do
 +                                         ​gateway[$j]=${rfc_routes[$i]}
 +                                 done
 +
 +                                 ​old_IFS="​$IFS"​
 +                                 ​IFS='​.'​
 +
 +                                 if [ x"​$net_length"​ == x"​32"​ ]; then
 +                                         /​sbin/​route add -host "​${net_address[*]}"​ gw "​${gateway[*]}"​
 +                                 else
 +                                         /​sbin/​route add -net "​${net_address[*]}/​$net_length"​ gw "​${gateway[*]}"​
 +                                 fi
 +                                 ​IFS="​$old_IFS"​
 +
 +                         done
 +
 +                 fi
 +         fi
 +fi 
 +</​code>​
 +
 +=== ip ===
 +
 +<code bash>
 +#!/bin/bash
 +
 +#PATH
 +PATH=/​usr/​local/​sbin:/​usr/​sbin:/​sbin:/​usr/​local/​bin:/​usr/​bin:/​bin
 +export PATH
 +
 +#IP-*
 +</​code>​
 +
 +=== dhclient.conf ===
 +
 +<code bash>
 +# Configuration file for /​sbin/​dhclient,​ which is included in Debian'​s
 +#​ dhcp3-client package.
 +#
 +# This is a sample configuration file for dhclient. See dhclient.conf'​s
 +# man page for more information about the syntax of this file
 +# and a more comprehensive list of the parameters understood by
 +# dhclient.
 +#
 +# Normally, if the DHCP server provides reasonable information and does
 +# not leave anything out (like the domain name, for example), then
 +# few changes must be made to this file, if any.
 +#
 +
 +send host-name "<​hostname>";​
 +#send dhcp-client-identifier 1:​0:​a0:​24:​ab:​fb:​9c;​
 +#send dhcp-lease-time 3600;
 +#supersede domain-name "​fugue.com home.vix.com";​
 +#prepend domain-name-servers 127.0.0.1;
 +#request subnet-mask,​ broadcast-address,​ time-offset,​ routers,
 +#​ domain-name,​ domain-name-servers,​ host-name,
 +#​ netbios-name-servers,​ netbios-scope;​
 +#require subnet-mask,​ domain-name-servers;​
 +timeout 30;
 +#retry 60;
 +#reboot 10;
 +#​select-timeout 5;
 +#​initial-interval 2;
 +#script "/​etc/​dhcp3/​dhclient-script";​
 +#media "​-link0 -link1 -link2",​ "link0 link1";​
 +#reject 192.33.137.209;​
 +
 +#alias {
 +#  interface "​eth0";​
 +#  fixed-address 192.5.5.213;​
 +#  option subnet-mask 255.255.255.255;​
 +#}
 +
 +#lease {
 +#  interface "​eth0";​
 +#  fixed-address 192.33.137.200;​
 +#  medium "link0 link1";​
 +#  option host-name "​andare.swiftmedia.com";​
 +#  option subnet-mask 255.255.255.0;​
 +#  option broadcast-address 192.33.137.255;​
 +#  option routers 192.33.137.250;​
 +#  option domain-name-servers 127.0.0.1;
 +#  renew 2 2000/1/12 00:00:01;
 +#  rebind 2 2000/1/12 00:00:01;
 +#  expire 2 2000/1/12 00:00:01;
 +#}
 +option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
 +request subnet-mask,​ broadcast-address,​ time-offset,​ routers, domain-name,​ domain-name-servers,​ host-name, netbios-name-servers,​ netbios-scope,​ interface-mtu,​ rfc3442-classless-static-routes;​
 +</​code>​
 +
 +=== Дополнительно ===
 +
 +Дополнительно,​ в архив входят пакеты ​ pptp-linux_1.7.0-2ubuntu2_amd64 ​ и  pptp-linux_1.7.0-2ubuntu2_i386 ​ .
 +
 +==== Ссылки ====
 +
 +[[http://​forum.ubuntu.ru/​index.php?​topic=50258.msg368576#​msg368576 | Обсуждение скрипта на форуме ]]
 +
 +{{tag> Скрипты}}