OpenWrt на роутере Tp-link 3220 с резервным каналом через 3G/4G модем

Интернет
tp-link TL-MR3220
Для того чтобы подключить резервный канал Интернет через роутер tp-link TL-MR3220 впринципе ничего сложного не надо.

Воткнул модем и с родной прошивкой настроил резерв на модем.
Так заявляет производитель:
Функция автоматического переключения каналов 3G/4G и WAN гарантирует постоянное подключение к Интернет
Просто так это было бы скучно, воткнул и работает.
Конечно лучше всего всё сделать сложнее сложного.
Вкратце это прошивка модема и написание пары скриптов.
Но лучше ещё всё усложнить и перепаять флэш память у роутера.

… это может пригодиться моим знакомым которые хотят использовать Опенврт в подобных целях и не хотят запариваться покупать
и использовать Микротик)

Первые шаги
После прошивки роутера tp-link TL-MR3220 неофициальной прошивкой OpenWrt lede-17.01 осталось всего 170 Килобайт свободного места.
Ну это совсем никуда не годиться.
флеш память 4 мегабайта роутера tp-link
Выкидываем старый чип flash памяти на 4 мегабайта и впаиваем прошитый 16-ти мегабайтный наместо.
Прошивка это особая фишка, сперва пропал wifi(виной был ART) потом отпайка припайка флэш памяти, в итоге записал специально подготовленный boot в котором можно записать отдельно АРТ и прошивку и даже поменять мак устройства.

Ну вот совсем другое дело!
увеличение флеш памяти на роутере TPLINK
Просто я не люблю когда места в притык, да и некоторые модули надо доставить, да и поразвлекаться теперь можно.

Для определения моего 3-4G модема потребовалось всего пару модулей.
  1. usb-modeswitch
  2. kmod-usb-net-cdc-ether
Для других модемов может потребоваться подключение других модулей, каких? ищем в тырнете.
например opkg install kmod-usb-storage usb-modeswitch kmod-usb-net-cdc-ether kmod-usb-net-rndis
появляется Ethernet Adapter: «usb0» (usb
)

Ну не суть.

Запиливаем интерфейсы.
Interfaces
У меня все входящие WAN(по проводу и 4Г) будут по DHCP, то есть получать айпи адрес автоматом.
щзутцке Interfaces

Все интерфейсы получили айпишники значит всё агонь!

Каждый изз WAN интерфейсов должен иметь метрику на принципе основной канал- меньшую например 1, резервный например 2. Ну это похеру я юзаю на резерв метрику 100 на основной интерфейс 10. Принципе скрипт будет менять главному маршруту метрику 0, другому 10.
Меняется в адвансед.

пример метрики для 3джи

Firewall — Zone Settings

Маскарадим все Ваны!
Реджектим все инпутыЁ!
openwrt firewall Маскарад)

Ну впринципе всё.

Далее погоним в чёрный экран!
терминал SSH я использую PUTTYн)
root
пароль
puttyn

Далее будем тыбрить то, что сделал до нас многоуважаемый Calc с habr.
habr.com/post/170169/
Ну! Канечна не тыбрить а пользоваться и будем всё переделывать под нас!
И кое чо исправлять.) Ну и конечно же всё будем делать неправильно:)

З.Ы. Я кстати купил Б.У. роутер с авивты, уже второй именно для этих целей.

cd /etc/config/
mkdir rezerv
cd rezerv


создаём и наполняем файлы
3g_on
t5t
test_sh
wan_on

Я создаю редактором VI
vi имя файла
а после нажимаю букву a(англ.) и правой клик мышки (вставит код)
после нажимаю ESC(эскейп)
нажимаю Shift+: (ну шифт и Ж) и ввожу wq и жму энтер!
Это особенности редактора vi
типа открыл или создал файл, вставил код и сохранил-вышел.
vi t5t

/etc/config/rezerv/test_sh; sleep 6;
sleep 10;
/etc/config/rezerv/test_sh; sleep 6;
sleep 10;
/etc/config/rezerv/test_sh; sleep 6;


vi t5t будет загнан в планировщик заданий и выполняться каждую минуту, но можно поменять и раз в две минуты и как угодно.
Слип 10 можно закомментить и раскоментить #/etc/config/rezerv/test_sh; sleep 8;
это чтобы 5 раз в минуту проверялся канал,
или наоборот сделать — всё закомментить и оставить только одну проверку в минуту.

Внимание! Шлюз основного проводного канала указан 192.168.12.1 и шлюз 3-4G канала 192.168.0.1 требуется поменять на Ваши.
Интерфейс eth2 от 3/4G и основной я тушить — поднимать не хочу и не буду, закомментил их #, пусть живут, может это и неправильно — соединения рваться не будут и так далее, всё ровно по новому маршруту рано или поздно побегут пакеты. Хотите переделайте по своему.

vi wan_on


#wan
##/sbin/ifconfig eth2 down
#/sbin/ifconfig eth0 up
/sbin/route del -net 0.0.0.0 gw 192.168.0.1 netmask 0.0.0.0 dev eth2
/sbin/route del -net 0.0.0.0 gw 192.168.12.1 netmask 0.0.0.0 dev eth1
/sbin/route add default gw 192.168.12.1 metric 0
/sbin/route add default gw 192.168.0.1 metric 20




vi 3g_on

##/sbin/ifconfig eth1 down
##/sbin/ifconfig eth2 up
/sbin/route del -net 0.0.0.0 gw 192.168.0.1 netmask 0.0.0.0 dev eth2
/sbin/route add default gw 192.168.0.1 metric 0
##/sbin/ifconfig eth1 up
/sbin/route del -net 0.0.0.0 gw 192.168.12.1 netmask 0.0.0.0 dev eth1
/sbin/route add default gw 192.168.12.1 metric 10




vi test_sh


#!/bin/sh

#blok1
DIR=/etc/config/rezerv/
#DIR=/home/calc/rezerv/
ROUTE=/sbin/route
GREP=/bin/grep
RM=/bin/rm
TOUCH=/bin/touch
ETH=eth1
#blok2
#tested address www.ru
WWW_RU=8.8.8.8
WWW_RU2=8.8.4.4
#WWW_RU=alltimeallivehost.lan


#blok3
#flags
F3G=3g
FWAN=wan
FCUR=$FWAN

#blok4
#on
ON_3G=3g_on
ON_WAN=wan_on
ON_DEF=$ON_WAN

#blok5
#def routines
R_WAN=192.168.12.1
R_3G=192.168.0.1
R_CUR=$R_WAN

#blok6
#proverka flagov
if [ ! -f $DIR$F3G ]; then
  if [ ! -f $DIR$FWAN ]; then
    echo "no one file exist, use default iface"
    echo $DIR$ON_DEF
  else
    R_CUR=$R_WAN
    FCUR=$FWAN
  fi
else
  R_CUR=$R_3G
  FCUR=$F3G
fi

#blok7
#proverka tekushego marshruta
if [ "$ROUTE | $GREP default | $GREP $R_CUR | wc -l" != "0" ]; then
  echo "$FCUR route exist"
else
  echo "add $FCUR route"
  $ROUTE add default gw $R_CUR metric 0
fi

#blok8
#toggle if not work
##PING www.ru
if ping -w3 -c2 -I $ETH $WWW_RU  > /dev/null || ping -w3 -c2 -I $ETH $WWW_RU2  > /dev/null 2>&1 ; then
  echo "MAIN working";
  if [ -f $DIR$F3G ]; then
    echo "3g used, wan_on"
    $DIR$ON_WAN
    $RM $DIR$F3G
    $TOUCH $DIR$FWAN
  fi
else
  echo "MAIN not working";
  #if [ -f $DIR$FWAN ]; then
    echo "wan used, 3g_on"
    $DIR$ON_3G
    $RM $DIR$FWAN
    $TOUCH $DIR$F3G
  #fi
fi



после делаем файлы исполняемыми
chmod 777 wan_on
chmod 777 3g_on
chmod 777 test_sh
chmod 777 t5t


Создатель идеи ещё редактирует файл /etc/rc.local

Ну сделаем по его примеру, пусть будет, может даже будет работать.

vi /etc/rc.local

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

echo $((10*1024*1024)) > /sys/block/zram0/disksize
mkswap /dev/zram0
swapon /dev/zram0

#udalaem flagi
rm /etc/config/rezerv/wan
rm /erc/config/rezerv/3g

exit 0


и загоняем в шэдуллер

*/1 * * * * /etc/config/rezerv/t5t > /dev/null

Далее ребут!

Конечно это всё фигня, а не скрипты, работать будут. Но если модем зависнет или на нём не будет тырнета то ничего конечно работать не будет.
Если будет пропадать пинга на основном канале то глюки тоже должны быть.

Чем меня не устроил пакет mwan3?
Дома работает, а если приход основного канала через воздух(ubiquty) то по непонятным причина интерфейс down и всё. Даже пинга идёт в диагностике как положено, но не работает и всё.
Попробую на досуге сбросить роутер к заводским настройкам и повторить настройку резервирования канала снова с пакетом mwan3.

Подобная проверка и переключение канала для Микротика можно найти в этой статье radio.obninskiy.net/blog/internet/1577.html

2 комментария

avatar
При использовании модема ZTE MF667 часто отключался модем от Интернета сам и автоматом не подключался.
Этим славятся многие модемы ZTE и чтобы модем переподключался автоматически требуется в браузере ввести команду.
Вобщем это очень просто
создаём файл например в том же каталоге
cd /etc/config/rezerv/
vi modem.sh
wget -qO- http://192.168.0.1/goform/goform_set_cmd_process?goformId=CONNECT_NETWORK > /dev/null

chmod 777 modem.sh

В планировщик закидываю с новой строки ещё одно задание
*/10 * * * * /etc/config/rezerv/modem.sh

______________________________________________
IP-адрес 192.168.0.1
Версия ПО WEB_TELE2RUSMF667V1.0.0B01
Версия ПО устройства BD_HDMF667V1.0.0B01
Версия оборудования MF667-2.0.0
комментарий был удален
Автор топика запретил добавлять комментарии