Понадобился мне WiFi-роутер. Больше для того, чтобы раздавать интернет на телефоны, PS4 и ноутбук. 802.11n хватает, но раз покупать железку, то пусть будет и 802.11ac. Смотрел обзоры, говорил с людьми. Про Asus мне рассказали интересную вещь - при пропадании WAN он редиректит все страницы на собственную страницу с сообщением об ошибке, и все линки теряются. Может это было актуально лишь для RT-N66U и ошибку давно исправили, однако тратить $250 на топовый роутер Asus с такими “шутками” я не готов.

Поэтому взял TP-Link Archer C7 v2 (v1 с глюками, брать его категорически нельзя). По совету друга установил DD-WRT. Настроил, день попробовал у себя, норма. Принёс железку в точку установки. Подключил, запустил, всё работает. Проверил скорость - и тут закралось подозрение, что роутер не слишком хорош.

Включение у меня гигабитное. Ноутбук на Core 2 Duo выдаёт на Speedtest’е 750 Mbps upload в интернет (download меньше, потому как по нему загрузка в домашних сетях больше). Переключаю ноутбук в Archer - и вижу падение до 300 Mbps. WiFi 802.11n на 5GHz даёт 110 Mbps (на расстоянии 25 см), на 2.4 GHz - 85 Mbps. Что-то сдаётся мне, что так быть не должно.

В подозреваемых оказались прошивка DD-WRT и железо Archer. Решил откатиться для начала на официальную прошивку. Но не тут-то было. Из GUI DD-WRT загружаю бинарник, процесс обновления проходит, но после загрузки получаю всё тот же DD-WRT, а не TP-Link. Почитал, оказалось, что это нормально (до конца не разобрался в причинах, нюансы с загрузчиком). Попытался решить по-быстрому через cli, зайдя по telnet’у, прошил бинарник не в ту область, и получил кирпич. Роутер не откликался на перезагрузки, периодически страшно мигал индикаторами, но сеть не подымал. Подумал, что это уже всё, влетел на деньги.

Начал искать решение. Оказалось, что при включении с зажатой кнопкой reset роутер пытается загрузиться с TFTP 192.168.0.66. Ну а дальше - дело техники. После действий, которые я приведу ниже, удалось восстановить официальную прошивку.

Но интригу я скорее всего не развею. Не уверен, насколько мне интересно ставить эксперименты, с тем, как влияет DD-WRT на производительность железа. Видел информацию, что “the stock firmware has a customized 2.6.31 kernel that can do NAT/Fragment/Defragment/csum with hardware acceleration, and OpenWRT can not”. Да и скорость WiFi меня не порадовала, и я скорее всего верну железку.

Что возьму на замену? Ещё не знаю. Если бы у меня был неограниченный бюджет, я бы взял firewall pfSense SG-2440 за $499 без доставки и налогов (вариант - Zyxel ZyWall) и какую-то выделенную WiFi Access Point. Но денег жаль, и это заставляет смотреть на Mikrotik.

В любом случае я не хочу ставить железку, которая рубит производительность на NAT в два раза. Снова дилемма.

Процедура восстановления

  1. Поставить tftp

     $ sudo apt-get install -y atftpd
     $ sudo vi /etc/default/atftpd
     USE_INETD=false
     OPTIONS="--daemon --tftpd-timeout 300 --retry-timeout 5 --mcast-port 1758 --mcast-addr 239.239.239.0-255 --mcast-ttl 1 --maxthread 100 --verbose=5 /srv/tftp"
     $ service atftpd stop
     $ service atftpd start
     $ service atftpd status
     $ tail -f /var/log/syslog
    
  2. Установить 192.168.0.66 на компьютере

     $ sudo service network-manager stop
     $ sudo vi /etc/network/interfaces
     auto eno1
     #iface eno1 inet dhcp
     iface eno1 inet static
         address 192.168.0.66
         netmask 255.255.255.0
    
     $ sudo ifdown eno1
     $ sudo ifup eno1
    
  3. Запустить tcpdump

     $ sudo apt-get install tcpdump
     $ sudo tcpdump -i eno1
    
  4. Списать для начала прошивку OpenWRT openwrt-15.05-ar71xx-generic-archer-c7-v2-squashfs-factory.bin

  5. Потом - tplink-stripped-firmware

  6. Скопировать OpenWRT в каталог TFTP

     $ sudo mv openwrt-15.05-ar71xx-generic-archer-c7-v2-squashfs-factory.bin /srv/tftp/ArcherC7v2_tp_recovery.bin
    
  7. Включить роутер кнопкой питания при зажатой клавише reset. Подержать reset секунд 5, я же смотрел на tcpdump и при первых же пакетах её отпускал. Внимательно смотреть на записи tftp, в некоторых случаях может требоваться установить на компьютер не 192.168.0.66, а 192.168.1.66, это видно в tcpdump

  8. Подождать. Через минуту роутер перезагрузится и вместо 192.168.0.66 станет доступен на 192.168.0.1

  9. Ещё через пару минут можно заходить на http://192.168.0.1 - появится интерфейс OpenWRT

  10. По идее можно было сразу подставить официальный firmware, но я встречал отзывы, что не всё так просто.

  11. Поэтому следующим шагом сделал загрузку с TFPT с tplink-stripped-firmware (шаг 5)

    $ sudo cp Archer-C7-V2-stripped/Archer-C7-V2-FW0.0.3-stripped.bin /srv/tftp/ArcherC7v2_tp_recovery.bin
    
  12. Повторить шаги 7-9

  13. Появится нормальный web-интерфейс TP-Link. Теперь можно прошить официальной прошивкой. Тоже сделал не установку последней, а по очереди, хотя это могло быть и излишним. Сначала поставил Archer C7_V2_V3_141110, затем Archer C7_V2_V3_141110.

  14. Всё, у меня в обоих случаях всё замечательно установилось. Можно пользоваться.