Поднимаем VPN под Linux для Ornet
Алексей Воинов
<voins@altlinux.ru>
17 февраля 2002 г.
Примеры вводимых команд набранны моноширинным шрифтом. Если пример начинается с символа
$, то для выполнения команды лостаточно прав обычного пользователя. Если пример начинается
с символа #, то для выполнения команды необходимы права суперпользователя(root).
Для внесения изменений во все файлы, упоминаемые в тексте, необходимы права суперпользователя.
Перед тем как начинать настройку, надо связаться с администратором сети и узнать несколько
полезных параметров. Все эти параметры очень пригодятся позже:
- ip-адрес в локальной сети. (10.a.b.c);
- адрес и маску подсети (обычно 10.a.b.0 и 255.255.255.0, но могут быть разные варианты);
- адрес шлюза (обычно 10.a.b.d, т. е. первые три октета совпадают с вашим ip-адресом,
а последний отличается);
- имя пользователя для подключения;
- пароль (на самом деле пароль выбираете вы сами, но администратор должен его установить
перед попыткой доступа к сети, поэтому выбраьб его надо заранее).
Большинство современных дистрибутивов 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
...
Если всё так и есть, то вы готовы к следующему этапу.
Перед настройкой тоннеля может потребоваться внесение изменений в конфигурацию ядра.
Эти изменения являются частью настройки 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