Примеры вводимых команд набранны моноширинным шрифтом. Если пример начинается с символа $, то для выполнения команды лостаточно прав обычного пользователя. Если пример начинается с символа #, то для выполнения команды необходимы права суперпользователя(root). Для внесения изменений во все файлы, упоминаемые в тексте, необходимы права суперпользователя.
Перед тем как начинать настройку, надо связаться с администратором сети и узнать несколько полезных параметров. Все эти параметры очень пригодятся позже:
Большинство современных дистрибутивов Linux вполне в состоянии автоматически определить и настроить сетевую карту. Это происходит либо при установке операционной системы, либо позже с помощью утилиты настройки. В дистрибутивах-потомках Linux Mandrake можно воспользоваться утилитой draknet, в Red Hat Linux и аналогичных можно запустить linuxconf, также можно воспользоваться утилитой ifconfig или вручную отредактировать network-scripts. Если вы не знаете какой командой настраивается сеть у вас, имеет смысл обратиться к изготовителю дистрибутива, или прочитать документацию.
При подходе к этому этапу драйвер сетевой карты уже загружен, локальную сеть видно. Убедиться в этом можно, например, с помощью команды ping. Посылаем сигнал серверу PPTP:
$ 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, то требуется наличие следующих строчек в /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-21 bsd_comp
alias
ppp-compress-24 ppp_deflate
alias ppp-compress-26 ppp_deflate
Для этого необходимо установить пакет pptp-client или другой, предоставляющий аналогичную функциональность. Также потребуется ppp не ниже версии 2.3.1. Настроить тунель проще всего с помощью программы pptp-command. То что она делает совсем несложно повторить вручную. Для этого создадим файл /etc/ppp/peers/<имя соединения> следующего содержания:
name <имя пользователя>
remotename <адрес pptp сервера>
file /etc/ppp/options.pptp
Так же потребуется добавить к файлу /etc/ppp/chap-secrets строку вида:
<имя пользователя>
<адрес pptp сервера> <пароль>
Это всё, что делает команда pptp-command. Завершим настройку тоннеля описанием опций pppd в файле /etc/ppp/options.pptp:
lock
+chap
# отключаем всю компрессию
nobsdcomp
nodeflate
noaccomp
nopcomp
# включаем шифрование от MS (в случаях, когда
шифрование выключено следует закомментировать
решеткой строки mppe-128
# mppe-stateless)
mppe-128
mppe-stateless
mtu 1000
mru 1000
defaultroute
# получаем IP-адрес динамически
noipdefault
ipcp-accept-local
ipcp-accept-remote
ktune
noauth
pty "/usr/sbin/pptp <адрес pptp сервера> -nolaunchpppd"
Если все предыдущие действия были выполнены без ошибок то теперь соединение можно установить командой:
# pppd call <имя соединения>
Разрыв соединения производится командой:
# kill `cat /var/run/ppp0.pid`
Если устанавливается только одно соединение, и ppp не используется для других целей, то можно использовать команду
# killall pppd