Установка программ, автозапуск программ, правила 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 окажется недоступен из интернет при медленном установлении соединения с провайдером во время старта или после разрыва и последующего восстановления соединения.