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

Различия

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

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

Предыдущая версия справа и слева Предыдущая версия
Следующая версия
Предыдущая версия
wiki:скрипт_vpn [2009/07/23 17:49]
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_script.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> Скрипты}}