Pull to refresh

Прошивка DD-WRT с двумя PPPoE по расписанию

Что такое DD-WRT

Прошивка DD-WRT позволяет из обычного «дешевого» роутера сделать линукс-сервер с большими возможностями. На борту роутера с прошивкой DD-WRT появляется FTP-сервер, SSH, HTTP-server, PHP, MySQL, RADIUS, имеется возможность установить на роутер торрент-клиент и много других интересных фич.
В этой статье я хочу рассказать о том, как с помощью DD-WRT можно настроить на роутере два PPPoE соединения, которые включаются в зависимости от времени суток. В моём случае необходимость переключения PPPoE-соединений в зависимости от времени, возникла по причине «качания» торрентов.

У меня есть два договора с провайдером, один договор с низкой скоростью, другой с более высокой. Когда я использую интернет для повседневных нужд, то пользуюсь аккаунтом с высокой скоростью, чтобы качать торренты используется аккаунт с низкой скоростью. Хочу заметить, что роутер я использую Dlink DIR-320, к роутеру подключен жесткий диск на 1Тб, и роутер исполняет функции торрен-клиента и NAS.

Подготовка

Итак, задача поставлена – необходимо чтобы в определенное время отключалось одно PPPoE-соединение и включалось другое, на стандартной прошивки, которая ставится производителем устройств такой функции нет, и единственным решением было установить прошивку DD-WRT. О том, как устанавливать на роутер DD-WRT я писать не буду, процесс установки очень хорошо описан в этой статье.
Для того чтобы реализовать поставленную задачу необходимо написать скрипт, который будет останавливать и запускать наши PPPoE соединения. Для удобства работы нам понадобится две программы, одна программа для работы через SSH (WinSCP) и другая программа для работы через Telnet (PuTTY).

Настройка роутера

Сначала мы настраиваем роутер на первое соединение PPPoE, например на то, которое будет работать с 01:00 до 08:00. Для этого нужно зайти через браузер на адрес 192.168.1.1, выбрать раздел Setup->Basic Setup. Выбираем Connection Type PPPoE и вводим полученные от провайдера логин и пароль, после ввода всех данных нажимай “Save”. Следующим шагом необходимо скопировать файл настроек с роутера к себе на компьютер. Это можно сделать с помощью программы WinSCP, подключаемся с помощью неё к роутеру и копируем файл options.pppoe, который находится в директории /tmp/ppp, к себе на компьютер. Для удобства переименовываем файл options.pppoe в 01-08.pppoe, сделаем копию этого файла и копию переименовываем в 08-01.pppoe. В программе Блокнот открываем файл 08-01.pppoe, он должен выглядеть так:
plugin /usr/lib/rp-pppoe.so
nic-vlan{}
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
mp
usepeerdns
user ‘user1'
password ‘password1'
default-asyncmap
mtu 1492
mru 1492
persist
lcp-echo-interval 5
lcp-echo-failure 10


Заменяем значения user и password на логин и пароль второго PPPoE-соединения. Таким образом, у нас на компьютере должно быть два файла 01-08.pppoe и 08-01.pppoe, отличаются эти файлы лишь значениями user и password.
Теперь нам необходимо чтобы файл настроек 08-01.pppoe появился в роутере.
Для этого заходим на роутер 192.168.1.1, выбираем раздел Administration -> Commands и в поле Commands Shell вводим:
echo -e "
вторая строчка и последующие, это содержимое файла 08-01.pppoe
plugin /usr/lib/rp-pppoe.so
nic-vlan{}
noccp
nomppc
noipdefault
noauth
defaultroute
noaccomp
nobsdcomp
nodeflate
nopcomp
nomppe
mp
usepeerdns
user ‘user1'
password ‘password1'
default-asyncmap
mtu 1492
mru 1492
persist
lcp-echo-interval 5
lcp-echo-failure 10
">/tmp/ppp/08-01.pppoe


Теперь мы создадим два файла для запуска PPPoE-соединений:

echo -e "#!/bin/sh
killall -9 pppd
while [ -e /tmp/var/run/ppp0.pid ]; do sleep 1; done
pppd file /tmp/ppp/08-01.pppoe
">/tmp/ppp/start-08-01.sh
echo -e "#!/bin/sh
killall -9 pppd
while [ -e /tmp/var/run/ppp0.pid ]; do sleep 1; done
pppd file /tmp/ppp/options.pppoe
">/tmp/ppp/pppoe.sh
chmod 755 /tmp/ppp/start-08-01.sh
chmod 755 /tmp/ppp/pppoe.sh


Сохраняем нажатием на кнопку Save Startup.

Теперь при загрузке роутера будет создаваться файл с настройками и два файла для запуска PPPoE-соединений.

/tmp/ppp/08-01.pppoe
/tmp/ppp/start-08-01.sh
/tmp/ppp/pppoe.sh


Необходимо протестировать наши скрипты, для этого через Telnet заходим на роутер и набираем команду
/tmp/ppp/start-08-01.sh
потом
/tmp/ppp/pppoe.sh

Если все настроено правильно, то при выполнении команды /tmp/ppp/start-08-01.sh запустится PPPoE-соединение для периода с 08:00 до 01:00, при выполнении команды /tmp/ppp/pppoe.sh должно запуститься соединение дял периода с 01:00 до 08:00. Далее следует настроить роутер так, чтобы смена соединений происходило автоматически без нашего вмешательства. Это осуществляется за счет планировщика заданий Cron.

Настройка заданий


Для того чтобы включить Cron необходимо зайти через веб-интерфейс на роутер, выбрать раздел Administration –> Management, включаем Cron. И вводим в поле Additional Cron Jobs:
0 1 * * * /tmp/ppp/pppoe.sh
0 8 * * * /tmp/ppp/start-08-01.sh

Под катом схема настрйоки Cron

Нажимаем Save. Наш роутер настроен, и при наступлении 01:00 или 08:00 роутер автоматически включит нужное PPPoE-соединение.

* * * * * выполняемая команда
— — — — —
| | | | |
| | | | — День недели (0 — 7) (Воскресенье =0 или =7)
| | | — Месяц (1 — 12)
| | — День (1 — 31)
| — Час (0 — 23)
— Минута (0 — 59)
Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.