Добавить в корзинуПозвонить
Найти в Дзене

Как настроить TFTP в ALT Linux 11.1 или как прошить роутер TP Link

Была задача - прошить (раскирпичить) роутер TP Link Arcer C5. Как выяснилось - это делается через автоматический подхват роутера при включении с зажатым "reset" файла прошивки с пк, который подключён по проводу. Но вот незадача, гайды (ссылки прикреплю ниже) по прошивке - либо на ubuntu, либо на windows, а информации в интернете для новичка мало. Поэтому я собрал здесь всю основную информацию о том, как поднять правильно TFTP на ALT Linux 11.1 + прошить роутер))) ВНИМАНИЕ! Мне подсказали в чате АЛЬТ Линукс более простые варианты, они описаны ниже. Я их оттестировал и из коробки завелась только atftp. Почитайте про него в самом конце статьи. 1. Надо установить пакеты: su- apt-get install xinetd tftpd tftp 2. Создаём конфигурационный файл tftp: touch /etc/xinetd.d/tftp 3. Заполняем его с помощью vim (почитать как им пользоваться можете здесь) vim /etc/xinetd.d/tftp Содержимое: service tftp { protocol = udp port = 69 socket_type = dgram wait = yes user = root server = /usr/sbin/in.tftpd s
Оглавление

Вступление

Была задача - прошить (раскирпичить) роутер TP Link Arcer C5. Как выяснилось - это делается через автоматический подхват роутера при включении с зажатым "reset" файла прошивки с пк, который подключён по проводу. Но вот незадача, гайды (ссылки прикреплю ниже) по прошивке - либо на ubuntu, либо на windows, а информации в интернете для новичка мало.

Поэтому я собрал здесь всю основную информацию о том, как поднять правильно TFTP на ALT Linux 11.1 + прошить роутер)))

ВНИМАНИЕ! Мне подсказали в чате АЛЬТ Линукс более простые варианты, они описаны ниже. Я их оттестировал и из коробки завелась только atftp. Почитайте про него в самом конце статьи.

Как поднять TFTP

Сама настройка:

1. Надо установить пакеты:

su-
apt-get install xinetd tftpd tftp

2. Создаём конфигурационный файл tftp:

touch /etc/xinetd.d/tftp

3. Заполняем его с помощью vim (почитать как им пользоваться можете здесь)

vim /etc/xinetd.d/tftp

Содержимое:

service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /srv/tftp
disable = no
log_type = FILE /var/log/tftp.log
per_source = 11
cps = 100 2
flags = IPv4
}

Самые важные поля здесь это:

  • protocol = udp (протокол сети, лучше не менять)
  • port = 69 (порт для сервера, лучше не менять)
  • server_args = -s /srv/tftp (путь для файлов которые будем шарить и принимать, выбираете сами, но надо сохранить аргумент "-s")
  • log_type = FILE /var/log/tftp.log (куда записывать логи, также тонкая настройка здесь)

4. Необходимо отредактировать конфиг xinetd: /etc/xinetd.conf:

Закоментировать строку:

# only_from = 127.0.0.1

Можно с помощью того же vim.

5. Файл лога создастся автоматически, а вот папку для обмена файлов надо создать и настроить:

mkdir /srv/tftp
chmod -R 777 /srv/tftp
chown -R nobody:nobody /srv/tftp

6. После всех настроек нужно активировать даемон (службу) и включить её:

systemctl enable xinetd
systemctl restart xinetd

Также не будет лишним проверить работу службы (должна писать зелёным "active (running)"):

systemctl status xinetd

7. Проверяем в брандмауэре открыт ли порт 69, либо выключен ли брандмауэр. В АЛЬТ это делается легко с помощью "Центр управления системой" (альтератор). (по умолчанию в альте брандмауэр отключён)

Проверка работы TFTP:

1. Можно скачать приложение (TFTP CS) на андроид. Там думаю разберётесь))

2. С помощью той же машины, где tftp:

tftp localhost (или другой ip, если вы на другой машине)
get <имя файла на сервере>

Аналогично можно сделать и загрузку файла (put) и т.д., но тут уже сами почитайте, я не нашёл к сожалению нормальной статьи(((

Выйти из режима tftp:

quit

Если при "get" никаких ошибок нет, то тогда всё чики брики))))

Тут вам стоит заглянуть сюда. И сами прошивки.

Я лишь вкратце объясню что делать:

  1. Загрузить прошивку в папку tftp, которую мы настроили ранее в с чётким именем и форматом "tp_recovery.bin" (не переименовывать!!!)
  2. Отключить wifi и кабель интернета от ПК, где настраивали tftp (если подключено)
  3. Открыть "Центр управления системой" (альтератор)
  4. Открыть в нём раздел Сеть -> Ethernet-интерфейсы
  5. Выбрать сетевую карту, которая является проводной - ethernet (чаще всего эти интерфейсы называются на enp*)
  6. В "Конфигурация" выбрать "Вручную" и внизу с помощью узкого поля добавить ip адрес 192.168.0.66. Маска подсети выберется автоматически 255.255.255.0
  7. Применить настройки кнопкой снизу слева
  8. Подключить выключенный роутер по проводу к пк (в роутере кабель втыкать не в WAN - куда идёт провод от провайдера, а в один из нескольких LAN)
  9. Найти иглу или "выниматор" сим карт, зажать кнопку reset и включить роутер при зажатой кнопке reset
  10. Подождать, пока роутер не даст сигнал о перепрошивке (в моём случае это горящая лампочка круговых стрелочек), либо просто подождать 10-15 секунд, и отжать кнопку reset
  11. Ждать пока роутер прошьётся и будет работать, это будет понятно по тому как он будет мигать - всё должно загореться как при работающем роутере))) А так, некоторое время он немного поморгает или просто будут гореть круговые стрелочки.
  12. После всех процедур - верните настройку из пункта 6 в "Использовать DHCP"

Важное послесловие

Собственно это вся инструкция. Если вы хотите познать полностью как это всё работает - ссылки я оставил. Также оставлю ссылку, которая помогла мне решить проблему:

Error code 2: only absolute filenames allowed

Основную инфу сначала брал отсюда, но она не работала для роутера. А там просто напросто надо было дописать 3 строчки)) А затевалась эта статья чисто ради этого, чтобы собрать информацию по крупицам))))

ДРУГИЕ ВАРИАНТЫ (проще):

utftpd пакет (не разобрался как настроить):

По факту это пакет, который устанавливает всё что делали выше сразу, НО ему надо настроить конфигурацию, в чём я не разобрался. Что делал напишу ниже:

1. Установка пакета:

su-
apt-get install utftpd

2. Настройка прав на директорию с файлами tftp:

chmod 777 /var/lib/tftp

(Почему-то добавление моего юзера в группу tftp не помогло, хотя в папке есть возможность работать от имени группы tftp)

3. Настройка конфигурации, которая у меня не завелась, но всё равно оставлю здесь:

Файл /etc/xinetd.d/utftpd-udp:

disabled = no
#only_from = 127.0.0.1 (закомментировать)

4. Поднятие службы xinetd:

systemctl restart xinetd

После всех телодвижений почему-то tftp не работает(((((

Также вот что мне подсказали в чате АЛЬТа, но я не тестил:

Надо после правки этого текстового конфига запустить utftpd_makeconfig
настоящий конфиг у него /etc/utftpd.cdb

Т.е. бинарный у него конфиг по факту. Сложно слишком для простой прошивки роутера)

atftp пакет (работает из коробки, ВАМ СЮДА):

1. Просто ставим пакет:

su-
apt-get install atftp

2. Настраиваем права на папку /var/lib/tftpboot:

chmod 777 /var/lib/tftpboot

3. Поднимаем службу:

Если надо чтобы включалась при загрузке пк:

systemctl enable atftpd

Само поднятие службы:

systemctl restart atftpd

Если надо выключить:

systemctl stop atftpd

4. Кидаем файлы в папку /var/lib/tftpboot

5. Всё работает))))