Поднимаем VPN под Linux для Ornet

Алексей Воинов
<voins@altlinux.ru>

17 февраля 2002 г.

Обозначения

Примеры вводимых команд набранны моноширинным шрифтом. Если пример начинается с символа $, то для выполнения команды лостаточно прав обычного пользователя. Если пример начинается с символа #, то для выполнения команды необходимы права суперпользователя(root). Для внесения изменений во все файлы, упоминаемые в тексте, необходимы права суперпользователя.

Предварительная подготовка

Перед тем как начинать настройку, надо связаться с администратором сети и узнать несколько полезных параметров. Все эти параметры очень пригодятся позже:

Установка драйверов для сетевой карты.

Большинство современных дистрибутивов Linux вполне в состоянии автоматически определить и настроить сетевую карту. Это происходит либо при установке операционной системы, либо позже с помощью утилиты настройки. В Linux Mandrake и в ALT Linux можно воспользоваться утилитой draknet. В дистрибутивах-потомках RedHat и в самом RedHat можно запустить linuxconf. Если вы не знаете какой командой настраивается сеть у вас, имеет смысл обратиться к изготовителю дистрибутива, или прочитать документацию.

Исправление таблицы маршрутизации

При подходе к этому этапу драйвер сетевой карты уже загружен, локальныю сеть видно. Убедиться в этом можно, например, с помощью команды ping. Посылаем сигнал серверу VPN:
$ ping 10.10.1.1
PING 10.10.1.1 (10.10.1.1) from 10.2.52.10 : 56(84) bytes of data.
64 bytes from 10.10.1.1: icmp_seq=1 ttl=253 time=13.6 ms
...

Таблица маршрутизации после обычной настройки сети может выглядеть приблизительно так:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
<адрес подсети> 0.0.0.0         <маска подсети> U     0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo
0.0.0.0         <адрес шлюза>   0.0.0.0         UG    0      0        0 eth0

Эту таблицу надо немного изменить, чтобы облегчить работу pppd по созданию записи о шлюзе по умолчанию при установке PPTP-соединения, а также обеспечить одновременный доступ к ресурсам локальной сети и к интернету.

Немедленно эти изменения можно сделать выполнив две команды:

# route del default
# route add net 10.0.0.0 netmask 255.0.0.0 gw <адрес шлюза> eth0
Это обеспечит правильную таблицу маршрутизации до перезагрузки компьютера. Способ сохранения этих изменений на более длительный срок зависит от дистрибутива.

Для дистрибутивов-потомков RedHat подойдёт следующее решение. Заменяем шлюз по умолчанию дял локальной сети на статический маршрут. Для этого в файле /etc/syconfig/network изменяем строчку

GATEWAY=<адрес шлюза>
на
GATEWAY=""
После чего добавим к файлу /etc/sysconfig/static-routes следующую строчку:
eth0 net 10.0.0.0 netmask 255.0.0.0 gw <адрес шлюза>

Если всё было сделано правильно то после следующей загрузки таблица маршрутизации будет приблизительно следующей:

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
<адрес подсети> 0.0.0.0         <маска подсети> U     0      0        0 eth0
10.0.0.0        <адрес шлюза>   255.0.0.0       UG    0      0        0 eth0
127.0.0.0       0.0.0.0         255.0.0.0       U     0      0        0 lo

Для проверки парвильности не обязательно перезагружать компьютер. Достаточно перезагрузить сетевую подсистему:

# service network restart
...

Если всё так и есть, то вы готовы к следующему этапу.

Создание PPTP-тоннеля

Перед настройкой тоннеля может потребоваться внесение изменений в конфигурацию ядра. Эти изменения являются частью настройки ppp, кое у кого это может и не быть сделано. Если поддержка PPP в ядре скомпилированна модулем1, то требуется наличие следующих строчек в /etc/modules.conf:

alias /dev/ppp          ppp_generic
alias char-major-108    ppp_generic
alias tty-ldisc-3       ppp_async
alias tty-ldisc-14      ppp_synctty
alias ppp-compress-18   ppp_mppe
alias ppp-compress-21   bsd_comp
alias ppp-compress-24   ppp_deflate
alias ppp-compress-26   ppp_deflate

Для этого необходимо установить пакет pptp-client2 или другой, предоставляющий аналогичную функциональность. Также потребуется ppp не ниже версии 2.3.1. Настроить тунель проще всего с помощью программы pptp-command. То что она делает совсем несложно повторить вручную. Для этого создадим файл /etc/ppp/peers/ornet следующего содержания:

name <имя пользователя>
remotename vpn.ornet.lan
file /etc/ppp/options.pptp

Так же потребуется добавить к файлу /etc/ppp/chap-secrets строку вида:

<имя пользователя>    vpn.ornet.lan    <пароль>

Это всё, что делает команда pptp-command. Завершим настройку тоннеля описанием опций pppd в файле /etc/ppp/options.pptp:

lock
+chap
# отключаем всю компрессию
nobsdcomp
nodeflate
noaccomp
nopcomp
# включаем шифрование от MS
mppe-128
mppe-stateless
mtu 1000
mru 1000
defaultroute
# надо получать IP-адрес динамически
noipdefault
ipcp-accept-local
ipcp-accept-remote
ktune
noauth
pty "/usr/sbin/pptp 10.10.1.1 --nolaunchpppd"

Если все предыдущие действия были выполнены без ошибок то теперь соединение можно установить командой:

# pppd call ornet

Разрыв соединения производится командой:

# kill `cat /var/run/ppp0.pid`

Если устанавливается только одно соединение, и ppp не используется для других целей, то можно использовать команду

# killall pppd

Об этом документе ...

Поднимаем VPN под Linux для Ornet

This document was generated using the LaTeX2HTML translator Version 2K.1beta (1.57)

Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.
Copyright © 1997, 1998, 1999, Ross Moore, Mathematics Department, Macquarie University, Sydney.

The command line arguments were:
latex2html -split 0 -nonavigation vpn-linux.tex

The translation was initiated by Alexey V. Voinov on 2002-09-23


Примечание

... модулем1
В большинстве современных дистрибутивов это именно так.
...pptp-client2
http://pptpclient.sourceforge.net


Alexey V. Voinov 2002-09-23