Автор(ы) статьи Поддерживаемые версии Ubuntu
peabody Все версии

Краткое описание

Данный скрипт позволяет значительно упростить процесс создания vpn-подключения.

Использование скрипта

1. Скачать архив со скриптом можно отсюда. Например так:1)

ubuntu@ubuntu:~$ wget http://help.ubuntu.ru/_media/wiki/vpn_script.tar.gz

2. Распаковать архив в домашнюю папку. Например так:

ubuntu@ubuntu:~$ tar -xvvf vpn_script.tar.gz

3. Запустить на выполнение скрипт vpn.sh Например, так:

ubuntu@ubuntu:~$ sudo bash ~/vpn_prj/vpn.sh


Использование скрипта в домашних сетях различных провайдеров

Многие провайдеры, использующие VPN, предоставляют пользователям возможность подключения к внутренним сетевым ресурсам без использования VPN. Таким образом, если Вы не можете получить доступ в интернет из-за того, что у Вас не настроен VPN, Вы можете обратиться к внутресетевому ресурсу, на котором доступен данный скрипт. Ниже приведен список провайдеров, на внутренних ресурсах которых расположен данный скрипт, а также все необходимые инструкции по настройке.

Corbina Telecom

Абонентам Corbina Telecom достаточно пройти по этой ссылке: http://help.corbina.ru/internet/install/linux/

Листинг скрипта

На самом деле это не один скрипт, а несколько.

vpn.sh

#!/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

vpn_rus.sh

#!/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

vpn_eng.sh

#!/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

route.piter

#!/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
}

route.msk

#!/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
}

route

#!/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
}

rfc3442-classless-static-routes

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 

ip

#!/bin/bash
 
#PATH
PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
export PATH
 
#IP-*

dhclient.conf

# 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;

Дополнительно

Дополнительно, в архив входят пакеты pptp-linux_1.7.0-2ubuntu2_amd64 и pptp-linux_1.7.0-2ubuntu2_i386 .

Ссылки

1)
Здесь и далее специально даны команды для консоли. Это сделано специально, на случай использования скрипта на системах без графического интерфейса