Мой дневник

18.12.2015

OpenWRT l2tp

Filed under: компьютеры — sae762 @ 16:28

или танцы с бубном вокруг beeline

Как выяснилось, после первых шагов, описанных в предыдущей статье, приключения только начинались. Подключение к beeline по l2tp оказалось трудным делом… которое в конце оказалось достаточно тривиальным =)

openwrt2-ifs

Немного теории. В версии СС 15.05 протокол реализован пакетом xl2tpd. Демон xl2tpd управляет туннелем: создает соединение к указанному серверу, затем вызывает ppp для аутентификации и установки параметров tcp

Запускать можно двумя способами:
1. (правильный с т.з openwrt) запустить демон xl2tpd без каких-либо коннекций, затем сформировать запрос на подключение с помощью скрипта /lib/netifd/proto/l2tp.sh и передать его демону через утилиту xl2tpd-control (поначалу не работало ни в какую: рвало коннекцию)

2. (ручной режим) прописать параметры соединения в /etc/xl2tpd/xl2tpd.conf и /etc/ppp/{some}.options, в xl2tpd.conf соединению указать autoconnect=yes и запустить xl2tpd -D (в консоли)

Собственно правильно не работало по одной простой причине: схема чувствительна к роутингу. Ну конечно:
– l2tp создает соединение к l2tp.internet.beeline.kz, => нужно его правильно перевести в ip-адрес и правильно маршрутизировать через wan (eth0)
– ppp использует это соединение и создает новый интерфейс, затем где-то в скриптах меняется роутинг.
– при этом ppp постоянно пингует сервер (а сервер – клиента), если пинги не пойдут – канал разрывается.
ПОЭТОМУ ВАЖНО: чтобы default gw  был на ip сервера l2tp
а адрес gw для  сервера l2tp был адресом рутера wan
(достигается Use default gateway – вкл в wan и l2tp-beeline )

openwrt2-route
– аутентификация тоже делается ppp, там тоже есть свои тонкости: если соединение порвалось, сервер еще не сбросил коннекцию и повтор аутентификации просто не работает.

Правильный роутинг должен быть примерно таким:

openwrt2-route-cons

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

ВАЖНО: устанавливая OpenWRT СС v15 на рутер, наступил на те же грабли – не поднимается l2tp. Решение вопроса все же требует внедрение кода в скрипт /lib/netifd/proto/l2tp.sh. После команды connect нужно добавить паузу секунд 5-10, тогда все работает.

xl2tpd-control connect l2tp-${config}  ….
>>>       sleep 10

И еще одни грабли с рутером TR-W740N: там катастрофически не хватает памяти…

Advertisements

Leave a Comment »

No comments yet.

RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: