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.
Следующими командами переносим 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
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
- stD
16048
Поддержать автора
Комментарии (0)