Главная Зерно Пингвин Колибри Сириус Ромашка


Настройка

Настройка VPN-подключения в Linux

Примечание: все указанные команды выполняются от пользователя root

Для поднятия и настройки VPN-соединения нам потребуются всего две программы - ppp и pptp. Программа ppp, скорее всего, уже стоит в вашем дистрибутиве, пакет, содержащий pptp, в разных дистрибутивах называется по-разному, в основном pptp-linux.
Поставить их можно, например, из репозитариев на прилагающихся дисках.
После установки в системе должны присутствовать два исполняемых файла - /usr/sbin/pppd и /usr/sbin/pptp

проверить их наличие можно командой
 

which pppd
which pptp


Если программа установлена , то будет показан путь к ней.

Сетевой интерфейс (обычно eth0) ставится на авто-конфигурацию при помощи dhcp.

Проверим содержимое файла /etc/resolv.conf

cat  /etc/resovl.conf

В ней должна находиться хотя бы одна из этих строк
 
nameserver 172.21.0.1
или
nameserver 91.201.116.11


Для дальнейших действий нам понадобится default gateway (шлюз по умолчанию)
Чтобы определить, какой у вас шлюз, введите команду

ip route

в ответ вы получите несколько строк, среди которых найдите

"default via 172.21.xx.1 dev eth0"

172.21.xx.1 и будет вашим шлюзом по умолчанию, запомните его, он нам еще пригодится.

Добавляем в таблицу маршрутизации маршрут к сети, в которой находится VPN-сервер, чтобы связь с сервером, а также с другими компьютерами в сети не терялась, когда у нас будет меняться шлюз:

route add -net 172.21.0.0 netmask 255.255.0.0 gw ваш_шлюз

Теперь эту команду желательно добавить в какой-либо скрипт, который выполняется при старте системы, чтобы не прописывать каждый раз маршрут руками. Например, в /etc/rc.d/rc.local

Создаем в папке /etc/ppp/peers файл с именем "provider"

cd /etc/ppp/peers
touch provider


Редактируем его, вместо "user" подставляем ваш логин (учетную запись):

 name user
 ipparam provider
 nobsdcomp
 nodeflate
 noauth
 pty "/usr/sbin/pptp 172.21.0.1 --nolaunchpppd"



опции defaultroute, replacedefaultroute пока не рассматриваем.
Модуль ppp_mppe грузить не надо, т.к шифрование не используется.

Правим файл /etc/ppp/chap-secrets (Добавляем в него строку с учетным именем и паролем (далее будет показан и другой способ хранения пароля)

user    *    password    *

Где user и password, соответсвенно, имя вашей учетной записи и пароль.

Проверим работоспособность:

pppd call provider
ip link show     или    ifconfig


В списке интерфейсов должно появиться устройство с именем ppp0

Не пытайтесь на данном этапе выйти в Интернет, отключаем его и донастраиваем.
Прервать соединение можно  командой (обратите внимание на кавычки)

kill `pidof pppd`
или
kill `cat /var/run/ppp0.pid`


Для того, чтобы после поднятия ppp-соединения у нас был Интернет, нужно объяснить системе, чтобы все пакеты, предназначенные для Интернет-узлов, система отправляла не на адрес 172.21.xx.1, а в поднятый нами ppp-туннель.
Для этого достаточно подменить шлюз по умолчанию, используемый системой.

Делается это командами:

route del default
route add default ppp0


Для того, чтобы эти команды выполнялись каждый раз при поднятии VPN-соединения, можно прописать эти команды в скрипт /etc/ppp/ip-up:

route del default
route add default $1


Теперь, после установления VPN-соединения, шлюз по умолчанию будет устанавливаться автоматически.

Также, после того, как происходит отключение от интернета, нужно восстановить прежний шлюз.
Для этого прописываем в /etc/ppp/ip-down

route del default
route add default gw ваш_шлюз


С помощью команды route -n можете посмотреть на таблицу маршрутизации и проследить, как она меняется после подключения/отключения соединения.

Файлы ip-up и ip-down должны быть исполняемыми.

Соедиение удобно подключать/отключать скриптами pon/poff
Если в вашем дистибутиве их нет, то можно скачать -

wget teleseti.com/files/Linux/pon
wget teleseti.com/files/Linux/poff

 

chmod +x pon poff
cp poff pon /usr/bin


теперь соединение можно запускать/прерывать командами

 

pon
poff


Если есть необходимость запускать соединение от простого пользователя, установите программу sudo и в файл /etc/sudoers впишите:

user   localhost = NOPASSWD: /usr/bin/pon, /usr/bin/poff

При этом замените user и localhost на имя вашего пользователя и имя компьютера.
Во многих дистрибутивах этот файл можно редактировать только с помощью программы visudo.

Теперь можно запускать и прерывать соединение командами

sudo pon
sudo poff


Если VPN-соединений у вас будет несколько, то по примеру /etc/ppp/peers/provider можно создать файл /etc/ppp/peers/teleseti, откорректировав параметр ipparam в файле на teleseti, и тогда запускать/отключать Интернет придется командами

 

pon teleseti
poff teleseti


Также можно не хранить пароль в файле /etc/ppp/chap-secrets
а вписать его напрямую в файл teleseti -

 

cat /etc/ppp/peers/teleseti
 ---------------------------

name user
ipparam teleseti
password "password"
nobsdcomp
nodeflate
noauth
pty "/usr/sbin/pptp 172.21.0.1 --nolaunchpppd"


Если ничего не получилось:

1. Файервол (iptables) может блокировать соединения.

2. Если соединение устанавливается, но тут же в течении минуты рвется: Проверьте командой route -n , есть ли в таблице маршрутизации маршруты, о которых говорилось выше ( часто забывают занести установку маршрутов в /etc/rc.d/rc.local) и после перезрагрузки системы нужные маршруты не присутствуют в таблице.

3. Интерфейс ppp0 есть, то есть соединение установлено, а Интернета нет... У Вас по каким-то причинам не выполняется замена маршрута по умолчанию. Проверьте, прописали ли вы эту замену в ip-up, и исполняемый ли этот файл. Попробуйте выполнить эти команды (route del default; route add default ppp0 )вручную из командной строки. Проверьте, появился ли Интернет.

Просмотров: 1632


23 . 11 . 2024