OpenWrt - короткие заметки





Содержание

UCI
Firewall
OpenSSH
Cron
Редактор vi
Установка программ в RAM




UCI

Утилита uci, входящая в состав openwrt, позволяет редактировать конфигурационные файлы, считывать из них информацию и «налету» применять изменения.

Работа с этой утилитой — тема достаточно большая и хорошо описана на официальном сайте, русская версия и английская (более детальная), здесь же я приведу лишь небольшой пример.

В файле /etc/config/system изменим значения hostname и timezone

Считываем значения:

uci get system.@system[0].hostname
uci get system.@system[0].timezone


Устанавливаем свои:

uci set system.@system[0].hostname=Istarik
uci set system.@system[0].timezone=UTC-3:30


Применяем изменения:

uci commit system


И проверяем:

uci get system.@system[0].hostname
uci get system.@system[0].timezone





Здесь мы использовали только два параметра get и set, обо всём остальном читайте по указанным выше ссылкам.


Чтобы изменения времени тотчас вступили в действие, дайте команду...

echo 'UTC-3:30' > /tmp/TZ






Firewall

Изначально, файрволл настроен пропускать весь трафик через LAN и блокировать весь входящий WAN-трафик, кроме портов используемых для NAT и портов открытых для сессий созданных изнутри.

Открыть какой-либо порт для доступа через WAN можно прописав команды iptables в файл /etc/rc.local

# Put your custom commands here that should be executed once
# the system init finished. By default this file does nothing.

iptables -A input_rule -i wlan0 -p tcp --dport 80 -j ACCEPT

iptables -A input_rule -i wlan0 -p tcp --dport 22 -j ACCEPT

exit 0


Командой ifconfig можно посмотреть названия интерфейсов (wlan0).



Либо добавить соответствующие правила в пользовательский файл /etc/firewall.user, который подключён в основном конфиг-файле (/etc/config/firewall).

...
config rule
        option src              wan
        option dest_port        80
        option target           ACCEPT
        option proto            tcp

config rule
        option src              wan
        option dest_port        22
        option target           ACCEPT
        option proto            tcp



Открываем 80-ый и 22-ой порты. Если нужен UDP протокол, то меняем tcp на udp.

Правила вступят в действие после перезагрузки.





OpenSSH

Меняем урезанный dropbear на полноценный openssh.

Пароль для root должен быть установлен.

Следующими командами переносим dropbear на другой порт (2222) и перезапускаем его:

uci set dropbear.@dropbear[0].Port=2222
uci commit dropbear
/etc/init.d/dropbear restart


Закрываем текущую сессию и открываем новую на новом порту (2222):

ssh -p 2222 root@192.168.1.1


Устанавливаем openssh-server

opkg update
opkg install openssh-server


Ставим его в автозагрузку и стартуем:

/etc/init.d/sshd enable
/etc/init.d/sshd start


Снова закрываем текущую сессию и открываем новую на стандартном порту (22):

ssh root@192.168.1.1


Отключаем dropbear

/etc/init.d/dropbear disable
/etc/init.d/dropbear stop


Всё готово. Если нужно, то устанавливаем openssh-sftp-server для передачи файлов:

opkg update
opkg install openssh-sftp-server


Конфиг-файл openssh — /etc/ssh/sshd_config.





Cron

Допустим нам нужно выполнять некий скрипт, который будет перегружать роутер каждые пять минут, тогда делаем следующее…

Создаём скрипт rebwrt.sh в папке bin

echo "#!/bin/sh" > /bin/rebwrt.sh
echo "reboot" >> /bin/rebwrt.sh


Проверяем всё ли правильно:

cat /bin/rebwrt.sh


Даём ему права на исполнение:

chmod +x /bin/rebwrt.sh


Останавливаем cron:

/etc/init.d/cron stop

Если он уже остановлен, то выдаст ошибку.

Добавляем задание:

echo "*/5 * * * * /bin/rebwrt.sh" >> /etc/crontabs/root


И стартуем cron:

/etc/init.d/cron enable
/etc/init.d/cron start




Посмотреть расписание:

crontab -l


Удалить файл:

crontab -r


Редактировать файл:

crontab -e

Откроется в редакторе vi (см. ниже).

Таблица crontab:

* * * * * выполняемая команда
- - - - -
| | | | |
| | | | ----- День недели (0 - 6) (Воскресенье =0 или =7)
| | | ------- Месяц (1 - 12)
| | --------- День (1 - 31)
| ----------- Час (0 - 23)
------------- Минута (0 - 59)


Подробности и примеры смотрите в wiki.





Редактор vi

Для редактирования файла нажимаем символ "i".
Вносим изменения.
Нажимаем Esc.
Вводим последовательно символы :wq (w-сохранить, q-выйти).
Нажимаем Enter.
Файл отредактирован.





Установка программ в RAM

Порядок действий таков: по идее, чтоб установить пакет в «память» надо использовать флаг -d ram

opkg install screen -d ram 


Однако предварительно нужно подправить /etc/opkg.conf

dest root /
dest ram /tmp
lists_dir ext /var/opkg-lists
#option overlay_root /overlay  # это закомментировать
option overlay_root /tmp # это добавить
...  

Когда наиграетесь, исправьте обратно!

Далее устанавливаем…

opkg install screen -d ram


Ругается…

root@OpenWrt:~# opkg install screen -d ram
Installing screen (4.3.1-1) to ram...
Downloading http://downloads.openwrt.org/chaos_calmer/15.05/x86/generic/packages/packages/screen_4.3.1-1_x86.ipk.
Configuring screen.
grep: /usr/lib/opkg/info/screen.control: No such file or directory
cat: can't open '/usr/lib/opkg/info/screen.list': No such file or directory

Не может открыть /usr/lib/opkg/info/screen.list

Линкуем эту папочку в темп…

ln -s /usr/lib/opkg/info /tmp


Устанавливаем снова…

root@OpenWrt:~# opkg install screen -d ram
Package screen (4.3.1-1) installed in ram is up to date.


Вроде всё хорошо, но при запуске…

root@OpenWrt:~# screen
-ash: screen: not found 


Тогда пробуем полный путь…

/tmp/usr/sbin/screen


Всё ОК.





На этом пока всё, в дальнейшем буду дополнять статью.



  • +9
  • 14637
Поддержать автора


Telegram-чат istarik

Задать вопрос по статье
Telegram-канал istarik

Известит Вас о новых публикациях






Комментарии (0)

Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.