====== Установка программ, автозапуск программ, правила iptables ====== ===== Установка программ ===== Готовые, собранные приложения для ZyXEL Keenetic устанавливаются с помощью системы opkg. Приведем основные команды системы opkg: 1. ''opkg list'' - команда выдает список пакетов, которые можно установить в настоящий момент. opkg list busybox - 1.17.3-2 - The Swiss Army Knife of embedded Linux. It slices, it dices, it makes Julian Fries. e2fsprogs - 1.41.12-3 - This package contains essential ext2 filesystem utilities which consists of e2fsck, mke2fs, debugfs, dumpe2fs, tune2fs, and most of the other core ext2 filesystem utilities. file - 5.05-1 - utility gawk - 3.1.8-1 - GNU version of AWK. glib2 - 2.22.2-1 - The GLib library of C routines htop - 0.9-1 - Htop is an ncursed-based process viewer similar to top, but it allows to scroll the list vertically and horizontally to see all processes and their full command lines. ... 2. ''opkg list-installed'' - команда выдает список уже установленных пакетов opkg list-installed busybox - 1.17.3-2 file - 5.05-1 glib2 - 2.22.2-1 htop - 0.9-1 ... 3. ''opkg update'' - команда скачивает и обновляет список пакетов, которые могут быть установлены. Рекомендуется всегда выполнять эту команду перед установкой пакета и при других "манипуляциях" с пакетами. 4. ''opkg upgrade'' - команда обновляет установленные пакеты, если есть обновления. Если обновляется запущенная служба, то следует руками ее перезапустить или перезагрузить маршрутизатор. 5. ''opkg install <имя пакета>'' - команда устанавливает пакет включая пакеты, от которых устанавливаемый пакет зависит. Например ''opkg install mc'' установит Midnight Commander. 6. ''opkg remove <имя пакета>'' - команда удалит установленный ранее пакет. 7. Полный список подкоманд и опций можно получить, запустив opkg без параметров. ===== Автозапуск программ ===== Некоторые из собранных для Keenetic пакетов являются сервисами или демонами. Для автоматического запуска сервисов используются скрипты удовлетворяющие маске ''S??*'', расположенные в папке ''/media/DISK_A1/system/etc/init.d''. Эти скрипты запускаются в алфавитном порядке автоматически при монтировании usb носителя или включении роутера. Останавливаются скриппты в обратном порядке при размонтировании usb носителя. После установки, описанной в разделе устанавливаем систему opkg, в этой папке находятся скрипты ''S01swap'', ''S10dropbear'' и заготовка ''K02cron'', предназначенная для запуска планировщика cron. Если Вы считаете, что Вам не нужен swap файл, переименуйте файл ''S01swap'' в ''K01swap''. При установке некоторых пакетов в папке ''init.d'' появятся дополнительные скрипты ''K??*'' или ''S??*''. Не следует относится к этим скриптам, как к окончательным и устоявшимся. Часто их можно и нужно редактировать, дорабатывать под себя. После таких доработок переименуйте окончательный вариант скрипта ''K??*'' в ''S??*'' для автоматического запуска. ===== Правила файрвола iptables ===== Обычно к установленным демонам (сервисам) нужно дать доступ из сети интернет. Для этого потребуется создать дополнительные правила проброса портов, используя установленный в Keenetic файрвол ''iptables''. Правила проброса могут быть расположены непосредственно в скриптах запуска сервисов ''S??*'' и/или в скриптах, расположенных в папке ''/media/DISK_A1/system/etc/firewall.d''. При разрыве подключения к сети интернет правила ''iptables'' сбрасываются и создаются заново при восстановлении подключения. Если правило ''iptables'' находится в скрипте ''S??*'', то заново оно не будет создано. Поэтому правила правильнее размещать в скрипте в папке ''firewall.d''. Скрипты из папки ''firewall.d'' будут вызваны при восстановлении соединения. Учтите, что скрипты в папке ''firewall.d'' не будут выполнены, когда Вы подключаете носитель к USB (при этом выполнятся скрипты ''S??*'' из папки ''init.d''), а только в момент подключения к сети интернет. Очень часто нужно, чтобы установленные на кинетике программы взаимодействовали между собой по сети. Для этого необходимо выполнение правила iptables -I INPUT -i lo -j ACCEPT Пример файла ''/media/DISK_A1/system/etc/firewall.d/fw.sh'' #!/bin/sh # Разрешаем внутрисетевой обмен iptables -I INPUT -i lo -j ACCEPT # Разрешаем доступ по ssh из интернет на порт tcp 22 iptables -A INPUT -p tcp --dport 22 -j ACCEPT Файл ''fw.sh'' должен иметь атрибут исполнения и заканчиваться символом конец строки. Поскольку некоторые сервисы Вы наверняка будете перезапускать вручную, проводя эксперименты по изменению настроек, правила iptables имеет смысл дублировать в ''fw.sh''. Так, например, для ''lighttpd'' запись в ''S50lighttpd'' (если ''$PORT_F'' равен 80): iptables -A INPUT -p tcp --dport $PORT_F -j ACCEPT требует добавления записи в ''fw.sh'': # Разрешаем доступ по http из интернет на порт tcp 80 iptables -A INPUT -p tcp --dport 80 -j ACCEPT Если этого не сделать, высока вероятность того, что Ваш сервер ''lighttpd'' окажется недоступен из интернет при медленном установлении соединения с провайдером во время старта или после разрыва и последующего восстановления соединения.