Настройка VPN (протокол L2TP)

Не знаю, как у вас, а у нас в доме уже три провайдера сменили pptp на l2tp =))
Поиск на Kubuntu.ru не нашёл ни чего полезного, поэтому, решил на всякий случай, выложить свою инструкцию, вдруг кому-нибудь пригодится.

Настраивать будем простым, но эффективным методом — ручной правкой конфигурационных файлов, например в Konsole через nano. То есть без использования нетворк-менеджера или другой GUI-утилиты.
Начнём пожалуй:

1. Первичная настройка сети:

1) Отключаем Knetwork-manager:
Не знаю, как у вас, а у меня KNetworkManager вызывает нездоровое желание... закопать его!
По-этому, на ваше усмотрение: отключите или совсем удалите его.

2) Далее в зависимости от того есть ли у вас в сети DHCP-сервер, конфигурационные файлы могут быть разными (а или b):


2.а) Настройки сети раздаются через DHCP автоматический:
Правим файл /etc/network/interfaces:
$ sudo nano /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet dhcp


2.б) Настройки сети прописываются вручную:
Правим файл /etc/network/interfaces:
$ sudo nano /etc/network/interfaces

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address ВАШ_IP
netmask ВАША_МАСКА
gateway ВАШ_ВНУТРЕННИЙ_ШЛЮЗ
#up route add -net x.x.x.0 netmask x.x.x.0 gw Ваш_Шлюз dev eth0

Правим файл /etc/resolv.conf
$ sudo nano /etc/resolv.conf

nameserver  IP_АДРЕС_ПЕРВОГО_DSN
nameserver  IP_АДРЕС_ВТОРОГО_DNS

3) На всякий случай перезагружаем компьютер, и проверяем соответствие параметров командой:
$ netstat -nr

x.x.x.0         0.0.0.0         255.255.255.0   U         0 0          0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U         0 0          0 eth0
0.0.0.0         x.x.x.x         0.0.0.0         UG        0 0          0 eth0



2. Настройка Интернета (VPN && l2tp)

1) Для подключения к VPN серверу потребуется пакет xl2tp.
Ищем его для своей версии и архитектуры, где-нибудь там:
http://packages.ubuntu.com/ru/
Или конкретно для 9.10:
http://packages.ubuntu.com/ru/karmic/net/xl2tpd

2) Идём в папку /etc/ppp/ ($ cd /etc/ppp/), Делаем бекап файла options ($ cp options options.backup), открываем и стираем содержимое данного файла (options).

3) Правим файл /etc/ppp/options.xl2tpd:
$ sudo nano /etc/ppp/options.xl2tpd

unit 0
name ВАШ_ЛОГИН_ИНТЕРНЕТ
remotename l2tp
ipparam provaider
connect /bin/true
mru 1450
mtu 1450
nodeflate
nobsdcomp
persist
maxfail 0
nopcomp
noaccomp
#usepeerdns
defaultroute
replacedefaultroute

4) Правим файл /etc/ppp/chap-secrets:
$ sudo nano /etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
Ваш_Логин_Интернет  l2tp    Ваш_Пароль       *

5) Правим файл nano /etc/xl2tpd/xl2tpd.conf
$ sudo nano /etc/xl2tpd/xl2tpd.conf

[global]
access control = yes

[lac provaider]
lns = АДРЕС  VPN СЕРВЕРА, НАПРИМЕР: vpn.internet.beeline.ru
redial = yes
redial timeout = 1
require chap = yes
require authentication = no
name = ВАШ_ЛОГИН_ИНТЕРНЕТ
ppp debug = yes
pppoptfile = /etc/ppp/options.xl2tpd
require pap = no
autodial = yes

6) На всякий случай перезагружаем компьютер.

7) Даём команду:
$ sudo /etc/init.d/xl2tpd start
Ждём секунд пять и проверяем, поднялся ли туннель. Даем команду: ifconfig и получаем результат!

многа буков, а в конце:
ppp0      Link encap:Point-to-Point Protocol
          inet addr:88.85.218.217  P-t-P:217.76.183.249  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1500  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:40 (40.0 B)  TX bytes:46 (46.0 B)

Если же туннель не установлен (нет третьего абзаца), переходим в /var/log/messages, идем в конец файла и смотрим, что там не срослось. Наиболее вероятная причина отказа - небрежно заполненные файлы, о которых речь шла выше. Может просто лечь VPN-сервер: это проверяется пингом. Иногда он действительно выпадает.

8) Создаём в папке /etc/ppp/ip-up.d исполняемый(!) (Если не знаете как сделать исполняемый файл, можете скопировать файл скриптов лежащий в данной папке, переименовать его (но убрать вначале имени цифры, чтобы ваш файл исполнялся последним), и заменить текст на этот) файл со следующим текстом:

#!/bin/sh
for i in $(grep "^nameserver" /etc/resolv.conf | awk '{print $2}') ; do
        route add -host $i gw ВАШ_ВНУТРЕННИЙ_ШЛЮЗ
done
route del $5 dev $1
route add -host $5 gw ВАШ_ВНУТРЕННИЙ_ШЛЮЗ

9) Создаём в папке /etc/ppp/ip-down.d исполняемый(!) файл со следующим текстом:

#!/bin/sh
route add default gw Ваш_внутренний_шлюз

10) Интернет настроен!
Стартуем: $ sudo /etc/init.d/xl2tpd start
Останавливаем: $ sudo /etc/init.d/xl2tpd stop


____________________________________________________
Некоторые ремарочки:

1) Опция autodial = yes — поднимет интернет автоматический при старте машины, но работает эта хрень раз через другой, поэтому зачастую необходимо, сначала остановить псевдоподнятый-нерабочий тунель, а затем снова поднять его:
$ sudo /etc/init.d/xl2tpd stop
$ sudo /etc/init.d/xl2tpd start

2) Данной настройкой мы будем пускать весть трафик через внешний шлюз — грубо говоря откажемся от внутри-сети. Если вам нужна внутрисеть вам необходимо добавить маршрут на внутрисеть:
Либо в /etc/network/interfaces:
up route add -net Подсеть netmask Маска gw Шлюз dev eth0
Либо в скрипте старта (/etc/ppp/ip-up.d/Ваш_Скрипт):
route add -net Подсеть netmask Маска gw Шлюз