OpenWRT - andyceo/documentation GitHub Wiki

Установка OpenWRT

Здесь описывается установка OpenWRT версий Backfire, Attitude Adjustment и Barrier Breaker.

D-Link DIR-615

OpenWRT wiki: D-Link DIR-615

Ставил версию Backfire, потом обновлял до Attitude Adjustment и Barrier Breaker.

  1. Воткнуть провод от интернета в роутер. Подключить роутер к компьютеру по кабелю. Настроить компьютер на использование статического IP-адреса 192.168.0.2
  2. Перевести роутер в сервисный режим. Для этого: выключить роутер; нажать и удерживать кнопку резет; при нажатой кнопке резет включить у роутера питание; примерно через 10-20 секунд удерживания резета, индикатор включения будет мигать оранжевым - то что надо.
  3. Зайти в браузере на адрес 192.168.0.1 и залить заранее приготовленную прошивку. Нормально, если роутер перезагрузится, когда счетчик на странице еще не дойдет до 100%
  4. После перезагрузки роутера, поставить динамическую настройку ip-адреса в сетевом соединении.
  5. Войти по telnet на роутер по адресу 192.168.1.1 и задать пароль root-пользователю. Это отключит дальнейший доступ по telnet и включит доступ по ssh. Выйти из телнет.
  6. Войти на роутер по ssh. войти на роутер по web-интерфейсу и настроить интернет.
  7. После, обновить список пакетов в ssh: opkg update или через web-интерфейс.
  8. Настроить беспроводную сеть. Собственно, все...

TP-Link WDR4300

OpenWRT wiki: TP-Link TL-WDR4300

Ставил версию Attitude Adjustment, потом обновлял до Barrier Breaker.

  1. Скачать нужную прошивку
  2. Прошить ее через стандартный заводской интерфейс

Настройка

  • Настройка для провайдера 2KOM. В разделе Network -> DHCP and DNS, возможно, нужно будет снять галочку Rebind protection или задать исключения (у провайдера 2KOM иначе не работают ресурсы dc.2com.net, radio.2kom.ru и т.п. Также как обходной путь, можно узнать IP-адрес этих узлов на роутере, зайдя на него по ssh, и затем прописав этим доменам узнанный таким образом ip в разделе Network -> Hostnames. Источник: http://forum.2kom.ru/viewtopic.php?f=27&t=23686)

  • Настройка доступа к роутеру по ключу

    • Вариант 1. Зайти на страницу /admin/system/admin и там в разделе SSH Access, в подразделе SSH-Keys добавить публичный ключ того компьютера, с которого планируется заходить на роутер.

    • Вариант 2. Документация доступна на странице Dropbear public-key authentication HowTo

        ssh root@openwrt "echo $(cat ~/.ssh/id_rsa.pub) >>/etc/dropbear/authorized_keys;chmod 0600 /etc/dropbear/authorized_keys"
      
  • Настройка удаленного доступа по SSH

    1. Сначала настраиваем сам демон SSH (в случае OpenWRT это dropbear): на странице /admin/system/admin/ устанавливаем следующие значения:

       --Dropbear Instance--
       Interface: unspecified
       Port:22
       Password authentication: Enabled
       Allow root logins with password: Enabled
       Gateway ports: Enabled
      
       --SSH-Keys--
       ENTER-YOUR-SSH-KEYS
      

      Нажимаем Save&Apply.

    2. Затем нужно открыть порт для удаленного доступа по SSH: на странице /admin/network/firewall/rules/ создаем правило для удаленного доступа к SSH-демону, чтобы файервол пропускал трафик к демону. Создаем New forward rule:

       --New forward rule--
       Name: SSH
       Source zone: wan
       Destination zone: lan
      

      Жмем Add&Edit. Далее:

       Name: SSH
       Restrict to address family: IPv4 only
       Protocol: TCP
       Match ICMP type: any
       Source zone: wan
       Source MAC address: any
       Source address: any
       Source port: any
       Destination zone: Device (input)
       Destination address: any
       Destination port: 22
       Action: accept
      
  • Настройка удаленного доступа по WEB

    1. Устанавливаем пакет luci-ssl для поддержки SSL на странице управления пакетами /admin/system/packages/, или делаем это через консоль под рутом:

       opkg install luci-ssl
      
    2. Открываем порт 443 для доступа к LUCI через Web: на странице /admin/network/firewall/rules/ создаем правило для удаленного доступа к WEB-интерфейсу, чтобы файервол пропускал трафик к LUCI. Создаем New forward rule:

       --New forward rule--
       Name: WEB LUCI
       Source zone: wan
       Destination zone: lan
      

      Жмем Add&Edit. Далее:

       Name: WEB LUCI
       Restrict to address family: IPv4 only
       Protocol: TCP
       Match ICMP type: any
       Source zone: wan
       Source MAC address: any
       Source address: any
       Source port: any
       Destination zone: Device (input)
       Destination address: any
       Destination port: 443
       Action: accept
      
  • Настройка удаленной файловой системы (@todo). Пока смотри https://forum.openwrt.org/viewtopic.php?id=36994 http://flux242.blogspot.de/2012/06/mount-webdav-resources-with-davfs-and.html http://www.3open.org/d/openwrt/mount_opt_on_a_remote_filesystem

  • Защита внешних портов (22-SSH, 443-HTTPS), от атак

    1. Устанавливаем пакет iptables-mod-tarpit (чтобы работал tarpit) и iptables-mod-conntrack-extra (чтобы работал match (-m) recent в правилах) на странице управления пакетами /admin/system/packages/, или делаем это через консоль под рутом:

       opkg install iptables-mod-tarpit iptables-mod-conntrack-extra
      
    2. Добавляем собственные правила для iptables на странице /admin/network/firewall/custom/:

       ################ TARPIT secure the SSH 22 port: START ################
       # see https://forum.openwrt.org/viewtopic.php?id=35154
       # see https://github.com/andyceo/documentation/wiki/OpenWRT
       iptables -N ssh_flood
       iptables -A ssh_flood -i eth1 -j RETURN
       iptables -A ssh_flood -p tcp -m recent --name SSH --update --seconds 300 --hitcount 1 -j TARPIT
       iptables -A ssh_flood -p tcp -m recent --name SSH --set
       iptables -I zone_wan_forward -p tcp -m tcp --dport 22 -m state --state NEW -j ssh_flood
       ################# TARPIT secure the SSH 22 port: END #################
      
       ############## TARPIT secure the HTTPS 443 port: START ###############
       # see https://forum.openwrt.org/viewtopic.php?id=35154
       # see https://github.com/andyceo/documentation/wiki/OpenWRT
       iptables -N https_flood
       iptables -A https_flood -i eth1 -j RETURN
       iptables -A https_flood -p tcp -m recent --name HTTPS --update --seconds 300 --hitcount 1 -j TARPIT
       iptables -A https_flood -p tcp -m recent --name HTTPS --set
       iptables -I zone_wan_forward -p tcp -m tcp --dport 443 -m state --state NEW -j https_flood
       ############### TARPIT secure the HTTPS 443 port: END ################
      

      Необходимо перезапустить сеть после внесенных изменений, или просто перезагрузить роутер.

  • Настройка VPN (@todo)

  • Настройка Dynamic DNS (На примере сервиса dyndns.org)

    1. В разделе Software обновить список софта
    2. Поставить пакет luci-app-ddns. Этот пакет дополнительно поставит основной пакет ddns-scripts, его настройки лежат в /etc/config/ddns. После настройки через графический интерфейс можно удалить пакет luci-app-ddns (а можно было его и вообще не устанавливать - это просто интерфейс для удобной записи конфига для ddns-scripts, который и делает всю работу)
    3. Начиная с пакета ddns-scripts версии 1.0.0-23 (а если вы ставите Barrier Braker 14.07, то там будет именно эта версия пакета) необходимо вручную включать сервис на странице "System" - "Startup", либо вручную запускать скрипт. Просто установка пакета и прописывание настроек ничего не запустят сами.
  • Установка и настройка различных полезных утилит

    • htop
      1. В разделе Software обновить список софта
      2. Поставить пакет htop.

Настройка файерволла

Настройка USB Storage в Chaos Calmer

  • Установить следующие пакеты:

    • kmod-usb-storage - для поддержки USB-накопителей (флешки)
    • kmod-fs-ext4 - для поддержки на внешнем накопителе файловой системы ext4
    • block-mount - для монтирования, поддержки fstab, hotplug
  • Приготовить флешку

    • Вставить в компьютер. Если флешка примонтируется, то пусть ей будет присвоено имя /dev/sdc, и на ней один раздел: /dev/sdc1

    • Отмонтировать флешку:

      umount /dev/sdc1
      
    • Отформатировать флешку в ext4 формате:

      mkfs.ext4 /dev/sdc1
      
  • Вставить флешку в роутер. Пусть она там определится как /dev/sda

  • Создать файл /etc/config/fstab и заполнить его текущей конфигурацией:

      block detect > /etc/config/fstab
    
  • В секции config 'mount' нужно поправить параметр target на /mnt/sda1, если вы хотите, чтобы флешка просто монтировалась куда-то на файловую систему, или на /, чтобы перенести корневую файловую систему на эту флешку. Также, нужно поправить параметр enabled '1', чтобы флешка монтировалась при перезагрузке системы.

Ссылки:

Обновление OpenWRT на следующую версию

  1. Документирование программ и настроек, которые нужно будет установить после обновления

  2. Выбор правильного образа для обновления

  3. Обновление через веб-интерфейс

Джентельменский набор утилит на роутере

  • luci-app-ddns
  • diffutils
  • htop
  • luci-ssl

Настройка веб-сервера uHTTPd, виртуальных хостов и PHP

Ссылки

Неполадки, баги и лечение

Attitude Adjustment on TP-Link WDR4300

  1. Периодический разрыв связи в сети 2,4 ГГц:

     config wifi-iface
         ...
         disassoc_low_ack=0
         ...
    

    См. https://forum.openwrt.org/viewtopic.php?id=4188 Все это все равно не помогло, надо обновляться на Barrier Breaker.

  2. Не работает аппаратный NAT. Причина - нет open-source драйверов на AR8327N или они требуют хаков в ядро. См. https://dev.openwrt.org/ticket/11779

Подготавливаем флешку (3 раздела, overlay - 200 Mb, swap - 200 Mb, data - остатки) 2 раздела - overlay на почти весь диск, и swap - 200 Mb для swap Потом:

ls /dev/sda* - убеждаемся, что есть наша флешка sda, и что есть на ней разделы: sda1, sda2

mount /dev/sda1 /mnt ; tar -C /overlay -cvf - . | tar -C /mnt -xf - ; umount /mnt

block detect > /etc/config/fstab ; vi /etc/config/fstab

Правим /etc/config/fstab, а также не забываем добавить:

config mount option target /mnt/overlay-boot option device /dev/mtdblock3 option fstype jffs2 option options rw,sync option enabled 1 option enabled_fsck 0

Затем позволяем opkg ставить пакеты больше чем rom:

echo option force_space >> /etc/opkg.conf

Источник: http://wiki.openwrt.org/doc/howto/extroot

Ставим mysql: mysql-server libmysqlclient

Меняем параметры в /etc/config/my.cnf Потом mysql_install_db --force Потом меняем пароль для root: /usr/bin/mysqladmin -u root password 'new-password' Также не забыть поменять пароль root для других хостов!

Ставим php: php5-mod-pdo-mysql

Ставим git

http://wiki.openwrt.org/doc/howto/secure.access

Обновление Dir-615 с Barrier Braker на Chaos Calmer

Package: libc Package: opkg Package: busybox Package: odhcpd Package: swconfig Package: base-files Package: netifd Package: uboot-envtools Package: dnsmasq Package: firewall Package: odhcp6c Package: fstools Package: kmod-ath9k Package: uci Package: wpad-mini Package: dropbear Package: mtd Package: libgcc Package: ppp Package: kmod-gpio-button-hotplug Package: iptables Package: kmod-ipt-nathelper Package: ip6tables Package: luci Package: kernel Package: ppp-mod-pppoe

Chaos Calmer

  • Сбросить настройки wifi:

      rm -f /etc/config/wireless
      wifi detect > /etc/config/wireless
    
  • Правка файлов конфигурации в /etc/config не даст эффекта, нужно делать как-то так:

      uci set wireless.radio0.htmode=HT20
      uci commit wireless
    

    или править конфигурацию в web-интерфейса. Подробнее: UCI

  • Смена внутреннего (локального) ip-адреса можно сделать из админки: Network / Interfaces / LAN(edit)

  • Проброс SSH-туннеля с роутера на какой-либо сервер возможно сделать командой в кроне:

      * * * * * /usr/bin/pgrep -f "/usr/bin/dbclient -f -N -R 23022:localhost:22 -i /etc/dropbear/dropbear_rsa_host_key [email protected]" > /dev/null 2>&1 || /usr/bin/dbclient -f -N -R 23022:localhost:22 -i /etc/dropbear/dropbear_rsa_host_key [email protected]
    

    однако, конструкция || в кроне OpenWRT версии Chaos Calmer почему-то не действует, и потому пришлось создать скрипт /root/sshtunnel.sh, в котором лежит указанная команда, а сам скрипт запускается в кроне.

      * * * * * /root/sshtunnel.sh
    

    или, можно воспользоваться пакетом sshtunnel. Однако, этот пакет требует установки полноценного ssh-сервера, и не может довольствоваться предустановленным dropbear. Иными словами, он может не влезть на роутер.

Диагностируем проблемы с сетью (проводной, Ethernet)

В результате скачивания файликов с разных направлений (с/от сервера), выяснилось, что проблема существует только в одном направлении, а именно при скачивании чего-либо с роутера на сервер, в локальной сети.

Ошибки rx_crc_errors

⚠️ **GitHub.com Fallback** ⚠️