Некоторые провайдеры используют технологию VPN для предоставления доступа в интернет. На сайтах провайдеров есть, как правило, настройки лишь для Windows.
В связи с вышеизложенным предлагается способ установки VPN-соединения под Linux с использованием pptp-клиента.
Содержание
- Установка PPTP
- Запуск и остановка
- Установка маршрутов
- VPN на Slackware 13
- VPN на CRUX 2.6
- Автозапуск интернета
- Источники
Установка PPTP
Для подключения к интернет с использованием PPTP, необходима поддержка протоколов на уровне ядра. А она есть у всех, кто здоров сам (не удалял её при пересборке ядра) и пользуется дистрибутивами, собранными психически здоровыми людьми.
В первую очередь необходимы пакеты ppp и pptp. Первый пакет, как правило, включён в состав дистрибутива, а второй необходимо скачать и установить. При отсутствии пакета pptp, собранного под определённый дистрибутив, можно скачать его с сервера SourceForge или скачать тарболл, а затем собрать программный пакет или выполнить установку «классическим» способом.
В файл /etc/ppp/chap-secrets дописывается строка:
[your_login] * [your_password]
Здесь указываем свои логин и пароль.
Редактируем файл (при отсутствии создаем его) /etc/ppp/peers/pptp:
persist
noauth
pty "/usr/sbin/pptp [vpn-сервер] --nolaunchpppd"
user [your_login]
Здесь указываем свой логин и адрес vpn-сервера.
Запуск и остановка
В /usr/local/sbin создаем файлы visconn и disconn:
root@localhost:~:# cd /usr/local/sbin
root@localhost:/usr/local/sbin:# touch visconn disconn
Содержание файла visconn:
#! /bin/sh
[ -x /usr/sbin/pppd ] && /usr/sbin/pppd call pptp &&
echo
echo Connecting to Internet via VPN...
sleep 10
INET_IP=`ifconfig ppp0 | grep inet | cut -d : -f 2 | cut -d ' ' -f 1`
route add default gw $INET_IP ppp0
route add 83.142.161.17 gw $INET_IP ppp0
rm /etc/resolv.conf
echo "nameserver 83.142.161.17" >>/etc/resolv.conf
echo "nameserver 83.142.161.19" >>/etc/resolv.conf
INET_IP=`ifconfig ppp0 | grep inet | cut -d : -f 2 | cut -d ' ' -f 1`
echo Successfully connected!
echo
Содержание файла disconn:
#!/bin/sh
killall pppd
rm /etc/resolv.conf
echo "nameserver 83.142.161.17" >>/etc/resolv.conf
route add default eth0
IP серверов имён следует поменять на IP, выданные провайдером.
Устанавливаем права на файлы:
root@localhost:/usr/local/sbin:# chmod +x visconn disconn
Теперь можно подключаться к интернет, запуская visconn, и отключаться, запуская disconn.
Установка маршрутов
Для того, чтобы при установке соединения не происходило зацикливания GRE пакетов, следует дописать необходимые маршруты в скрипт установки соединения или скрипт, исполняемый при старте системы (rc.local).
Выполняем команду:
host -t A [vpn-сервер]
Здесь <vpn_сервер> — адрес vpn-сервера.
В скрипт автозапуска rc.local (для установки маршрутов при загрузке компьютера) записываем все IP, полученные командой host (каждый с новой строки):
route add [адрес_который_вы_получили_командой_host] eth0
VPN на Slackware 13
В некоторых сетях возникают проблемы с выходом в локальную сеть. Решаются они довольно просто использованием пакета dhcpcd-2.0.8-i486-1 из Slackware 12.2.
VPN на CRUX 2.6
В CRUX для запуска сетевого соединения необходимо отредактировать файл /etc/rc.d/net (это описано в руководстве по установке):
# vim /etc/rc.d/net
...
# ethernet
/sbin/dhcpcd -t 10 -h $HOSTNAME eth0
;;
stop)
/usr/bin/killall -q /sbin/dhcpcd
...
В большинстве случаев опции и их значения -t 10 -h $HOSTNAME можно опустить.
Далее редактируем файл /etc/rc.conf, вписав запуск сценария net и dhcp для сетевой карты:
# vim
...
SERVICES=(net crond)
eth0="dhcp"
Последним штрихом будет вписывание в файл /etc/rc.local выше строк route add [адрес_который_вы_получили_командой_host] eth0 следующей строки:
# vim /etc/rc.local
...
route add -net 0/0 gw [ваш_шлюз]
...
Автозапуск интернета
Для автозапуска сетевого соединения при загрузке компьютера в файл rc.local дописываем последней строкой:
# vim /etc/rc.d/rc.local
...
/usr/local/sbin/visconn
Источники
Для написания были использованы материалы форумов. Работа скриптов проверялась на дистрибутивах Slackware, Arch Linux, CRUX.