PROXY
August 18, 2022

TP-LINK MR3020 v3.2 + 4g modem превращаем в прокси сервер без дополнительного железа и пайки

Это мой текущий участник TP-LINK MR3020 v3.2 + 4g modem 3372h-153 (разлоченый и прошитый)

Привет друзья, наверняка если вы интересуетесь или интересовались темой мобильных прокси попадались на глаза изображения группы устройств основой для которых служит роутер TP-LINK MR3020.

Как правило в этой схеме присутствует управляющий компьютер и не так важно что он собой представляет но он так или иначе есть. В классическом исполнении там установлен и настроен прокси сервер Владимира Дубровина ( 3proxy ) в иных случаях любой другой прокси сервер. В случаях когда мы используем прокси для себя, будем откровенны, нам в процессе работы по сути нет необходимости громоздить сложные пары логин/пароль, следить за сроками жизни прокси кратно сроку аренды и т.п. и куда важнее стабильность, простота и энергоэффективность.

В данной статье мы превратим роутер TP-LINK MR3020 v3.2 купленный в магазине в полноценный прокси сервер, установим 3proxy, заставим делать ребут модема по ссылке. Применим аппаратное управление питанием USB порта роутера.

Часть первая, прошивка TP-LINK MR3020 v3.2

Для перевода роутера TP-LINK MR3020 v 3 со стандартной (заводской) прошивки на систему OpenWrt 19.07.6 (почти полноценный линукс дистрибутив) я буду использовать программу TFTPD а все работы буду проводить в ОС Windows 10. Если ранее уже был установлен OpenWrt то можно обновить файлом из под веб-морды. Важно понимать что указанные в статье софты не подойдут для версии 1 роутера а так-же для роутеров TP-LINK MR3020 v3.* с резистором R5 на плате, впрочем, если вы купили чудо-коробку в магазине то мне по крайней мере за 2 года из новых и приобретаемых в магазине роутеров ни разу такой не попался, вероятнее всего сейчас их не выпускают, корневое отличии от моей версии в том что аппаратное управление питанием USB при наличии резистора R5 потребует небольшого вмешательства с помощью паяльника т.к. иначе работать не будет.

Важно! Потому как та прошивка которую я тут выкладываю не подойдет для других версий.

Скачать TFTPD c Яндекс диска (версия для 64битных систем)

Скачать прошивку для TP-LINK MR3020 v 3.2 c Яндекс диска


Подключаем питание роутера, подключаем роутер к сетевой плате разъемами RJ45 и переходим к настройке адаптера

Название адептера у вас может быть иным
Указываем в свойствах TCP/IPv4 всё именно так как на скрине

Далее файл из архива прошивки с окончанием в имени файла tftp-recovery.bin переносим в папку с распакованной программой tftpd и переименовываем присвоив имя tp_recovery.bin (для обновления из веб морды при ранее установленной системе OpenWrt используем второй файл *.bin)

Запускаем tftpd и выбираем наш интерфейс с адресом 192.168.0.225

Далее вырубаем питание, и удерживая кнопку на роутере (на всякий уточню что самая толстая лампочка на фасаде роутера это одновременно и кнопка которая нажимается) включаем питание обратно воткнув шнурок. Ждем мгновение и как только софт подхватит интерфейс и начнет прошивку кнопку отпускаем

Так выглядит процесс начала прошивки

После завершения заливки прошивки, меняем настройки сетевого адаптера обратно на значения по умолчанию и передергиваем питание. Прошивка завершена. PS наличие в порту или отсутствие в этот момент 4g модема роли ни какой не играет. Можно и так и этак.

Часть вторая, установка 3proxy на TP-LINK MR3020 v3.2

OpenWrt открывает нам возможности работы с терминалом собственно это нам и нужно. Но перед этим давайте установим на систему пароль. Заходим в браузере по адресу роутера 192.168.1.1 и видим такую картинку

Интерфейс веб панели

Жмем Войти, переходим в раздел Управление и устанавливаем пароль, сохраняем.

Установка пароля администратора TP-LINK MR3020 v3.2

Запускаем ssh клиент (я использую Bitvise SSH Client) и пытаемся установить связь по протоколу SFTP (мне так проще) но т.к. на роутере сервер не установлен это увы не возможно.

Мне нравиться использовать протокол SFTP для работы с файловой системой

Давайте установим сервер SFTP на роутер

Поехали в терминал

Окно терминала
# обновим менеджер пакетов
opkg update 
# установим sftp сервер
opkg install openssh-sftp-server

Далее кидаем пакет 3proxy_0.9.2-1_mipsel_24kc.ipk в папку /root/

# установка 3proxy
opkg install /root/3proxy_0.9.2-1_mipsel_24kc.ipk
# удаление пакета
rm /root/3proxy_0.9.2-1_mipsel_24kc.ipk
# открываем конфиг 3proxy
nano /etc/3proxy/3proxy.cfg

Разместим там для примера код:

nscache 65536
nserver 8.8.8.8
nserver 1.1.1.1
timeouts 1 5 30 60 180 1800 15 60

config /etc/3proxy/3proxy.cfg
monitor /etc/3proxy/3proxy.cfg
counter /etc/3proxy/3proxy.3cf

users admin:CL:passw
users admin1:CL:passw1

include /etc/3proxy/counters
include /etc/3proxy/bandlimiters
auth strong
deny * * 127.0.0.1
flush
auth strong
allow admin1
proxy -n -p5000 -a
socks -n -p6000 -a
flush
auth strong
allow admin
admin -p8080

Сохраняем и перезагружаем роутер.

Скачать пакет 3proxy для TP-LINK MR3020 v3.2 с Яндекс диска

Часть третья - проверка работы прокси

Я старинный пользователь ZennoPoster поэтому для быстрой проверки прокси буду использовать именно браузер этой программы.

Как видим прокси на базе TP-LINK MR3020 v3.2 работает без проблем

А теперь попробуем подключиться на порт 6000 (сокс5) и ввести неверные данные для авторизации.

При ошибка в паре логин/пароль прокси не дает доступ

А теперь снова верные, порт менять не будем.

И вот опять работа уверенная, доступ есть.

Промежуточный итог, теперь наш роутер это прокси сервер, с автоматическим запуском после загрузки.

Управление питанием порта USB на TP-LINK MR3020 v3.2

В данной прошивке этот вопрос уже решен и для выключения питания достаточно послать команду

echo "0" > /sys/class/gpio/usb-power/value

Для включения обратно

echo "1" > /sys/class/gpio/usb-power/value

В локальной сети при работе с прокси и отсутствии запрета на доступ к веб морде в конфиге 3proxy это решается легко, идем в веб морду в раздел Custom Commands

используем код:

echo "0" > /sys/class/gpio/usb-power/value;sleep 3;echo "1" > /sys/class/gpio/usb-power/value;

Данный код выключит питание и через 3 секунды вернет его обратно

Далее создадим задачу на запуск скрипта во вкладке Configure

Название на ваш вкус например как у скрипта "reset"

В графе команда прописан путь к нашему скрипту для рестарта питания USB

Поставим галочку Public access чтоб иметь возможность запуска команды ссылку без авторизации по паре логин пароль. Сохраняем и применяем. Теперь в разделе Custom Commands на вкладке Dashboard у нас появилась новая опция и главное что мы можем получить ссылку на нее и использовать в своих задачах.

Ссылка формируется не верно, для её использования необходимо кое что исправить

А вот теперь немного говна... ссылка не рабочая, сейчас и это исправим, косяк в скрипте формирования ссылки.

Снова идем копать файловую систему по адресу: /usr/lib/lua/luci/view/commands.htm

В этом файле код в 120 строке

location.pathname.split(';')[0] + 'command/' +

меняем на этот:

location.pathname.split('luci/')[0] + 'luci/command/' +

После этого ссылка формируется правильно

Небольшой итог:

Мы получили с Вами полноценный прокси сервер с 1 мобильным портом и перезагрузкой USB по ссылке. Возможность работы из локальной сети с любых устройств в этой сети без необходимости собирать отдельный системный блок для управления. В одной локальной сети как вы понимаете таких устройств может быть масса все они могут иметь разные адреса, ссылки, модемы, операторов.

Явные преимущества:

  • Огромное кол-во поддерживаемых модемов.
  • Ваш модем зависнет до первого ребута USB, не дольше =)
  • Энергоэффективность.

Явные недостатки

  • Смена IP происходит не менее 10 секунд.
  • Для смены пары логин пароль нужно подключаться к терминалу.

В новых статьях я постараюсь подробнее остановиться на вопросах смены ip по таймеру, и иных способах управления сменой ip на модеме. Так-же обсудим вопрос ssh туннелей, и соберем автономный по настоящему мобильный прокси на который для работы будет достаточно подать только питание на базе описанного сегодня конфига. Ссылки с рекламой роутера приводить не буду, донатам буду рад, это будет стимулировать к написанию дополнительных статей.