OpenWrt на роутере Tp-link 3220 с резервным каналом через 3G/4G модем
Для того чтобы подключить резервный канал Интернет через роутер tp-link TL-MR3220 впринципе ничего сложного не надо.
Воткнул модем и с родной прошивкой настроил резерв на модем.
Так заявляет производитель:
Функция автоматического переключения каналов 3G/4G и WAN гарантирует постоянное подключение к Интернет
Просто так это было бы скучно, воткнул и работает.
Конечно лучше всего всё сделать сложнее сложного.
Вкратце это прошивка модема и написание пары скриптов.
Но лучше ещё всё усложнить и перепаять флэш память у роутера.
… это может пригодиться моим знакомым которые хотят использовать Опенврт в подобных целях и не хотят запариваться покупать
и использовать Микротик)
Первые шаги
После прошивки роутера tp-link TL-MR3220 неофициальной прошивкой OpenWrt lede-17.01 осталось всего 170 Килобайт свободного места.Ну это совсем никуда не годиться.
Выкидываем старый чип flash памяти на 4 мегабайта и впаиваем прошитый 16-ти мегабайтный наместо.
Прошивка это особая фишка, сперва пропал wifi(виной был ART) потом отпайка припайка флэш памяти, в итоге записал специально подготовленный boot в котором можно записать отдельно АРТ и прошивку и даже поменять мак устройства.
А вот совсем другое дело!
Просто я не люблю когда места в притык, да и некоторые модули надо доставить, да и поразвлекаться теперь можно.
Для определения моего 3-4G модема потребовалось всего пару модулей.
- usb-modeswitch
- 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, то есть получать айпи адрес автоматом.
Все интерфейсы получили айпишники значит всё агонь!
Каждый изз WAN интерфейсов должен иметь метрику на принципе основной канал- меньшую например 1, резервный например 2. Ну это похеру я юзаю на резерв метрику 100 на основной интерфейс 10. Принципе скрипт будет менять главному маршруту метрику 0, другому 10.
Меняется в адвансед.
Firewall — Zone Settings
Маскарадим все Ваны!
Реджектим все инпутыЁ!
Нууу впринципе всё.
Далее погоним в чёрный экран!
терминал SSH я использую PUTTYн)root
пароль
Далее будем тыбрить то, что сделал до нас многоуважаемый 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 комментария
Этим славятся многие модемы ZTE и чтобы модем переподключался автоматически требуется в браузере ввести команду.
Вобщем это очень просто
создаём файл например в том же каталоге
cd /etc/config/rezerv/
vi modem.sh
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