понедельник, 19 марта 2012 г.

ASA5505 как роутер

Доставшийся мне в наследство дорогущий аппаратный firewall CISCO ASA5505, долго лежал без дела. При всей его крутости, он не поддерживает ряд элементарных функций, необходимых в домашнем роутере, например L2TP без IPSEC (с шифрованием - без проблем, но например, в билайне именно такое подключение), или привязки выдаваемой айпи к маку сетевушки, что умеют даже копеечные роутеры. К тому же у  этой "кошки", свой IOS, немного отличающейся от стандартного, что заставляет искать мануалы именно к этой железяке.
Ради желания протестировать  asa5505 , я  даже сменил провайдера, выбрав того, кто может дать "белый" статический айпи.
Wifi роутер был подключен в режиме AP, дабы от него ничего не зависело.
Теперь любые настройки только через shh. Вот например как пробросить 80 порт на сервачек, спрятанный за натом циски:


access-list outside_access_in extended permit tcp any interface outside eq 80

static (inside,outside) tcp interface 80 10.10.10.111  80 netmask 255.255.255.255 


access-group outside_access_in in interface outside
 


Имеем ввиду что outside - имя внешнего интерфейса.

Files auto remove

Автоматическая чистка от старых логов - то что нужно, для поддержания свободного места на диске сервера. Вот один из методов - утилита find.
Например найдем файлы логов старее 10 дней.

find /var/log -mtime +10

Файлы старее 30мин.

find /var/log -mmin +30

Одна из опций утилиты find может выполнять команды, с тем что было найдено:

find /var/log/* -mtime  +5 -exec rm {} \;

Обязательно используйте "слеш" "\", иначе "опциональная" команда не выполнится.
Вот то что я использую для того, чтобы не удалять старые записи,а переносить туда, где побольше мета.

find /spool2/monitor/* -mtime +90 -exec mv {} /oldspool/ \;

Теперь можно добавить в /etc/crontab для зачистки, в начале каждого месяца:

0 0 1 * * root  find /spool2/monitor/* -mtime +90 -exec mv {} /oldspool/ \;

Удалим большие файлы >100Mb

find /var/log/  -size  +100M  -exec rm  -R {}  \;

Удаляем старые записи для астериска автоматически первого числа в /etc/crontab

0 0 1 * * root find /var/spool/asterisk/monitor/* -mtime +150 -exec rm -R {} \;


 если 

bash: /usr/bin/find: Argument list too long  !!!!!!!!!!!!!!!!!!!!!!!!
тогда убрать *
find /data/g-voip/sd/ -mtime +365 -exec rm -R {} \;

---------как----автоматизировать----------------------------------------------

Скрипт контроля объема папки
space="$(du -s /var/log/remote/ | awk '{print $1}')"
space_limit=24000000
if  (( $space >  $space_limit ));
then
cd /var/log/remote/
ls -1t  | tail -n 10 | xargs -d '\n' rm -f
fi

Скрипт контроля  пространства на разделе:
#!/bin/bash -x
logfile=/opt/fs_projects/custom_scripts/monitoring/diskspace_check.log
use="$(df -h | grep CallRecords | awk '{print substr($5, 1, length($5)-1)}')"
# max space usage
use_limit=98
if  (( $use > $use_limit ));
then
cd /CallRecords/Inbound/
echo " ------ same records wil be deleted ---- $(date)" >> $logfile
ls -1t  | tail -n 100 >> $logfile
ls -1t  | tail -n 100 | xargs -d '\n' rm -f
else
echo "---- nothing to delete ----  $(date)" >> $logfile
fi
--------------------------------------------------
попробовать еще один способ
#!/bin/bash
find /cluster/conf/nginx/delivery -type f -mmin +2 -delete