?

Log in

No account? Create an account
я - ВИКИНГ

viking_k


Записная книжка IT-шника

идеи / интересы / шлак


Настройка сервера VNC и RDP совместно с LightDM
я - ВИКИНГ
viking_k
VNC-сервер можно использовать одним из двух способов: подключаться к уже открытому X-сеансу или открывать новый сеанс для каждого подключившегося пользователя. В этой заметке будет рассмотрен второй вариант, напоминающий режим работы терминального сервера.
Всё оказалось довольно просто: дисплейный менеджер LightDM умеет работать совместно с VNC-сервером, позволяя авторизоваться в системе и начать новый X-сеанс.
Установка и настройка VNC-сервера
Для начала устанавливаем пакет с VNC-сервером TightVNCServer:
# apt-get install tightvncserver
В файле конфигурации /etc/lightdm/lightdm.conf находим секцию VNCServer и приводим её к следующему виду:
[VNCServer]
enable=true
port=5900
width=1024
height=768
depth=8
Смысл всех настроек очевиден:
enable включает возможность подключиться к LightDM по протоколу VNC,
port задаёт номер TCP-порт, на котором VNC-сервер будет ожидать подключений,
width задаёт ширину экрана для VNC-сервера,
height задаёт высоту экрана для VNC-сервера,
depth задаёт глубину цвета для точки - 8 бит, 16 бит, 24 бита,
Осталось перезапустить дисплейный менеджер LightDM. Учтите, что при перезапуске LigthDM будут завершены все открытые X-сеансы, поэтому лучше завершить их вручную и выполнить следующую команду из текстовой консоли:
# /etc/init.d/lightdm restart
Теперь LightDM будет ожидать подключений на TCP-порту 5900 и при подключении клиента будет запускать VNC-сервер. Узнать, какой VNC-сервер будет запускаться, можно при помощи следующей команды:
# update-alternatives --list vncserver
Выбрать используемый VNC-сервер можно при помощи следующей команды:
# update-alternatives --config vncserver
Если в системе установлен только один VNC-сервер, будет использоваться он. При удалении используемого VNC-сервера система переключится на использование другого.
Лучше использовать клиент наиболее совместимый с сервером. В нашем случае - это TightVNCViewer из пакета xtightvncviewer. VNC-сервер одновременно будет выступать в роли X-сервера, который будет взаимодействовать с LightDM. При подключении мы увидим обычный экран LightDM с указанным разрешением и глубиной цвета, в котором можно ввести имя пользователя и пароль для создания нового X-сеанса.
Установка и настройка RDP-прокси
Для подключения к компьютеру с VNC-сервером по протоколу RDP можно установить и настроить специальный прокси-сервер XRDP, который принимает подключения по протоколу RDP, а сам устанавливает подключения по протоколу VNC к VNC-серверу (на самом деле в данном случае соединения будет принимать LightDM, запуская для их обслуживания VNC-сервер). Прокси будет одновременно выступать в роли RDP-сервера и VNC-клиента.
Установим пакет с прокси:
# apt-get install xrdp
Приведём файл конфигурации /etc/xrdp/xrdp.ini к следующему виду:
[globals]
bitmap_cache=yes
bitmap_compression=yes
port=3389
crypt_level=low
channel_code=1
[xrdp1]
name=default
lib=libvnc.so
username=
password=
ip=127.0.0.1
port=5900
На самом деле этот RDP-прокси может выступать и в роли RDP-клиента, может устанавливать подключения к произвольным компьютерам в сети, самостоятельно запускать X-серверы и использовать различные схемы аутентификации. В данном случае из файла конфигурации удалены все остальные варианты подключения и добавлен только один вариант с названием default, который позволяет подключиться к VNC-серверу, запущенному на том же компьютере, что и сам RDP-прокси. Подключение будет устанавливаться на TCP-порт 5900, а RDP-прокси не будет спрашивать у пользователя имя и пароль.
Теперь перезапустим прокси, чтобы настройки вступили в силу:
# /etc/init.d/xrdp restart
Теперь можно подключаться к VNC-серверу при помощи обычного RDP-клиента из Windows. При этом можно не думать об установке VNC-клиента, который не всегда может оказаться под рукой во "враждебной" среде Windows :)
Метки: ,

Восстановление прошивки на коммутаторах D-link
я - ВИКИНГ
viking_k
В данной статье описан принцип восстановления прошивки для коммутаторов D-Link ( des-3526, des-3550, des-3028, des-3052 т.д.). Периодически приходится сталкиваться с коммутаторами фирмы D-Link ( des-3526, des-3550, des-3028, des-3052 т.д.), у которых отсутствуют прошивки, в большинстве случаев – это следствие отключения электропитания во время загрузки самой прошивки в 1 образ. И так, для восстановления прошивки на коммутаторах нам потребуется:

  • Data-кабель RS-232 либо Data-кабель RS-232 to USB, если нет COM порта;

  • Установленные minicom и lrzsz (необходим для передачи файлов через zmodem/xmodem/ymodem);

  • Сама прошивка, которую можно взять на ftp://ftp.dlink.ru/pub/Switch/


  1. Подключаем коммутатор к компьютеру через Data-кабель, запускаем minicom, включаем коммутатор.

  2. В самом начале, когда идет Power On Self Test нажимаем SHIFT + 3, входим в режим конкурирования загрузки.

  3. Выставляем клавишей «пробел» Image Option: < Create>, Download Protocol: < Z modem>, Baud Rate: <115200>, затем нажимаем APPLY и REEBOOT.

  4. Меняем скорость подключения в minicom с 9600 на 115200

  5. Соединившись с коммутатором выбираем в меню minicom Отправить файл, тип передачи выставляем как zmodem, выбираем скаченную нами с ftp прошивку для нашей модели коммутатора и жмем Enter.

  6. Элемент нумерованного спискаПримерно через 5-6 минут прошивка загрузится и появится надпись с просьбой нажать любую клавишу, соответственно жмем.

  7. Элемент нумерованного спискаМеняем скорость подключения в minicom с 115200 на 9600

  8. Элемент нумерованного спискаПовторяем пункт 2, когда идет Power On Self Test нажимаем SHIFT + 3, входим в режим конкурирования загрузки, выставляем Image Option: < Set_Boot>, Select Image: <1>, Baud Rate: <9600>, затем нажимаем APPLY и REEBOOT.

Вот и все, коммутатор загрузится уже с прошивкой.

Метки: ,

Делаем планшет из 3G модема сменив IMEI
я - ВИКИНГ
viking_k

Бывают такие ситуации, когда требуется сделать так, чтобы сотовый оператор думал, что его SIM карта вставлена в устройство определённого типа. Например, оператор Yota выставляет различные ограничения по трафику и скорости в зависимости от того, в какое устройство была вставлена SIM карта - мобильник, планшет или 3G/4G USB модем. Не совсем понятно, чем они руководствуются сделав такое разграничение, но как по мне - это противоречит здравому смыслу. Главное одно - обычно тип устройства определяют по уникальному номеру радиомодема - IMEI.



Тема смены IMEI покрыта мраком по двум причинам:
1) Не на всех устройствах его можно сменить настолько просто, чтобы разобрался неподготовленный пользователь.
2) Полиция обычно разыскивает краденные трубки по IMEI, поэтому воришки научились его менять, потому тема считается запретной для обсуждения в открытых источниках.

Из-за этих причин на форумах обычно вместо информации о том, как сменить IMEI можно встретить информацию о том, что его нельзя сменить физически и запрещено менять законодательно. В нашем случае это совершено не важно, ведь мы не воришки, да и менять IMEI будем у копеечного 3G модема, который вряд ли будет разыскивать полиция, даже если кто-то его додумается украсть.

Если вкратце, то в случае с модемом Huawei E1550 возможны следующие варианты:
1) С помощью AT команд: AT^DATALOCK, AT^CIMEI и AT^NVWR
2) Через программу Qualcomm Product Support Tools (QPST)
3) Через специально собранный HUAWEI DataCard Update Wizard
4) С использованием JTAG программатор

Каждый из этих способов может не сработать по причине наличия защит в софте/железе, но тот, кому это действительно требуется, найдёт подходящий для его случая и рабочий метод. Я хотел бы остановиться поподробнее на методе номер 3, потому что способы 1 и 2 для моего модема не сработали, а до JTAG дойти не успел, его лучше всегда оставлять на крайний случай ;)



Первое что нужно сделать - скачать слегка модифицированный установщик обновления прошивки - imei-recovery-template-huawei-e1550-100000000000009.exe. Если просто обновить прошивку модема с использованием данного установщика, то его IMEI поменяется на 100000000000009. Для того, чтобы заменить его на нужный нам IMEI потребуется Process Explorer и Hex редактор, например, WinHex (лицензионный, либо с кряком). Все программы требуется запускать с правами администратора, иначе будут проблемы в духе "Ошибка доступа".



Запускаем установщик, он находит модем, проверяем что это тот самый модем, который требуется прошить. Запускаем Process Explorer и находим процесс установщика. В установщике нажимаем далее до тех пор, пока не начнётся процесс прошивки. До фактической прошивки модема установщик сделает резервную копию пользовательских настроек из модема, эта операция займёт 5-10 секунд, после чего надпись поменяется на "Downloading Programs"



В этот самый момент требуется заморозить процесс установки с использованием Process Explorer, выбрав в контекстном меню опцию Suspend. После чего можно не торопясь отредактировать файл с прошивкой, который установщик заботливо положил в папку %temp%. Нажимаем Win+R, вводим "%temp%" (без кавычек, с процентиками), нажимаем Enter, и в открывшейся папке находим самый свежий файл весом 15 мегабайт типа TMP. Его нужно открыть в HEX редакторе.



Примерно на смещении 0xE1AAF1 нужно найти значение 081A00000000000090, оно соответствует значению IMEI 100000000000009 и вместо него можно правильным образом написать IMEI от своего планшета. Допустим, если IMEI планшета 80A123456789012347, то нужно дописать к нему вначале 80A, а затем разделить всю строчку на группы из двух символов и в каждой группе поменять их местами. В итоге должно получиться 08 1A 32 54 76 98 10 32 74, и вот эту строку записываем на место оригинальной. После чего сохраняем файл и размораживаем процесс через Process Explorer.



Если всё было сделано правильно, то по окончанию обновления установщик сообщит что всё хорошо, и покажет новый IMEI модема. Если же что-то пошло не так, и модем больше не определяется в системе, не регистрируется в сети, или к вам в дверь уже стучат, то самое время переходить к пункту номер 4.

По аналогии можно сделать с модемом Huawei E173:
imei-recovery-template-huawei-e173-353238856958110.exe.

UPD: После смены IMEI можно обновить прошивку модема до последней версии, а можно и не обновлять, скорее всего это ни на что не повлияет. В моём случае три из трёх модемов успешно прошились и нормально после этого работают, да и в комментариях никто пока не жаловался на убитые модемы. Но не стоит забывать, что подобными действиями можно убить модем, а потому выполнять их стоит аккуратно, и с пониманием рисков.
спизжено вот тут
Метки: ,

В Windows 7 создается профиль TEMP вместо повторно созданного профиля
я - ВИКИНГ
viking_k

В Windows 7 создается профиль TEMP вместо повторно созданного профиля пользователя после удаления папки С:\Users\.

Windows не удалось загрузить локально сохраняемый профиль(ошибка 1502).
Ситуация: произошел какой то сбой в системе компьютера, после этого было решено пересоздать профиль пользователя (с тем же именем). Но вместо нужного профиля создается профиль TEMP. Данные которые были скопироваты в этот профиль после перезагрузки не сохранились. (этого и следовало ожидать). Для решения этой проблемы удалил ветку РЕЕСТРА старого пользователя:

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\(SID пользователя)\ProfileImagePath

При этом (SID пользователя) обычно имеет следующий вид:

S-1-5-21-1446095298-683812188-645511626-1014

Метки: ,

MikroTik отправка SMS через 3G-модем
я - ВИКИНГ
viking_k

Настройка модема


Для удобства я подключил 3G модем через маленький USB удлинитель и приступил к настройкам:

Смотрим какие устройства нам доступны по USB:
/system resource usb print
# DEVICE VENDOR                   NAME                  SPEED
1 1:33   HUAWEI Technology        HUAWEI Mobile         480 Mbps

Смотрим порты, а главное количество каналов (3 канала от 0 до 2):
/port print
Flags: I - inactive
#   DEVICE NAME                    CHANNELS USED-BY                  BAUD-RATE
2   1:11   usb4                           4                          9600

Теперь подключимся к модему и настроим его работу (канал выбираем перебором, ожидая на ввод команды AT ответ OK. У меня получилось с 1 и 2 каналом.):
system serial-terminal port=usb4 channel=1
[Ctrl-A is the prefix key]
AT
OK


Теперь настраиваем модуль SMS:
Отправка ведется через канал который мы нащупали

tool sms send usb4 phone-number=+7*******1234 message="test" channel=1

Далее читаем входящие сообщения и ждем наше (secret равен любой строке):
tool sms set channel=1 port=usb4 keep-max-sms=10 receive-enabled=yes secret=blabla
tool sms inbox print
Метки: ,

Краткая памятка по работе с архиваторами из консоли в Li
я - ВИКИНГ
viking_k
Работа с TAR


http://ru.wikipedia.org/wiki/Tar писал(а):...в настоящее время tar используется для хранения нескольких файлов внутри одного файла, для распространения программного обеспечения, а также по прямому назначению — для создания архива файловой системы.


КОД: ВЫДЕЛИТЬ ВСЁ

tar -cvvf foo.tar ./

КОД: ВЫДЕЛИТЬ ВСЁ

tar -xvvf foo.tar
    В двух словах о самом формате tar
    Например чтобы запаковать текущую папку в tar-архив напишемгде foo.tar имя которое будет присвоено полученному архиву, а "./" указание папки

    А для распаковки этого архива будем использовать

Работа с TAR/GZ и TAR/BZIP2


КОД: ВЫДЕЛИТЬ ВСЁ

tar -cvvzf foo.tar.gz ./

КОД: ВЫДЕЛИТЬ ВСЁ

tar -cvvjf foo.tar.bz2 ./

КОД: ВЫДЕЛИТЬ ВСЁ

tar -xvvzf foo.tar.gz

КОД: ВЫДЕЛИТЬ ВСЁ

tar -xvvjf foo.tar.bz2
    Tar-архив может быть дополнительно сжат одним из поддерживаемых архиваторов: gzip, bzip2 и др.
    Для указания архиватора указывается один из дополнительных параметров, например:
    запаковать gzip'ом foo.tar.gz
    запаковать bzip2'ом foo.tar.bz2
    распаковать запакованный gzip'ом foo.tar.gz
    распаковать запакованный gzip'ом foo.tar.bz2

Основные опции команды tar

    Работа с ZIP


    КОД: ВЫДЕЛИТЬ ВСЁ

    zip -r folder.zip ./

    КОД: ВЫДЕЛИТЬ ВСЁ

    unzip ./folder.zip -d ./folder
      Запаковать текущую папку с подпапками в zip-архив folder.zip
      Распаковать архив folder.zip в папку folder

    Работа с многотомными архивами tar.gz


    КОД: ВЫДЕЛИТЬ ВСЁ

    tar -czvf - --exclude=www/test --exclude='*.zip' /var/www/ | split -b 1024m - ./backup.tar.gz

    КОД: ВЫДЕЛИТЬ ВСЁ

    cat часть1 часть2 часть3 > архив.tar.gz

    КОД: ВЫДЕЛИТЬ ВСЁ

    cat backup.tar.gzaa backup.tar.gzab backup.tar.gzac > backup.tar.gz

    КОД: ВЫДЕЛИТЬ ВСЁ

    cat backup.tar.* > backup.tar.gz
      Допустим нам надо запаковать содержимое папки /var/www, исключив папку /var/www/test и все zip архивы, в многотомный архив с размером тома 1024 Мб. Делается это командой(«-» после -czvf говорит tar'у выводить в stdout, чтобы потом split мог его разбить на части(а «-» в split говорит ему брать из stdin)) В результате будут созданы файлы backup.tar.gzaa, backup.tar.gzab, backup.tar.gzac ..., размер каждого 1024 Мб. Именно последние две буквы в названии архива .tar.gzaa, .tar.gzab и т.д., указывают на то, что он разбит на части.

      Склеить все части можно командойНапример
      Если все части архива находятся в одной папке, то команда для склеивания выглядит так:

    Работа с 7zip


    КОД: ВЫДЕЛИТЬ ВСЁ

    7z a -v100m arch.7z soft/

    КОД: ВЫДЕЛИТЬ ВСЁ

    7z x arch.7z.001
      Создание многотомного архива arch.7z папки soft/в результате будут созданы файлы arch.7z.001 arch.7z.002 arch.7z.003 ..., размер каждого 100 Мб (опция -v100m).

      Чтобы распаковать многотомный архив arch.7z.001, достаточно поместить все части архива в текущую папку и дать команду

    Как распаковать запароленный архив

    КОД: ВЫДЕЛИТЬ ВСЁ

    7z e -pПароль archive.7z

    КОД: ВЫДЕЛИТЬ ВСЁ

    unrar e -p"Пароль" archive.rar

    КОД: ВЫДЕЛИТЬ ВСЁ

    7za a -mhe=on -ms=on -p Documents.7z Documents/

    КОД: ВЫДЕЛИТЬ ВСЁ

    7za x Documents.7z
      между вашим паролем и ключем -p не должно быть пробелов, в кавычки надо брать если в пароле используется например дефис или другой системный символ

      создание и распаковка архива с паролем через 7zipпароль будет запрошен системойпароль также спросит система после ввода команды

    Работа с GZIPp

    gzip test.sql – упакует, добавит gz и УДАЛИТ! файл
    gunzip test.sql.gz – распакует и УДАЛИТ! test.sql.gz

    © Creaternal, 2010
    При написании использовалась официальная информация.
    Метки: , ,

    Как поменять мак адрес на оборудовании Ubiquiti
    я - ВИКИНГ
    viking_k

    1-й способ:


    Сохраняем конфигурационный фай (бэкап конфигурейшен)
    открываем в блокноте:
    находим что-то типа:
    
    netconf.2.devname=ath0
    
    вместо 2 может быть другая цифра, которую всюду нужно верно прописать
    Добавляем:
    
    netconf.2.hwaddr.mac=12:34:56:78:90:AB
    
    где 12:34:56:78:90:AB -- нужный МАК-адрес
    и меняем строку на енейбл:
    
    netconf.2.hwaddr.status=enabled
    
    
    сохраняем и заливаем изменённый конфиг на точку
    

    2-й способ:


    1. Создаем файл rc.poststart в каталоге /etc/persistent нашего устройства.
    vi /etc/persistent/rc.poststart
    с содержанием:
    ifconfig wifi0 down
    ifconfig wifi0 hw ether 00:15:6D:XX:XX:XX
    ifconfig wifi0 up
    ifconfig ath0 down
    ifconfig ath0 hw ether 00:15:6D:XX:XX:XX
    ifconfig ath0 up
    ifconfig eth0 down
    ifconfig eth0 hw ether 00:15:6D:X(X+1):XX:XX
    ifconfig eth0 up
    
    2. Назначаем необходимые права:
    chmod +x /etc/persistent/rc.poststart
    
    3. Проверяем правильность:
    cat /etc/persistent/rc.poststart
    
    4. Применяем:
    cfgmtd -w -p /etc/
    
    Перезагружаемся и видим желаемый результат.
    
    Откат обратно:
    1. Удаляем файл rc.poststart
    
    2. Применяем:
    cfgmtd -w -p /etc/
    
    Перезагружаемся и видим желаемый результат.

    Метки: ,

    Настройка proxy доступа к mikrotik
    я - ВИКИНГ
    viking_k
    На микротиха есть две возможности реализации прокси. Первая это Web_Proxy, а вторая это Socks.
    Я пользуюсь ими обоими для различных целей, но в основном это нужно для проверки открываемочти  различных ресурсов непосредственно из сети которую обслуживает Микротик.

    /ip socks> export

    /ip socks
    set enabled=yes port=5223
    /ip socks access
    add src-address=MyIP

    /ip proxy> export

    /ip proxy
    set cache-path=web-proxy1 enabled=yes port=5190
    /ip proxy access
    add dst-port=5190 src-address=MyIP
    add disabled=yes dst-port=5190
    Порты могут быть любыми, в данном примере указаны порты протокола Jabber, которые очень часто являются открытыми.
    Метки: ,

    Настраиваем скорость пропускания на mikrotik
    я - ВИКИНГ
    viking_k
    Необходимо настроить скоросные нарезки так чтобы разные клиенты получали скорость согласно своего тарифного плана.
    Для этого я для начала сделал несколько подсетей в которые решил подключать абонетов с разными скоросными нарезками. Например 10.x.4.0/24 это будет скорость 1М, а 10.x.3.0/24 это будет скорость 10М. и эти IP будут выдаваться в внутри PPP (PPtP, PPPoE) соединения.

    Типы скоросных нарезок:

    /queue type
    add kind=pcq name=PCQ-download-10M pcq-burst-rate=11M pcq-burst-threshold=7M pcq-burst-time=15s pcq-classifier=dst-address pcq-dst-address-mask=0 pcq-dst-address6-mask=64 pcq-rate=9M pcq-src-address-mask=0 pcq-src-address6-mask=64
    add kind=pcq name=PCQ-upload-5M pcq-burst-rate=6M pcq-burst-threshold=3M pcq-burst-time=15s pcq-classifier=src-address pcq-dst-address-mask=0 pcq-dst-address6-mask=64 pcq-rate=4M pcq-src-address-mask=0 pcq-src-address6-mask=64
    add kind=pcq name=PCQ-download-1M pcq-burst-rate=2M pcq-burst-threshold=1M pcq-burst-time=15s pcq-classifier=dst-address pcq-dst-address-mask=0 pcq-dst-address6-mask=64 pcq-rate=512k pcq-src-address-mask=0 pcq-src-address6-mask=64
    add kind=pcq name=PCQ-upload-1M pcq-burst-rate=2M pcq-burst-threshold=1M pcq-burst-time=15s pcq-classifier=src-address pcq-dst-address-mask=0 pcq-dst-address6-mask=64 pcq-rate=512k pcq-src-address-mask=0 pcq-src-address6-mask=64
    add kind=pcq name=PCQ-download-20M pcq-burst-rate=21M pcq-burst-threshold=19M pcq-burst-time=15s pcq-classifier=dst-address pcq-dst-address-mask=0 pcq-dst-address6-mask=64 pcq-rate=17M pcq-src-address-mask=0 pcq-src-address6-mask=64

    Применяем эти тыпы на оприделенные подсети
    /queue simple
    add name=10M queue=PCQ-upload-5M/PCQ-download-10M target=10.x.3.0/24
    add name=1M queue=PCQ-upload-1M/PCQ-download-1M target=10.x.4.0/24

    Метки: ,

    Война с электронными подписями, в том числе eToken в Debian Linux
    я - ВИКИНГ
    viking_k
    Итак понадобилось мне получить доступ к единому реестру запрещенных ресурсов, но все оказалось не так просто как хотелось бы.

    Вводная:
    Сервер на Debian 7
    ЭЦП на etoken, в нутре контейнера
    ViPNet
    Необходимо автоматерировать процесс регулярного обращения к реестру запрещенных ресурсов и выгрузки с него списка "плохишей"

    Начало войны - Несправедливость:
    Под Виндой все работает великолепно. Достаточно установить ViPNet CSP для управления сертификатами и ViPNet CryptoFile для подписи файлов. Все это есть на сайте производителя. Но для Линуксов ничего есть только программа ViPNet CSP, да и та в бета-тестирвании.

    Битва первая - Драйвер:
    Электронные ключи eToken выпускаются компанией  Аладин Р.Д., драйвера можно скачать на соответствующем сайте. Приятно порадовало есть драйвера для платформ отличный от Windows.

    Для моего Debian это выглядило так:

    Устанавливаем версию java от Oracle. Смотрим версию Java:
    #java -version

    если установлены пакеты java OpenJDK - удаляем их:
    #apt-get remove OpenJDK*

    Как установить версию от Oracle см. пример здесь: http://www.webupd8.org/2012/06/how-to-install-oracle-java-7-in-debian.html
    Устанавливаем java от Oracle:
    #echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" > /etc/apt/sources.list.d/webupd8team-java.list
    #echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu precise main" >> /etc/apt/sources.list.d/webupd8team-java.list
    #apt-key adv --keyserver keyserver.ubuntu.com --recv-keys EEA14886
    #apt-get update
    #apt-get install oracle-java7-installer

    Устанавливаем необходимое для работы с ключом Etoken окружение:
    #apt-get install ia32-libs libhal1 opensc pcscd

    Пакеты libhal1 и libpcslite1 у Вас уже должны быть установлены. Смотрите какие версии установлены следующей командой:
    #dpkg -l | grep libhal1
    #dpkg -l | grep libpcsclite1

    Качаем и устанавливаем соответствующую версию библиотек для архитектуры x64 с репозиториев Debian:
    #dpkg -x libpcsclite1_1.8.4-1_amd64.deb libpcsclite1-amd64
    #dpkg -x libhal1_0.5.14-8_amd64.deb libhal1-amd64
    #cp libpcsclite1-amd64/usr/lib/x86_64-linux-gnu/libpcsclite.so.1.0.0 /lib64/
    #ln -s /lib64/libpcsclite.so.1.0.0 /lib64/libpcsclite.so.1
    #mkdir /usr/lib64
    #cp libhal1-amd64/usr/lib/libhal.so.1.0.0 /usr/lib64/
    #ln -s /usr/lib64/libhal.so.1.0.0 /usr/lib64/libhal.so.1

    Установка драйвера SafenetAuthenticationClient. Сама эта програмулька предоставляется компанией Аладин вместе с технической поддержкой и просто так скачать ее, к сожалению, нельзя. Но я нашел ее на сайте ПромСвязьБанка.
    #dpkg -i SafenetAuthenticationClient-8.0.5-0_amd64.deb
    #ln -s /usr/lib64/libeTPkcs11.so /usr/lib/

    Перезагружаемся (этого просит у нас драйвер SafenetAuthenticationClient) и проверяем работу ключа, он должен быть виден в списке:
    Список слотов на eToken можно увидеть так:

    $ pkcs11-tool --module /usr/lib/libeTPkcs11.so -L
    Available slots:
    Slot 0 (0x0): AKS ifdh [Main Interface] 00 00
    token label:   eToken
    token manuf:   SafeNet, Inc.
    token model:   eToken
    token flags:   rng, login required, PIN initialized, token initialized, other flags=0x200
    serial num  :  01c0cfc0
    Slot 1 (0x1):
    (empty)
    ...

    Список обектов в  определенном слоте можно увидеть так:

    $ pkcs11-tool --module /usr/lib/libeTPkcs11.so --slot 0 -Ol
    Data object 63307778
    label:          'ViPNet Container'
    application:    'rnd-f-9820-5be2-a8f9-e2d6-e2fa-2d7f-5593'
    app_id:         <empty>
    flags:           modifiable
    Data object 141754372
    label:          'ViPNet KeyInfo'
    application:    ''
    app_id:         <empty>
    flags:           modifiable
    ...
    Содержимое объекта в слоте можно посмотреть так:

    $pkcs11-tool --module /usr/lib/libeTPkcs11.so --slot 0 -a 'ViPNet Container' -y data -r
    XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    ....



    В общем и целом делаем вывод, что драйвера на eToken встали великолепно, НО ViPNet CSP для линукс его в упор не видит и естественно открыть свой контейнер не может.
    Для проверки еще попытался подойти к вопросу со стороны.
    Открываем наш любимый браузер — Mozilla Firefox, и пользуемся вот такой инструкцией:
    [Инструкция использования eToken]
    Инструкция использования eToken
    1. Откройте настройки Firefox (Firefox | Настройки). Выберите пункт Дополнительно, перейдите на вкладку Шифрование и нажмите на кнопку Устройства защиты.
    2. В окне Менеджера устройств нажмите на кнопку Загрузить для загрузки библиотеки поддержки PKCS#11.
    3. В появившемся диалоге Загрузка устройства PKCS#11 задайте Имя модуля (например Aladdin eToken).
    4. Укажите путь к файлу библиотеки. В ОС Linux в поле Имя файла модуля введите: /usr/lib/libeTPkcs11.so
    Нажмите кнопку OK.
    Теперь если нажать на кнопку Просмотр сертификатов и ввести PIN-код (запрос на ввод мастер-пароля для [имя eToken]) на вкладке Ваши сертификаты будут видны сертификаты хранящиеся в eToken.
    Но к сожалению и Firefox тоже не увидел содержимого eToken, хотя само устройство идентифицировал.
    Битва проиграна....

    Битва вторая - Контейнер

    Зализав раны от побоища я обратился за помощью к Windows и таки корректно извлек контейнер из eToken с помощью ViPNet CSP. А так же из ViPNet CSP экспортировал ЭЦП в формат PKCS#12 в файл name.pfx. Счастью не было придела. Но оказалось:

    1. На Windows без установленного ViPNet CSP файл с сертификатом name.pfx не рапаковывается, ругаясь на неправильный пароль. Хотя пароль вводился 100% правильный.
    Если ViPNet CSP установить то все распаковывается на ура. Без ViPNet CSP так же нельзя провести ниодин экспорт. Эта зараза помещает сикретный ключ в свой собственный контейнер с отдельным паролем. А при удалении забирает все контейнеры на небеса.

    2. Утилита P12FromGostCSP так же не может произвести экспорт сертификата в формате PKCS#12 ругаясь на то, что с ViPNet она работать не умеет.

    3. На Debian средствами OpenSSL просмотреть файл не удалось. Хотя пароль опять же вводился 100% правильный.

    # openssl pkcs12 -in ./name.pfx  -nodes
    Enter Import Password:
    Mac verify error: invalid password?

    Попытка включить поддержку шифрования по ГОСТ для OpenSSL  результатов не принесла.
    В общем и целом ситуация складывается безвыходная - с конейнерами ViPNet может работать только сам ViPNet и больше никто. Средств для автоматизации процесов нет ни под Windows ни под Linux.
    Битва проиграна...


    Битва Третья - Другой криптопровайдер

    Еще предстоит...


    OpenSSL

    Эти команды позволяют создавать операторы, сертификаты, закрытые ключи и делать другие разные задачи.
    Generate a new private key and Certificate Signing Request
    openssl req -out CSR.csr -new -newkey rsa:2048 -nodes -keyout privateKey.key
    Generate a self-signed certificate (see How to Create and Install an Apache Self Signed Certificate for more info)
    openssl req -x509 -sha256 -nodes -days 365 -newkey rsa:2048 -keyout privateKey.key -out certificate.crt
    Generate a certificate signing request (CSR) for an existing private key
    openssl req -out CSR.csr -key privateKey.key -new
    Generate a certificate signing request based on an existing certificate
    openssl x509 -x509toreq -in certificate.crt -out CSR.csr -signkey privateKey.key
    Remove a passphrase from a private key
    openssl rsa -in privateKey.pem -out newPrivateKey.pem

    Если Вам необходимо проверить информацию в сертификат, CSR или закрытого ключа, используйте эти команды. Вы также можете проверить CSR и проверки сертификатов с помощью наших онлайн-инструментов.
    Check a Certificate Signing Request (CSR)
    openssl req -text -noout -verify -in CSR.csr
    Check a private key
    openssl rsa -in privateKey.key -check
    Check a certificate
    openssl x509 -in certificate.crt -text -noout
    Check a PKCS#12 file (.pfx or .p12)
    openssl pkcs12 -info -in keyStore.p12

    Эти команды позволяют преобразовать сертификаты и ключи в различные форматы, чтобы сделать их совместимыми с конкретными типами серверов или программного обеспечения. Например, вы можете конвертировать обычный pem, который будет работать с Apache в pfx-Файл (Формат pkcs#12-файл) и использовать его с Tomcat или IIS. Используйте наш SSL конвертер конвертировать сертификаты без возиться с openssl.
    Convert a DER file (.crt .cer .der) to PEM
    openssl x509 -inform der -in certificate.cer -out certificate.pem
    Convert a PEM file to DER
    openssl x509 -outform der -in certificate.pem -out certificate.der
    Convert a PKCS#12 file (.pfx .p12) containing a private key and certificates to PEM
    openssl pkcs12 -in keyStore.pfx -out keyStore.pem -nodes

    Вы можете добавить -nocerts только на выходе закрытого ключа или добавить -nokeys, чтобы только вывести сертификаты.
    Convert a PEM certificate file and a private key to PKCS#12 (.pfx .p12)
    openssl pkcs12 -export -out certificate.pfx -inkey privateKey.key -in certificate.crt -certfile CACert.crt

    Подписываем файл запроса на Роскомнадзор:

    #nano openssl.cnf
    ...
    openssl_conf = openssl_def
    [ new_oids ]
    ...
    # OpenSSL GOST
    [openssl_def]
    engines = engine_section
    [engine_section]
    gost = gost_section
    [gost_section]
    default_algorithms = ALL
    engine_id = gost
    # dynamic_path = /usr/local/lib/engines/libgost.so
    CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet

    Проверяем наличее ГОСТ

    #openssl ciphers | tr ":" "\n" | grep GOST

    проверяем, что у нас нормальный (содержит сертификат и закрытый ключ) PKCS#12 командой:
    #openssl pkcs12 -in p12.pfx -nodes

    конвертируем полученный на Windows PKCS#12 в PEM:
    #openssl pkcs12 -in p12.pfx -out provider.pem -nodes -clcerts

    создаем XML файл запроса, согласно памятке оператора (http://zapret-info.gov.ru/docs/description_for_operators_2012-11-09v1.4.pdf) и конфертируем его при помощи icov в СP1251:
    #iconv -f UTF8 -t WINDOWS-1251 request.xml -o request.xml

    подписываем xml файл нашим сертификатом:
    #openssl smime -sign -in request.xml -out request.bin -signer provider.pem -outform DER

    скидываем в Windows и проверяем валидность на http://www.gosuslugi.ru/pgu/eds/

    Остались не раскрытыми:

    • проблемы связанные с ruToken

    Ссылки на софт:
    ...
    openssl_conf = openssl_def
    [ new_oids ]
    ...
    # OpenSSL GOST
    [openssl_def]
    engines = engine_section
    [engine_section]
    gost = gost_section
    [gost_section]
    default_algorithms = ALL
    engine_id = gost
    # dynamic_path = /usr/local/lib/engines/libgost.so
    CRYPT_PARAMS = id-Gost28147-89-CryptoPro-A-ParamSet
    Метки: , ,

    Бесплатные Быстрые Публичные DNS Сервера
    я - ВИКИНГ
    viking_k
    Существует насколько причин, по которым Вы, возможно, захотите использовать альтернативные DNS сервера :

    • Ускорение работы веб-браузера;

    • Улучшение безопасности;

    • Резервное решение, в случае падения серверов Вашего провайдера.

    Вот список бесплатных публичных DNS серверов.
    Google Public DNS
    Google Public DNS - Список бесплатных публичных DNS серверов.
    # Для IPv4 :
    nameserver 8.8.8.8
    nameserver 8.8.4.4
    # Для IPv6 :
    nameserver 2001:4860:4860::8888
    nameserver 2001:4860:4860::8844

    Yandex DNS
    Yandex DNS - IP адреса бесплатных DNS серверов.
    # A - Безопасность (вредоносные программы, фишинг-сайты и сайты мошенников):
    nameserver 77.88.8.8
    nameserver 77.88.8.1
    # B - Безопасность + фильтр Порнографии :
    nameserver 77.88.8.88
    nameserver 77.88.8.2
    # C - Безопасность + фильтр Порнографии + фильтр Не дружелюбных к семейным ценностям сайтов :
    nameserver 77.88.8.7
    nameserver 77.88.8.3
    OpenDNS
    OpenDNS - IP адреса бесплатных DNS серверов.
    nameserver 208.67.220.220
    nameserver 208.67.222.222
    Norton ConnectSafe
    Norton ConnectSafe - Список бесплатных DNS серверов.
    nameserver 198.153.192.1
    nameserver 198.153.194.1
    # A - Безопасность (вредоносные программы, фишинг-сайты и сайты мошенников):
    nameserver 198.153.192.40
    nameserver 198.153.194.40
    # B - Безопасность + фильтр Порнографии :
    nameserver 198.153.192.50
    nameserver 198.153.194.50
    # C - Безопасность + фильтр Порнографии + фильтр Не дружелюбных к семейным ценностям сайтов :
    nameserver 198.153.192.60
    nameserver 198.153.194.60
    Comodo Secure DNS
    Comodo Secure DNS - IP адреса бесплатных публичных DNS серверов.
    nameserver 8.26.56.26
    nameserver 8.20.247.20
    DNS Advantage
    DNS Advantage - IP адреса бесплатных публичных DNS серверов.
    nameserver 156.154.70.1
    nameserver 156.154.71.1
    ScrubIT
    ScrubIT - IP адреса бесплатных публичных DNS серверов.
    nameserver 67.138.54.100
    nameserver 207.225.209.66
    Level 3 Communications
    Verizon (Level 3 Communications) - IP адреса бесплатных публичных DNS серверов.
    nameserver 4.2.2.1
    nameserver 4.2.2.2
    nameserver 4.2.2.3
    nameserver 4.2.2.4
    nameserver 4.2.2.5
    nameserver 4.2.2.6
    Метки: , ,

    Настройка коммутатора Huawei Quidway S2326TP-EI
    я - ВИКИНГ
    viking_k
    Настройки по сути подходят ко всей серии Huawei Quidway S2300, но заметил что некоторые команды могут иметь маленькие отличия в зависимости от версии прошивки. Если что-то не получается прописать, то можно посмотреть варианты команд набрав знак вопроса через пробел после любой команды.

    Посмотреть текущую конфигурацию можно командой:
    display current-configuration

    Чтобы перейти в режим конфигурации наберем:
    system-view

    Пропишем имя коммутатору:
    sysname имя

    Добавим vlan для управления:
    vlan 207
    description примечание
    management-vlan
    quit

    Добавим vlan для пользователей:
    vlan 226
    description примечание
    quit

    Если нужен supervlan, то в любом vlan допишем например:
    vlan 10
    supervlan
    aggregate-vlan
    access-vlan номера_вланов

    Добавим интерфейс в управляемом vlan:
    interface Vlanif 207
    ip address 192.168.1.2 255.255.255.0
    quit

    Добавим маршрут по умолчанию:
    ip route 0.0.0.0 0.0.0.0 192.168.1.1

    Настроим первый SFP порт для аплинка:
    interface GigabitEthernet 0/0/1
    port link-type trunk
    port trunk allow-pass vlan 207 266
    quit

    Настроим порты для абонентов (каждый порт аналогично):
    interface Ethernet 0/0/1
    port link-type access
    port default vlan 226
    loopback-detect enable
    loopback-detect action shutdown
    loopback-detect recovery-time 255
    broadcast-suppression 15

    Активируем функцию защиты от петель:
    loopback-detect enable

    Добавим администратора:
    user-interface vty 0 4
    authentication-mode aaa
    aaa
    aaa
    local-user admin privilege level 15
    local-user admin password cipher ПАРОЛЬ
    local-user admin service-type telnet web http ssh
    quit

    Укажем NTP сервер для синхронизации времени:
    ntp-service unicast-server 192.168.1.1

    Настроим SNMP:
    snmp-agent
    snmp-agent sys-info version v2c
    snmp community read cipher КОМЬЮНИТИ

    Включим web интерфейс:
    tftp <IP> get 2300-V100R005.008.web.zip   # Загружаем web контент, зарание скаченый с сервера huawei, на коммутатор
    http server load flash:/2300-v100r005.008.web.zip # Загружаем его в web сервер
    http secure-server enable
    http server enable
    display http server

    Когда все настроили выйдем в начальный режим, сохраним конфигурацию и укажем что она загрузочная:
    quit
    save config.cfg
    startup saved-configuration config.cfg

    Перезагрузим коммутатор:
    reboot

    Посмотреть таблицу MAC-адресов можно командой:
    display mac-address
    бесчестно спизжено отсюда
    Метки: ,

    Автозапуск. Работа с init-скриптами в Debian 6 и 7
    я - ВИКИНГ
    viking_k
    Очень разочаровался, что в Debian Squeeze внедрили LSBInitScripts вместо чистой классической системы SystemV. Когда дошли руки до настройки запуска самописного скрипта, я разочаровался ещё больше.  :'(  С каждым выпуском Debian, человек всё больше теряет возможность управлять системой вручную. В прошлых версиях дистрибутива, скрипты в /etc/init.d и ссылки на них в /etc/rc*.d создавал сам с помощью консоли и текстового редактора. При этом определяя и продумывая порядок загрузки самостоятельно. Вот внедрили новую систему, создали ещё кучу слоёв абстракции и я, как пользователь системы, потерял простой способ управления процедурой старта демонов\скриптов.
    Все хвалят "козырь" этой системы, как и upstart`а - быстрая загрузка за счёт распараллеливания процессов, но это актуально для ноутов и переносных устройств, но никак не для серверов и домашних станций. Получается что технически, система стала сложнее, а для пользователя - проще, но проще только в рамках приложений Debian`а, где каждое, настроено особым образом и "отшлифовано" для общей системы. Шаг в сторону и система рушится - вобщем поставить самописный скрипт нужно ещё научиться.  :(  Конечно, можно систему "спрямить", но потом возникнут проблемы с установкой и обновлением пакетов. В своё время я вовремя перешёл на ArchLinux, а с Ubuntu, как продвинутый пользователь, и вовсе не совместим  ;)
    Довольно критики, разберём установку скрипта для запуска демона.
    1. Модифицируем наш скрипт так, чтобы после #!/bin/** шёл блок с параметрами для запуска.
    [До модификации]
    До модификации:
    #!/bin/bash
    # Script for run ftp daemon
    # Main variables
    ...
    ...
    exit 0



    [После модификации]
    После модификации:
    #!/bin/bash
    # Script for run ftp daemon
    ### BEGIN INIT INFO
    # Provides:          vsftpd
    # Required-Start:    $remote_fs $syslog exim4
    # Required-Stop:     $remote_fs $syslog exim4
    # Default-Start:     2 3 4 5
    # Default-Stop:      1
    # Short-Description: Running vsftpd server
    ### END INIT INFO
    # Main variables
    ...
    ...
    exit 0


    В блоке прописываются параметры: имя, зависимости, уровни запуска и останова, на которых должен запускаться\останавливаться данный скрипт. LSBInitScripts, при формировании базы данных о том когда и какой сценарий запустить, прочитывает этот текстовый блок скрипта.

    Некоторые пояснения к опциям.
    Вся служебная информация заключена в блоке между строками:
    ### BEGIN INIT INFO
    ...
    ### END INIT INFO
    Все строки между которыми должны быть в формате:
    # {ключевое_слово}: арг1 [арг2...]
    Строка начинается со знака # и последующего одного пробела. ключевое_слово может быть одним из:
    Provides: Описывает предоставляемые этим скриптом объекты (арг1, агр2, ...) таким способом, что, когда скрипт запускается с аругментом start, данные объекты считаются существующими, и, следовательно, другие скрипты в init, которые требуют существование этих объектов, смогут запуститься на более поздней стадии. Обычно, можно использовать имя скрипта в качестве объекта, но так же можно использовать имя сервиса, которую он заменяет. Виртуальные объекты тут не указываются. Они определены вне скриптов init.d
    Required-Start: Задаёт объекты, которые должны существовать, чтобы запустить скрипт. Можно использовать при необходимости виртуальные объекты, как описано ниже. Если объекты не указаны, то этот скрипт может быть запущен сразу после старта, не требуя подключенных локальных файловых систем, запущенного системного журнала и т.д.
    Required-Stop: Задаёт объекты, используемые сервисом, предоставляемой скриптом. Объект, предоставляемый этим скриптом должен завершиться до завершения перечисленных здесь объектов, чтобы избежать конфликтов. Обычно, здесь указывают те же объекты, что и в Required-Start
    Should-Start: Задаёт объекты, которые, если существуют, должны должны быть запущены перед сервисом, предоставляемым данным скриптом. Это допускает слабые зависимости, которые не приводят сервис к ошибке, если объекты не доступны. Можно использовать при необходимости виртуальные объекты, как описано ниже.
    Should-Stop: Задаёт объекты, если существуют должны быть остановлены уже после данного сервиса. Обычно, здесь указывают те же объекты, что и в Should-Start
    Default-Start: Задаёт уровни запуска, на которых скрипт должен быть запущен (остановлен) по умолчанию. Например, если сервис должен быть запущен на только уровнях 3, 4 и 5, укажите "Default-Start: 3 4 5" и "Default-Stop: 0 1 2 6".
    Short-Description: Задаёт короткое описание действия скрипта. Ограничено одной строкой.
    Description: Задаёт более подробное описание действия скрипта. Может быть в несколько строк, в этом случае, каждая строка описания должна начинаться с символа # с последующим знаком табуляции или как минимум 2-мя символами пробела. Описание заканчивается перед линией, не совпадающим с этим условием.
    X-Start-Before, X-Stop-After: Задаёт обратные зависимости, которые значат то же, как если бы они были указаны в should-start и should-stop в пакетах, указанных тут.
    Для отслеживания зависимостей важны ключевые слова provides, required- и should-. Остальные не используются. Уровни запуска по умолчанию используются программой для упорядочивания скриптов (например, insserv) для того, чтобы отслеживать, какой из каталогов rc#.d обновлять, когда служба добавляется в первый раз, и должны отражать назначение сервиса. Вот некоторые "виртуальные" объекты:
    $local_fs - Все локальные фаловые системы подключены. Все скрипты, которые производят запись в /var/ должны зависеть от этого, если они уже не зависят от $remote_fs
    $network - Низкоуровневая сеть, т.е. сетевые карты, может подразумеваться PCMCIA запущеной
    $named - Демоны, которые могут предоставлять разрешение доменных имён предполагаются запущенными. Например, DNS, NIS+ или LDAP
    $portmap - Демоны, предоставляющие сервис SunRPC/ONCRPC portmapping как указано в 1833 (если они есть)
    $remote_fs - Все файловые системы подключены. Скрипты, которые должны быть запущены во время остановки системы до того, как всем процессам будет отправлен сигнал уничтожения, должны зависеть от $remote_fs.
    $syslog - Системный журнал функционирует
    $time - Установленно корректное системное время, например, ntp или rdate, или RTC
    $all - Запускает скрипт как можно последним
    2. Ложим скрипт в /etc/init.d/
    3. Для установки выполняем
    # insserv -v /etc/init.d/vsftpd
    Для удаление используется параметр -r:
    # insserv -v -r /etc/init.d/vsftpd
    Метки: ,

    Настройка logrotate в Debian. Ротация логов
    я - ВИКИНГ
    viking_k
    Logrotate - программа для управления лог-файлами, автоматически архивирует, удаляет, очищает их.
    Установка:
    # aptitude install logrotate
    Файлы настроек находятся в /etc/logrotate.d/
    Пример настройки ротации логов для nginx:
    /var/log/nginx/*.log {
    weekly                     # ротация раз в неделю
    missingok                 # отсутствие файла не является ошибкой
    rotate 52                 # сохраняется последние 52 ротированных файла
    compress                   # сжимать ротируемый файл
    delaycompress           # сжимать предыдущий файл при следующей ротации
    notifempty                 # не обрабатывать пустые файлы
    create 640 root adm # сразу после ротации создать пустой файл с заданными правами и пользователем
    sharedscripts           # скрипты prerotate/postrotate будут выполнены только один раз не зависимо от количества журналов, подходящих под заданный шаблон
    postrotate                 # скрипт будет выполнен сразу после ротации
    [ ! -f /var/run/nginx.pid ] || kill -USR1 `cat /var/run/nginx.pid`
    endscript
    }
    Проверяем как все у нас будет работать (ничего не создастся и не удалиться, это только проверка):
    # logrotate -d /etc/logrotate.d/nginx

    Если все в порядке, можно запустить ротацию:
    # logrotate -v -f /etc/logrotate.d/nginx
    Метки: ,

    TC и HTB.init на Debian
    я - ВИКИНГ
    viking_k
    А вот примеры параметров которые задаются на компьютеры которым нужно ограничить скорось:
    RATE=<speed>|prate|pceil
    CEIL=<speed>|prate|pceil
    BURST=<bytes>
    PRIO=<number>
    R2Q=<number>
    DEFAULT=<clsid>
    LEAF=none|sfq|pfifo|bfifo
    RULE=[[saddr[/prefix]][:port[/mask]],][daddr[/prefix]][:port[/mask]]
    Метки: ,

    Speedtest у себя на сервере
    я - ВИКИНГ
    viking_k
    Думаю каждый пользователь Интернета хоть раз в жизни измерял скорость своего канала Internet. Способов измерения есть довольно много...
    Например, вот здесь находится один из тестов скорости соединения, позволяющий измерить скорость download/upload от Вас до множества точек по всему миру. Да, согласен, погрешность иногда он дает неплохую (именно из-за этого пользуюсь другими методами)... Спишем это на известность сервиса, и на загруженость маршрутизаторов.
    Но мало кто знает, что похожий сервис можно разместить у себя на сервере. Условия - работающий веб-сервер с поддержкой PHP. Что ж... Нужно проверить как это работает.

    Создадим рабочий каталог и выставим необходимые права:
    mkdir /usr/local/www/speedtest
    chown www:www /usr/local/www/speedtest
    cd /usr/local/www/speedtest

    1. Скачиваем архив теста с сайта.
    Дистрибутив можно загрузить на странице проекта: http://speedtest.net/mini.php. Кстати, здесь же присутствует краткая инструкция по установке и настройке

    2. Распаковываем архив. В нашем случае это zip-файл. Поэтому используем утилиту unzip. Если у Вас она не установлена, то установить ее можно из портов (/usr/ports/archivers/unzip).
    unzip mini.zip

    3. Необходимо переименовать index-php.html в index.html (кстати, исходя из предложеных расширений, поддерживаются также asp/asp.net)
    mv index-php.html index.html
    4. "Поправим" конфигурационный файл Apache. Добавим в в /usr/local/etc/apache22/httpd.conf (в секцию alias_module) такие строки:
    Alias /speedtest "/usr/local/www/speedtest"
    <Directory "/usr/local/www/speedtest">
    DirectoryIndex index.html
    AllowOverride None
    Order allow,deny
    Allow from all
    </Directory>

    5. Проверяем, не допустили ли мы ошибок при редактировании и перезапускаем Apache:
    apachectl configtest
    Syntax OK

    apachectl graceful
    Результат этих действий можно просмотреть здесь (необходима поддержка Flash в браузере), как раз и скорость можно протестировать
    Метки: ,

    Установка и настройка DHCP-сервера на Debian
    я - ВИКИНГ
    viking_k
    Хочу в данной статье рассказать как я производил установку и настройку DHCP сервера на примере в Debian. Расскажу и покажу что и как нужно делать.

    1. Для начала установите DHCP-сервер на Debian
    sudo apt-get install isc-dhcp-server

    2. Настраиваем сеть
    [nano /etc/network/interfaces]
    nano /etc/network/interfaces

    auto lan.200
    iface lan.200 inet static
      address 10.0.0.1
      netmask 255.255.0.0
    auto lan.300
    iface lan.300 inet static
      address 10.1.0.1
      netmask 255.255.0.0
    auto lan.400
    iface lan.400 inet static
      address 10.2.0.1
      netmask 255.255.0.0
    3. Если у вас есть много сетевых карт на сервере, то вы должны выбрать сетевую карту, на которую мы привяжем наш DHCP. находим поле “INTERFACES” и прописываем в него свой интерфейс своей сетевой карты. У меня это выглядит следующим образом:
    [nano /etc/default/isc-dhcp-server]
    nano /etc/default/isc-dhcp-server

    INTERFACES="lan.200 lan.300 lan.400"
    4. Настройка сервера DHCP с pool-ом адресов, маской подсети, шлюзом и так далее для клиента DHCP.
    cp /etc/dhcp/dhcpd.conf /etc/dhcp/dhcpd.conf.bak
    [nano /etc/dhcp/dhcpd.conf]
    nano /etc/dhcp/dhcpd.conf

    ddns-update-style none;
    option domain-name "atelecom56.ru";

    default-lease-time 86400;   # 24 hours
    max-lease-time     172800;  # 48 hours

    log-facility local7;

    subnet 10.0.0.0 netmask 255.255.0.0 {
    range 10.0.1.0 10.0.255.254;
    option routers 10.0.0.1;
    option domain-name-servers 10.0.0.1;
    }
    subnet 10.1.0.0 netmask 255.255.0.0 {
    range 10.1.1.0 10.1.255.254;
    option routers 10.1.0.1;
    option domain-name-servers 10.1.0.1;
    }
    subnet 10.2.0.0 netmask 255.255.0.0 {
    range 10.2.1.0 10.2.255.254;
    option routers 10.2.0.1;
    option domain-name-servers 10.2.0.1;
    }
    5. Перезапуск DHCP-сервера на Debian/Ubuntu/Linux Mint
    /etc/init.d/isc-dhcp-server restart
    Метки: ,

    Установка и настройка SQUID
    я - ВИКИНГ
    viking_k
    Squid — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и HTTPS.

    Утановка:
    apt-get install squid

    Прежде, чем редактировать конфигурационный файл, вам стоит сделать копию оригинального файла и защитить ее от перезаписи, чтобы у вас всегда оставались оригинальные настройки в качестве справочника и для повторного использования при необходимости.
    Скопируйте файл /etc/squid/squid.conf и защитите его от записи следующими командами в терминале:
    cp /etc/squid/squid.conf /etc/squid/squid.conf.original

    Убирем все коментарии для удобства конфигурирования:
    cat /etc/squid/squid.conf.original | grep -v '^\(#\|$\)' > /etc/squid/squid.conf

    открываем файл настроек для редактирования:
    [nano /etc/squid/squid.conf]
    nano /etc/squid/squid.conf

    # настройка авторизации
    auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/passwd
    auth_param basic children 5
    auth_param basic realm Squid proxy-caching web server
    auth_param basic credentialsttl 2 hours
    auth_param basic casesensitive off

    # новый пользователь заводится командой " htpasswd -c  /etc/squid/passwd petrov "
    # последующие " htpasswd  /etc/squid/passwd sidorov "
    # ACL
    # default
    #
    acl all src all
    #
    acl manager proto cache_object
    #
    acl localhost src 127.0.0.1/32
    #
    acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
    #
    acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
    acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
    acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
    #
    acl SSL_ports port 443 # https
    acl SSL_ports port 563 # snews
    acl SSL_ports port 873 # rsync
    #
    acl Safe_ports port 80 # http
    acl Safe_ports port 21 # ftp
    acl Safe_ports port 443 # https
    acl Safe_ports port 70 # gopher
    acl Safe_ports port 210 # wais
    acl Safe_ports port 1025-65535 # unregistered ports
    acl Safe_ports port 280 # http-mgmt
    acl Safe_ports port 488 # gss-http
    acl Safe_ports port 591 # filemaker
    acl Safe_ports port 777 # multiling http
    acl Safe_ports port 631 # cups
    acl Safe_ports port 873 # rsync
    acl Safe_ports port 901 # SWAT
    #
    acl purge method PURGE
    #
    acl CONNECT method CONNECT
    # довереные адреса
    acl trusted_host src x.x.x.x/32
    # авторизованные пользователи
    acl password proxy_auth REQUIRED
    # настройка Списков доступа
    # разрешаем localhost
    http_access allow manager localhost
    http_access deny manager
    http_access allow purge localhost
    http_access deny purge
    http_access deny !Safe_ports
    http_access deny CONNECT !SSL_ports
    http_access allow localhost
    # пропускаем довереные адреса
    http_access allow trusted_host
    # пропускаем авторизованных пользователей
    http_access allow password
    # запрещаем все остальное
    http_access deny all
    # общий кэш для локалки
    icp_access allow localnet
    icp_access deny all
    # работаем на портах
    http_port 5190
    http_port 3128
    # default
    #
    hierarchy_stoplist cgi-bin ?
    #
    access_log /var/log/squid/access.log squid
    #
    refresh_pattern ^ftp: 1440 20% 10080
    refresh_pattern ^gopher: 1440 0% 1440
    refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
    refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880
    refresh_pattern . 0 20% 4320
    #
    acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
    upgrade_http0.9 deny shoutcast
    #
    acl apache rep_header Server ^Apache
    #
    broken_vary_encoding allow apache
    #
    extension_methods REPORT MERGE MKACTIVITY CHECKOUT
    #
    hosts_file /etc/hosts
    coredump_dir /var/spool/squid

    Схема контроля доступа в Squid достаточно развита и тяжела для понимания некоторым людям. Она состоит из двух различных компонентов: элементов ACL и списков доступа. Список доступа состоит из директивы allow или deny и указанных вслед за ней элементов ACL.

    Перезапускаем squid:
    /etc/init.d/squid restart


    Немного теории:


    Элементы ACL

    Замечание: Информация, представленная здесь верна для версии 2.4.

    Squid-у известны следующие типы элементов ACL:


    • src: IP-адрес источника (клиент)

    • dst: IP-адрес назначения (сервер)

    • myip: локальный IP-адрес клиентского соединения

    • srcdomain: имя домена источника (клиент)

    • dstdomain: имя домена назначения (сервер)

    • srcdom_regex: шаблон регулярного выражения источника (клиент)

    • dstdom_regex: шаблон регулярного выражения назначения (сервер)

    • time: время дня и день недели

    • url_regex: шаблон регулярного выражения для URL

    • urlpath_regex: шаблон регулярного выражения для части URL, исключая протокол и имя хоста

    • port: номер порта назначения (сервер)

    • myport: номер локального порта, куда подключается клиент

    • proto: тип протокола передачи (http, ftp, etc)

    • method: метод HTTP-запроса (get, post, etc)

    • browser: шаблон регулярного выражения, совпадающего с заголовком user-agent из запроса

    • ident: строка совпадения с именем пользователя

    • ident_regex: шаблон регулярного выражения имени пользователя

    • src_as: номер Автономной Системы источника (клиент)

    • dst_as: номер Автономной Системы назначения (сервер)

    • proxy_auth: аутентификация пользователя через внешний процесс

    • proxy_auth_regex: регулярное выражение аутентификации пользователя через внешний процесс

    • snmp_community: строка SNMP-сообщества

    • maxconn: ограничение максимального кол-ва соединений с одного клиентского IP-адреса

    • req_mime_type: шаблон регулярного выражения для заголовка content-type запроса

    • arp: Ethernet (MAC)-адрес

    Заметьте:

    Не все элементы ACL могут быть использованы со всеми видами списков доступа (описаны ниже). К примеру, snmp_community предназначено для использования только совместно с snmp_access. Типы src_as и dst_as используются только в списках доступаcache_peer_access.

    Тип arp элемента ACL требует специально опции --enable-arp-acl. Кроме того, код ARP ACL портируется не на все операционные системы. Это работает на Linux, Solaris, и некоторых *BSD системах.

    Элемент ACL SNMP и список доступа требуют конфигурационной опции --enable-snmp .

    Некоторые элементы ACL могут вносить задержки в работу кеша. Например, использование src_domain и srcdom_regex требует обратного преобразования клиентского IP. Это преобразование вносит некоторую задержку в обработку запроса.

    Каждый элемент ACL обозначается уникальным именем. Имя элемента ACL содержит список значений. Когда проверяется совпадения для нескольких значений, используется логическое "ИЛИ". Другими словами, элемент ACL совпал, когда совпало одно из значений.

    Вы не можете указывать одинаковое имя для двух различных типов элементов ACL. Это вызовет синтаксическую ошибку.

    Вы можете присваивать различные значения одному и тому же ACL в различных строках. Squid объединит их в один список.

    Списки доступа

    Существуют следующие типы списков доступа:


    • http_access: разрешает доступ HTTP-клиентам (броузерам) к порту HTTP. Это основной тип списка контроля доступа.

    • icp_access: разрешает братским кешам опрашивать ваш кеш по ICP.

    • miss_access: разрешает определенным клиентам передавать cache misses через ваш кеш.

    • no_cache: объявляет ответы, которые не должны кешироваться.

    • redirector_access: контролирует, какие запросы должны пройти через процесс редиректора.

    • ident_lookup_access: контролирует, какие запросы требуют Ident lookup.

    • always_direct: контролирует, какие запросы всегда должны посылаться напрямую к серверу назначения.

    • never_direct: контролирует, какие запросы никогда не должны посылаться напрямую к серверу назначения.

    • snmp_access: контролирует доступ клиентов к кешу по SNMP.

    • broken_posts: определяет запросы, для которых squid добавляет дополнительный CRLF после тел сообщений POST как того требуют некоторые неверно работающие сервера.

    • cache_peer_access: контролирует, какие запросы должны быть переданы соседскому кешу (peer).

    Замечание:

    Правило списка доступа состоит из слова allow или deny, с последующим указанием списка имен элементов ACL.

    Список доступа состоит из одного или более правил списков доступа.

    Правила списков доступа проверяются в порядке их объявления. Поиск по списку прекращается, как только одно из правил совпадает.

    Если правило содержит несколько элементов ACL, используется логическое И. Другими словами, все элементы ACL, указанные в этом правиле должны совпасть, чтобы правило сработало. Это значит, что есть возможность написать правило, которое никогда не сработает. К примеру, номер порта никогда не может быть равен 80 И 8000 одновременно.

    Если ни одно из правил не сработало, по умолчанию будет произведено действие обратное указанному в последнем правиле списка. Поэтому хорошей идеей будет явно указать действие по умолчанию. Наилучший выбор для этого - ACL all. Например:


            acl all src 0/0
            http_access deny all
    
    

    Как мне разрешить моим клиентам использовать кеш?

    Объявите ACL, описывающий IP-адреса клиентов. К примеру:


            acl myclients src 172.16.5.0/24
    

    Далее разрешите доступ этим клиента при помощи списка http_access:
            http_access allow myclients
    

    Как мне настроить Squid, чтобы он не кешировал определенный сервер?


            acl someserver dstdomain .someserver.com
            no_cache deny someserver
    
    

    Как мне организовать ACL списка запрета?

    Предположим, к примеру, что вы желаете избавить пользователей от доступа к рецептам.

    Первый способ - запретить любой URL, содержащий слова ``cooking'' или ``recipe.'' Вы могли бы использовать следующую конфигурацию:


            acl Cooking1 url_regex cooking
            acl Recipe1 url_regex recipe
            http_access deny Cooking1
            http_access deny Recipe1
            http_access allow all
    

    url_regex обозначает - искать указанное вами регулярное выражение в поступившем URL. Заметьте, что это регулярное выражение чувствительно к регистру символов, т.е. URL, содержащие ``Cooking'' не будут запрещены.

    Другой путь - запретить доступ к определенным серверам, если известно что они хранят рецепты. К примеру:


            acl Cooking2 dstdomain gourmet-chef.com
            http_access deny Cooking2
            http_access allow all
    

    dstdomain значит искать строку ``gourmet-chef.com.'' и имени хоста в URL. Заметьте, что когда в URL используется IP-адрес (вместо имени домена), Squid-1.1 выполняет смягченный контроль доступа(?). Если имя домена для IP-адреса было сохранено Сквидом в ``FQDN cache,'' то Squid может сравнивать домен назначения с контролем доступа. Однако, если домен недоступен немедленно, Squid разрешит запрос и сделает преобразование IP-адреса, которое будет доступно для будущих запросов.

    Как мне блокировать доступ к кешу определенным пользователям и группам?

    Ident

    Вы можете использовать ident lookups чтобы разрешить доступ к вашему кешу определенным пользователям. Это потребует запуска процесса ident server на клиентской машине(ах). В вашем конфигурационном файле squid.conf вам необходимо будет написать нечто подобное:


            ident_lookup on
            acl friends user kim lisa frank joe
            http_access allow friends
            http_access deny all
    

    Proxy Authentication

    Другая возможность - использование прокси-аутентификации. При этой схеме вы назначаете имена пользователей и пароли индивидуально. При первом использовании прокси пользователю придет запрос на аутентификацию посредством имени пользователя и пароля.

    В Squid вер.2 аутентификация производится через внешний процесс. Информацию о том как это настроить это см. в разделе Настройка аутентиикации.

    А у вас есть CGI-программа, позволяющая пользователям менять свой пароль доступа к прокси?

    Pedro L Orso переделал htpasswd от Apache в CGI-скрипт, называемый chpasswd.cgi.

    Типичные ошибки

    Логическое И/ИЛИ

    Вы возможно уже заметили (и были разочарованы), что фактически вы не можете комбинировать контроли доступа при помощи конструкций ``и'', ``или.'' Эти операции уже встроены в схему контроля доступа, это одна из основополагающих вещей, которую вы должны усвоить.


    • Все элементы, указанные в данном acl объединяются при помощи логического "ИЛИ".

    • Все элементы, указанные в access объединяются при помощи логического "И". т.к. http_access and icp_access.

    К примеру, следующая конфигурация контроля доступа никогда не будет работать:


            acl ME src 10.0.0.1
            acl YOU src 10.0.0.2
            http_access allow ME YOU
    
    

    Для того, чтобы запрос был разрешен, он должен совпасть и с acl ``ME'' И acl ``YOU''. Это невозможно, т.к. IP-адрес в данном случаю может совпасть либо с одним, либо с другим acl. Это должно быть заменено на:
            acl ME src 10.0.0.1
            acl YOU src 10.0.0.2
            http_access allow ME
            http_access allow YOU
    
    

    Такая конструкция тоже должна работать:
            acl US src 10.0.0.1 10.0.0.2
            http_access allow US

    перепутанные allow/deny

    Я перечитал несколько раз мой squid.conf, поговорил с коллегами, почитал FAQ и документацию по Squid Docs и никак не могу понять, почему следующее не работает.

    Я успешно подключаюсь к cachemgr.cgi с нашего web-сервера, но хотелось бы использовать MRTG для мониторинга различных параметров нашего прокси. Когда я пытаюсь использовать 'client' или GET cache_object с машины, на которой работает прокси, то всегда получаю "доступ запрещен".


            acl manager proto cache_object
            acl localhost src 127.0.0.1/255.255.255.255
            acl server    src 1.2.3.4/255.255.255.255
            acl all src 0.0.0.0/0.0.0.0
            acl ourhosts src 1.2.0.0/255.255.0.0
    
            http_access deny manager !localhost !server
            http_access allow ourhosts
            http_access deny all
    

    Приведенная здесь задача состоит в том, чтобы разрешить запросы кеш-менеджера с адресов localhost и server и запретить все остальные. Такая политика описывалась правилом:


            http_access deny manager !localhost !server

    Проблема состоит в разрешении запроса, правило доступа не срабатывает. К примеру, если IP-адрес источника localhost, тогда ``!localhost'' - ложь и правило доступа не срабатывает, Squid продолжает проверять другие правила. Запросы к кеш-менеджеру с адреса serverработают, т.к. server находится в подсети ourhosts, сработает второе правило и запрос будет разрешен. Это значит также, что любой запрос кеш-менеджера из ourhosts будет разрешен.

    Чтобы необходимая политика работала корректно, правила доступа должны быть переписаны следующм образом


            http_access allow manager localhost
            http_access allow manager server
            http_access deny manager
            http_access allow ourhosts
            http_access deny all
    
    

    Если вы используете miss_access, не забывайте также добавить правило miss_access для кеш-менеджера:
            miss_access allow manager

    Вы можете быть обеспокоены тем, что пять правил взамен трех могут нанести удар по качеству работы кеша. Исходя и нашего опыта, можно сказать, что этого не произойдет. Squid в состоянии поддерживать достаточное количество проверок контроля доступа без снижения качества работы. Можете проверить это самостоятельно.

    Различия между src и srcdomain типами ACL.

    Для типа ACL srcdomain Squid делает обратное преобразование клиентского IP-адреса и проверяет соответствие результата домену, описанному в строке acl. Для типа ACL src Squid вначале преобразует имя хоста в IP-адрес и только потом сравнивает с клиентским IP. Тип ACL src предпочтительнее, чем srcdomain, т.к. он не требует преобразования адреса в имя при каждом запросе.

    Я установил собственные контроли доступа, но они не работают! Почему?

    Если ACL-лы - причина ваших проблем и вы не знаете почему они не работают, вы можете воспользоваться этой инструкцией, чтобы отладить их.

    В squid.conf включите отладку для секции 33 на уровне 2. К примеру:


    debug_options ALL,1 33,2
    

    Потом перезапустите Squid.

    Теперь, ваш cache.log должен содержать строку для каждого запроса, которая поясняет запрещен или разрешен запрос и с каким ACL он совпал.

    Если это не дало вам достаточно информации, чтобы избавиться от проблемы, вы можете также включить детальную отладку процесса обработки ACL


    debug_options ALL,1 33,2 28,9
    

    Перезапустите Squid.

    Теперь ваш cache.log должен содержать детальную трассировку всего процесса контроля доступа. Будте внимательны, на каждый запрос будет по несколько строк.

    См. также Отладка Squid

    Какой самый простой способ запретить все адреса назначения кроме одного?


            acl GOOD dst 10.0.0.1
            acl BAD dst 0.0.0.0/0.0.0.0
            http_access allow GOOD
            http_access deny BAD
    

    Squid не распознает мой поддомен

    Есть хитрая проблема с контролем доступа, основанным на имени домена, когда один элемент ACL является поддоменом другого элемента. К примеру, взгляните на такой список:


            acl FOO dstdomain boulder.co.us vail.co.us co.us
    

    Прежде всего - формат списка просто неверен, потому-что первые два элемента (boulder.co.us и vail.co.us) не нужны. Любое имя домена, которое совпадает с первыми двумя элементами, совпадет и с последним (co.us). Хорошо, но почему это происходит ?

    Корень проблемы в структуре данных для индексирования доменных имен в списках контроля доступа. Squid использует Splay trees для списка доменных имен. Как и другие структуры данных в виде дерева, алгоритм поиска требует функции сравнения, которая возвращает -1, 0 или +1 для любой пары ключей (доменных имен). Это подобно тому как работает strcmp().

    Проблема в том, что нельзя сказать, что co.us больше чем, равно или меньше чем boulder.co.us.

    К примеру, если вы утверждаете, что co.us МЕНЬШЕ чем fff.co.us, то алгоритм поиска по Splay-дереву может никогда не обнаружить совпадения co.us для kkk.co.us.

    Аналогично, если вы говорите, что co.us БОЛЬШЕ чем fff.co.us, то алгоритм поиска по Splay-дереву может никогда не обнаружить совпадения co.us для bbb.co.us.

    Суть в том, что вы не можете указать значение, которое является поддоменом другого значения. Squid-2.2 сообщит вам, если обнаружит подобное условие.

    Почему Squid запрещает доступ к некоторым портам?

    Это опасно - разрешать Squid соединятся по определенным номерам портов. Демонтсрацией этого может послужить использование Squid кем-либо как SMTP (email) релея. Уверен, что вы знаете, что SMTP релей - один из способов, при помощи кторого спамеры имеют возможность засорять почтовые ящики. Что бы предотвратить релей почты, Squid запрещает запросы в URL которых указан порт номер 25. Для предосторожности другие порты также должны быть блокированы.

    Есть два способа фильтрации по номерам портов: либо разрешить определенные порты, либо запретить определенные порты. По умолчанию Squid использует первый вариант. Вот ACL-лы, которые присутствуют по умолчанию в squid.conf:


            acl Safe_ports port 80 21 443 563 70 210 1025-65535
            http_access deny !Safe_ports
    

    Указанная выше конфигурация блокирует запросы номер порта в URL которых не совпадает со списком. Разрешен список стандартных портов для HTTP, FTP, Gopher, SSL, WAIS, а также непривелигерованых портов.

    Другой подход - запретить опасные порты. Список опасных портов должен выглядеть примерно так:


            acl Dangerous_ports 7 9 19 22 23 25 53 109 110 119
            http_access deny Dangerous_ports
    

    ...и возможно некоторые другие.

    Загляните в файл /etc/services вашей системы, чтобы получить полный список портов и протоколов.

    Как мне разрешить доступ к определенному URL только с одного адреса?

    Этот пример разрешает доступ к special_url только для special_client. Любому другому клиенту доступ к special_url запрещен.


            acl special_client src 10.1.2.3
            acl special_url url_regex ^http://www.squid-cache.org/Doc/FAQ/$
            http_access allow special_client special_url
            http_access deny special_url

    Проблемы с IP ACL-ми, содержащими сложные маски

    Замечание: представленная здесь информация верна для версии 2.3.

    Следующий ACL дает противоречивый или неожиданный результат:


            acl restricted  src 10.0.0.128/255.0.0.128 10.85.0.0/16
    

    Причина в том, что IP-список доступа помещается в структуру данных в виде ``splay''-дерева. Это дерево требует сортировки ключей. Когда вы указываете сложную или нестандартную маску (255.0.0.128), это приводит к неверной работе функции сравнивающей пару адрес/маска.

    Лучшее решение избавится от проблемы - использовать отдельные имена ACL для каждого значения ACL. Например, измените вышеуказанное на :


            acl restricted1 src 10.0.0.128/255.0.0.128
            acl restricted2 src 10.85.0.0/16
    

    При этом, конечно, вам придется переписать ваши правила http_access.

    Могу ли я устанавливать ACL-лы, основанные на MAC-адресах, а не на IP?

    Да, для некоторых операционных систем. В Squid это называется ``ARP ACLs'' и поддерживается на Linux, Solaris и возможно для BSD вариантов.

    ЗАМЕЧАНИЕ: Squid может определить MAC-адрес клиента только для своей подсети. Если клиент находится в другой подсети, Squid не сможет найти его MAC-адрес.

    Чтобы использовать контроль доступа по ARP (MAC), вам прежде всего необходимо скомпилировать Squid c поддержкой этой возможности. Это делается при помощи конфигурационной опции --enable-arp-acl:


    % ./configure --enable-arp-acl ...
    % make clean
    % make
    

    Если src/acl.c не компилируется, значит возможно ARP ACL не поддерживается вашей системой .

    Если все откомпилировалось, вы можете добавить несколько строк ARP ACL в ваш squid.conf:


    acl M1 arp 01:02:03:04:05:06
    acl M2 arp 11:12:13:14:15:16
    http_access allow M1
    http_access allow M2
    http_access deny all

    Могу ли я ограничить количество соединений для клиента?

    Да, используйте ACL типа maxconn совместно с http_access deny. К примеру:


    acl losers src 1.2.3.0/24
    acl 5CONN maxconn 5
    http_access deny 5CONN losers
    

    Учитивая вышеописанную конфигурацию, когда клиент, чей IP-адрес находится в сети 1.2.3.0/24, попытается установить 6 или более соединений за одни раз, Squid вернет сообщение о ошибке. Пока вы не используете возможности deny_info, сообщение о ошибке будет звучать как ``access denied.''

    ACL типа maxconn требует использования client_db . Если вы отключили client_db (к примеру, использовав client_db off) то ACL maxconn не будет работать.

    Заметьте, что ACL типа maxconn достаточно специфичен из-за использования сравнения "меньше чем". ACL считается совпавшим, когда количество установленных соединений больше величины, которую вы указали. Исходя из этого вы вряд ли захотите использовать ACL типа maxconn в http_access allow.

    Заметьте также, что вы вы должны объявлять maxconn совместно с типом пользователя (ident, proxy_auth) раньше, чем объявляется тип по IP-адресу.

    Я пытаюсь запретить доступ к foo.com, но это не срабатывает.

    В Squid-2.3 мы изменили схему, по которой Squid определяет совпадение поддоменов. Есть разница между .foo.com и foo.com. В первом случае описано соответствие любого домена в foo.com, во втором - это только точное соответствие ``foo.com'' . Т.е., если вы хотите запретить bar.foo.com, вы должны указать


    acl yuck dstdomain .foo.com
    http_access deny yuck
    

    Я хочу изменить или создать собственное сообщение о ошибке.

    Вы можете изменять существующие сообщения об ошибках как описано в Пользовательские сообщения об ошибках. Вы также можете создавать новые сообщения о ошибках и использовать их совместно с опцией deny_info.

    К примеру, предположим, что вы хотите, чтобы ваши пользователи видели специальное сообщение, когда их запрос совпадает с вашим списком порно. Прежде всего создайте файл с именем ERR_NO_PORNO в директории /usr/local/squid/etc/errors. Этот файл должен содержать нечто подобное:


    <p>
    Our company policy is to deny requests to known porno sites.  If you
    feel you've received this message in error, please contact
    the support staff (support@this.company.com, 555-1234).
    

    Далее, установите следующий контроль доступа:


    acl porn url_regex "/usr/local/squid/etc/porno.txt"
    deny_info ERR_NO_PORNO porn
    http_access deny porn
    (остальные опции http_access ...)
    Метки: ,

    Мониторинг состояния серверов с помощью Munin
    я - ВИКИНГ
    viking_k
    Munin — это легкий сетевой инструмент мониторинга ресурсов. Позволяет собирать данные с нескольких серверов одновременно и отображать все в легковесных красивых графиках. На графиках можно легко отслеживать все прошедшие события сервера, нагрузку и т.д. Статья посвящена настройки munin и решение возможных проблем при установки в различных случаях.

    1) Устанавливаем:
    apt-get install munin munin-node munin-plugins-extra libio-all-lwp-perl
    Пакет munin — отвечает за сбор информации от munin-node и генерацию необходимых графиков. Устанавливается только на ту машину, где будут просматриваться отчеты;
    munin-node — сервер munin, служит для сбора необходимой информации с системных компонентов и передачи её munin;
    munin-plugins-extra — дополнительные плагины проверки производительности служб, таких как DNS, DHCP, Samba, memcached, hddtemp и т.д.;
    libio-all-lwp-perl — необходим для нормальной работы сбора информации с apache или nginx, если не собираетесь этого делать, можно пакет не ставить.
    Одним из условий работы клиентской части munin является наличие любого установленного web сервера.
    Процесс работы утилит довольно прост. Munin запускается с помощью cron через заданный промежуток времени и выполняет опрос всех настроенных munin-node на серверах и строит графики. Правило cron находится по этому пути /etc/cron.d/munin и содержит следующие данные:
    [/etc/cron.d/munin]
    /etc/cron.d/munin

    # cron-jobs for munin
    #
    MAILTO=root
    # каждые 5 минут
    */5 * * * *     munin if [ -x /usr/bin/munin-cron ]; then /usr/bin/munin-cron; fi
    14 10 * * *     munin if [ -x /usr/share/munin/munin-limits ]; then /usr/share/munin/munin-limits --force --contact nagios --contact old-nagios; fi


    2) Далее настраиваем серверную часть, т.е. где установлен пакет munin-node.

    Правим файл:
    [/etc/munin/munin-node.conf]
    /etc/munin/munin-node.conf

    # указываем ip адреса с которых возможно подключение
    # можно не указывать если задан cidr_allow
    allow ^127.0.0.1$
    allow ^192.168.10.3$
    # указываем подсети с которых разрешено подключениеё
    cidr_allow 127.0.0.1/32
    cidr_allow 192.0.2.0/24
    # задаем запрещенную подсеть
    cidr_deny  192.0.2.42/32
    # ip адрес интерфейса на котором будет работать munin-node
    host *

    # порт на котором будет работать munin-node
    port 4949
    Для применения настроек, перезапускаем munin-node

    /etc/init.d/munin-node restart

    3) Запускаем плагины

    Все работающие плагины находятся в /etc/munin/plugins. Все остальные плагины лежат в папке /usr/share/munin/plugins/. Нужные плагины добавляются созданием символической ссылки на него. К примеру:

    ln -s /usr/share/munin/plugins/bind9 /etc/munin/plugins/bind9
    ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_fan
    ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp
    ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_volt
    ln -s /usr/share/munin/plugins/port_ /etc/munin/plugins/port_ssh
    ln -s /usr/share/munin/plugins/ping_ /etc/munin/plugins/ping_10.90.90.2

    Удаление плагина решается простым удалением ссылки на плагин:
    rm /etc/munin/plugins/nginx_memory

    Так же возможны более тонкие настройки параметров установленных плагинов. Эти настройки редактируются в поле соответствующему плагину в файле:
    [/etc/munin/plugin-conf.d/munin-node]
    /etc/munin/plugin-conf.d/munin-node

    [amavis]
    group adm
    env.MUNIN_MKTEMP /bin/mktemp -p /tmp/ $1
    env.amavislog /var/log/mail.info
    [apt]
    user root
    [df*]
    env.exclude none unknown iso9660 squashfs udf romfs ramfs debugfs
    env.warning 92
    env.critical 98
    [if_*]
    user root
    [if_err_*]
    user nobody
    [nut_misc]
    env.upsname apc@127.0.0.1
    env.upsc    upsc
    #env.battery_charge.warning  50:
    #env.battery_charge.critical 10:
    [nut_volts]
    env.upsname apc@127.0.0.1
    env.upsc    upsc
    #env.input_voltage.critical  200:
    [multiping]
    env.host 92.211.125.86 ya.ru google.com vk.com youtube.com login.p1.worldoftanks.net
    [mysql*]
    user root
    env.mysqlopts --defaults-file=/etc/mysql/debian.cnf
    env.mysqluser debian-sys-maint
    env.mysqlconnection DBI:mysql:mysql;mysql_read_default_file=/etc/mysql/debian.cnf
    [ping_*]
    #env.ping_args  -c 10
    #env.packetloss.warning  20
    #env.packetloss.critical  90
    [postfix_mailvolume]
    group adm
    env.logfile mail.log
    [dhcpd3]
    user root
    env.leasefile /var/lib/dhcp/dhcpd.leases
    env.configfile /etc/dhcp/dhcpd.conf
    env.filter  ^10\.
    env.critical 0.95
    env.warning 0.9
    [munin_stats]
    user munin
    group munin

    так же иногда приходилось влазить в код самих плагинов, в фалах плагинов есть специальная облась config:
    [nano /etc/munin/plugins/nut_volts]
    nano /etc/munin/plugins/nut_volts

    #!/usr/bin/perl -w
    # -*- cperl -*-
    ...

    my %graph =  (
    'input_voltage' => {
    label => 'input',
    type => 'GAUGE',
    draw => 'LINE2',
    warning => '',
    critical => '200:'
    },
    'input_voltage_maximum' => {
    label => 'max input seen',
    type => 'GAUGE',
    draw => 'LINE1',
    warning => '',
    critical => ''
    },
    'input_voltage_minimum' => {
    label => 'min input seen',
    type => 'GAUGE',
    draw => 'LINE1',
    warning => '',
    critical => ''
    },
    'output_voltage' => {
    label => 'output',
    type => 'GAUGE',
    draw => 'LINE2',
    warning => '',
    critical => ''
    }
    );
    if ( defined $ARGV[0] and $ARGV[0] eq 'config' ) {
    print "graph_title UPS Voltages - $config{upsname}\n";
    print "graph_category SENSORS\n";
    print "graph_args -l 115\n";
    print "graph_vlabel Volts\n";
    foreach my $key (keys %graph) {
    print "$key.label $graph{$key}->{label}\n";
    print "$key.type $graph{$key}->{type}\n";
    print "$key.draw $graph{$key}->{draw}\n";
    print "$key.warning $graph{$key}->{warning}\n";
    print "$key.critical $graph{$key}->{critical}\n";
    }
    } else {
    &fetch_values;
    }

    или
    [nano /etc/munin/plugins/ping_<IP>]
    nano /etc/munin/plugins/ping_<IP>

    #!/bin/sh
    # -*- sh -*-
    ...
    if [ "$1" = "config" ]; then
    echo graph_title $V ping times to $host
    echo 'graph_args --base 1000 -l 0'
    echo 'graph_vlabel roundtrip time (seconds)'
    echo 'graph_category ping'
    echo 'graph_info This graph shows ping RTT statistics.'
    echo "ping.label $host"
    echo "ping.info Ping RTT statistics for $host."
    echo 'packetloss.label packet loss'
    echo 'packetloss.graph yes'
    echo 'packetloss.warning 20'
    echo 'packetloss.critical 90'
    print_warning ping
    print_warning packetloss
    print_critical ping
    print_critical packetloss
    exit 0
    fi

    или
    [nano /etc/munin/plugins/if_lan]
    nano /etc/munin/plugins/if_lan

    #!/bin/bash
    # -*- sh -*-
    ...

    case $1 in
    config)
    echo "graph_order down up"
    echo "graph_title $INTERFACE traffic"
    echo 'graph_args --base 1000'
    echo 'graph_vlabel bits in (-) / out (+) per ${graph_period}'
    echo 'graph_category interfaces'
    echo "graph_info This graph shows the traffic of the $INTERFACE network interface. Please note that the traffic is shown in bits per second, not bytes. IMPORTANT: On 32-bit systems the data source for tis plugin uses 32-bit counters, which makes the plugin unreliable and unsuitable for most 100-Mb/s (or faster) interfaces, where traffic is expected to exceed 50 Mb/s over a 5 minute period.  This means that ths plugin is unsuitable for most 32-bit production environments. To avoid this problem, use the ip_ plugin instead.  There should be no problems on 64-bit systems running 64-bit kernels."
    echo 'down.label Recieve'
    echo 'down.type DERIVE'
    echo 'down.graph yes'
    echo 'down.cdef down,8,*'
    echo 'down.min 0'
    echo 'up.label Trancieve'
    echo 'up.type DERIVE'
    #echo 'up.negative down'
    echo 'up.cdef up,8,*'
    echo 'up.min 0'
    print_warning down
    print_warning up
    print_critical down
    print_critical up
    findspeed
    exit 0
    ;;
    esac
    изменяя конфигурацию можно перемещать отображение плагинов по разным категориям на web-морде, а также изменять внешний вид графиков. (!) Вносить изменения в код необходимо по крайней необходимости, но к сожалению наступет момент когда ни изменеие /etc/munin/plugin-conf.d/munin-node, ни изменение /etc/munin/munin.conf не приносят желаемого результата.

    управление плагинами возможно с помощию следующих команд:
    munin-node-configure - выводит на экран список всех плагинов и какие из них запущены в данный момент
    [подробнее]
    Plugin                     | Used | Extra information        
    ------                     | ---- | -----------------        
    hddtemp_smartctl           | yes  |                          
    hddtempd                   | no   |                          
    if_                        | yes  | wan lan com tmp
    ping_                      | yes  | 10.90.90.90
    munin-run nut_misc - опрашивает и выводит все переменные которые мониторятся
    [подробнее]
    battery_charge.value 100
    battery_runtime.value 302.4
    battery_voltage.value 27.2
    input_frequency.value
    ups_load.value 8
    ups_temperature.value
    munin-run nut_misc config - выводит конфигурацию плагина
    [подробнее]
    graph_title UPS Misc - apc@127.0.0.1
    graph_category SENSORS
    ups_temperature.label temp - C
    ups_temperature.type GAUGE
    ups_temperature.draw LINE2
    input_frequency.label input freq - Hz
    input_frequency.type GAUGE
    input_frequency.draw LINE2
    battery_charge.label charge - %
    battery_charge.type GAUGE
    battery_charge.draw LINE2
    ups_load.label load - %
    ups_load.type GAUGE
    ups_load.draw LINE2
    battery_runtime.label runtime - min
    battery_runtime.type GAUGE
    battery_runtime.draw LINE2
    battery_voltage.label batt voltage - V
    battery_voltage.type GAUGE
    battery_voltage.draw LINE2
    munin-cron - выполняет регулярный опрос нод

    4) Настройка клиентской части
    производится редактированием файла:
    [nano /etc/munin/munin.conf]
    nano /etc/munin/munin.conf

    # (Exactly one) directory to include all files from.
    includedir /etc/munin/munin-conf.d

    # отправка сообщений warning critical на mail
    contacts admin
    contact.admin.command mail -s "Munin notification ${var:host}" user@domain.ru
    contact.admin.always_send warning critical
    # Ноды
    [localhost]
    address 127.0.0.1
    use_node_name yes
    # if monitor
    # 10.000.000 = 10 Mb
    if_lan.up.warning      50000000
    if_lan.up.critical     50000000
    if_lan.down.warning    20000000
    if_lan.down.critical   50000000
    if_com.up.warning      20000000
    if_com.up.critical     50000000
    if_com.down.warning    20000000
    if_com.down.critical   50000000
    if_wan.up.warning      20000000
    if_wan.up.critical     50000000
    if_wan.down.warning    50000000
    if_wan.down.critical   50000000
    # всего 8 ядер = 800%, а в простое 400%
    cpu.idle.warning  400:
    cpu.idle.critical 100:
    # 4294967296 = 4*1024*1024*1024 = 4 Gb
    memory.free.warning  4294967296:
    memory.free.critical 2147483648:
    # слишком маленький uptime
    uptime.uptime.warning  4:
    uptime.uptime.critical 1:
    # загрузка системы
    load.load.warning 5
    # UPS
    #nut_misc.battery_charge.warning  50:
    #nut_misc.battery_charge.critical 10:

    [server02]
    address 192.168.x.2

    Вообще параметры warning и critical следующего вида:
    Value min:max, min: or :max
    Allowed characters [0-9:.-]

    5)Настравиваем web доступ к munin.

    Доступ к статистике через Apache:

    Если у Вас установлен apache2, то при установки munin к его настройкам автоматически добавится конфиг файл виртуалхоста для доступа к мониторингу. Web интерфейс будет доступен по адресу http://localhost/munin и только с локального компьютера. Конфиг Apache для Munin находится в /etc/apache2/conf.d/munin (на самом деле это символическая ссылка на /etc/munin/apache.conf). Он определяет алиес Munin для данных мониторинга (HTML), которые сохраняются в /var/cache/munin/www. Таким образом сможем получить доступ к мониторингу со всех виртуальных хостов на сервере используя относительный путь /munin, например example.com/munin. Редактируем apache.conf:nano
    [nano /etc/munin/apache.conf]
    nano /etc/munin/apache.conf
    Alias /munin /var/cache/munin/www

    Order allow,deny
    Allow from all
    Options None

    ExpiresActive On
    ExpiresDefault M310

    Загружаем новые настройки apache:
    /etc/init.d/apache reload
    Установка пароля для доступа к интерфейсу munin с помощью .htaccess:
    Способ не работает при работе связки apache + nginx. В этом случае необходимо настраивать только nginx. Об этом ниже.
    Создаем файл с паролем с помощью утилиты htpasswd из пакета apache2-utils:
    htpasswd -c /etc/munin/munin-htpasswd admin
    Дописываем в файл  еще одного пользователя:
    htpasswd /etc/munin/munin-htpasswd admin2

    Вводим 2 раза пароль, после чего файл создастся. Затем правим:
    [nano /etc/munin/apache.conf]
    nano /etc/munin/apache.conf

    AuthUserFile /etc/munin/munin-htpasswd
    AuthName "Munin"
    AuthType Basic
    require valid-user
    Загружаем новые настройки apache:
    /etc/init.d/apache reload


    Настройка Nginx:
    Для связки apache + nginx необходимо делать то же самое. Производится настройка только nginx, а apache не нужен. Необходимо удалить файл /etc/apache2/conf.d/munin. Следовательно нет необходимости редактировать файла apache.conf.
    Для открытия доступа к munin необходимо прописать дополнительную локаль к нужному хосту, ну или в дефолтный файл. От этого зависит по какому адресу будет доступен интерфейс munin.

    И вставляем следующий код:
    nano /etc/nginx/sites-enabled/наш_сайт   или   nano /etc/nginx/conf.d/default.conf

    location ^~ /munin {
    alias /var/cache/munin/www;
    }
    Проверяем корректность настройки:
    /etc/init.d/nginx configtest

    Если что то не корректно, то исправляем, и проверяем снова. Загружаем новые настройки:
    /etc/init.d/nginx reload
    Создаем файл с паролем так же, как описано выше в случае с apache. Вносим изменения в код локали munin:

    location ^~ /munin {
    alias /var/cache/munin/www;
    auth_basic "Admin Zone";
    auth_basic_user_file /etc/munin/munin-htpasswd;
    }

    Применяем изменения:
    /etc/init.d/nginx reload

    6) Мониторинг

    Настройка мониторинга apache:

    Включаем плагины munin для apache:
    ln -s /usr/share/munin/plugins/apache_accesses /etc/munin/plugins/apache_accesses
    ln -s /usr/share/munin/plugins/apache_processes /etc/munin/plugins/apache_processes
    ln -s /usr/share/munin/plugins/apache_volume /etc/munin/plugins/apache_volumeapache_volume

    Включаем mod_status для apache:
    a2enmod status

    Раскомментируем в файле status.conf строки:
    [nano /etc/apache2/mods-available/status.conf]
    nano /etc/apache2/mods-available/status.conf

    SetHandler server-status
    Order deny,allow
    Deny from all
    Allow from 127.0.0.1 ::1
    ExtendedStatus On

    Применяем изменения:
    /etc/init.d/apache reload

    Если apache2 работает на нестандартном 80-м порте или ссылке, редактируем файл:
    nano /etc/munin/plugin-conf.d/munin-node

    добавляем код, указываем нужный порт и адрес:
    [apache_*]
    env.ports 8080

    Проверить правильность ссылки, можно открыв её, к примеру, с помощью lynx:
    [lynx http://127.0.0.1:8080/server-status?auto]
    Total Accesses: 8605003
    Total kBytes: 279896960
    CPULoad: .000306079
    Uptime: 2273920
    ReqPerSec: 3.78422
    BytesPerSec: 126044
    BytesPerReq: 33307.9
    BusyWorkers: 2
    IdleWorkers: 6
    Scoreboard: _W_.__W__...............................

    Все готово, перезагружаем munin-node:
    /etc/init.d/munin-node restart

    Чтобы проверить, работает ли статистика по apache, выполним команду:
    munin-node-configure --suggest | grep apache

    Вответе необходимо проконтролировать следующие поля, чтобы на против них стояло значение «yes»:
    apache_accesses            | yes  | yes
    apache_processes           | yes  | yes
    apache_volume              | yes  | yes

    Мониторинг Nginx

    Включаем плагины munin для nginx:
    ln -s /usr/share/munin/plugins/nginx_status /etc/munin/plugins/nginx_status
    ln -s /usr/share/munin/plugins/nginx_request /etc/munin/plugins/nginx_request

    Дополняем файл munin-node следующим текстом:

    nano /etc/munin/plugin-conf.d/munin-node

    [nginx*]

    Перезагружаем munin-node:
    /etc/init.d/munin-node restart

    Создаем новый файл виртуалхоста nginx необходимый для сбора статистики:
    [nano /etc/nginx/sites-enabled/munin]
    nano /etc/nginx/sites-enabled/munin

    server {
     listen 127.0.0.1;
     server_name localhost;
     location /nginx_status {
    stub_status on;
    access_log   off;
    allow 127.0.0.1;
    deny all;
     }
    }
    Применяем изменения:
    /etc/init.d/nginx reload

    Мониторинг температуры (sensors)

    Для слежением за температурой имеющихся датчиков, необходим установленный пакет lm-sensors:
    apt-get install lm-sensors
    После его устанвока, запускаем
    sensors-detect

    для поиска датчиков и положительно отвечам на все задаваемые вопросы.

    # sensors
    acpitz-virtual-0
    Adapter: Virtual device
    temp1:        +47.0°C  (crit = +110.0°C)
    coretemp-isa-0000
    Adapter: ISA adapter
    Physical id 0:  +46.0°C  (high = +80.0°C, crit = +85.0°C)
    Core 0:         +43.0°C  (high = +80.0°C, crit = +85.0°C)
    Core 1:         +43.0°C  (high = +80.0°C, crit = +85.0°C)

    Остается включить необходимые плагины для munin. Исходный плагин находится только в одном файле, но нам необходимо создавать симолическую ссылку с правильным именем, для мониторинга вентиляторов, температуры или напряжения. Название ссылки обязятельно должно соотвествовать ниже приведенным.

    ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_fan
    ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_temp
    ln -s /usr/share/munin/plugins/sensors_ /etc/munin/plugins/sensors_volt

    Мониторинг DNS и DHCP

    Добавляем плагин DHCP:
    ln -s /usr/share/munin/plugins/dhcpd3 /etc/munin/plugins/dhcpd3

    Правим файл настроек плагинов:
    [nano /etc/munin/plugin-conf.d/munin-node]
    nano /etc/munin/plugin-conf.d/munin-node

    [dhcpd3]
    user root
    env.leasefile /var/lib/dhcp/dhcpd.leases
    env.configfile /etc/dhcp/dhcpd.conf
    env.filter  ^10\.
    env.critical 0.95
    env.warning 0.9
    Добавляем плагин DNS:
    ln -s /usr/share/munin/plugins/bind9 /etc/munin/plugins/bind9

    Правим файл настроек плагинов:
    [nano /etc/munin/plugin-conf.d/munin-node]
    nano /etc/munin/plugin-conf.d/munin-node

    [bind9]
    env.logfile   /var/log/bind9/query.log

    Правим файл настройки DNS сервера:
    [nano /etc/bind/named.conf]
    nano /etc/bind/named.conf
    # логируем запросы для munin plagin bind9
    logging {
     channel query {
         file "/var/log/bind9/query.log" versions 2 size 1m;
         print-time yes;
         severity info;
     };
     category queries { query; };
    };

    Мониторинг NUT

    Добавляем плагин NUT для мониторинга ИБП:
    ln -s /usr/share/munin/plugins/nut_misc /etc/munin/plugins/nut_misc
    ln -s /usr/share/munin/plugins/nut_volts /etc/munin/plugins/nut_volts

    Правим файл настроек плагинов:
    [nano /etc/munin/plugin-conf.d/munin-node]
    nano /etc/munin/plugin-conf.d/munin-node

    [nut_misc]
    env.upsname apc@127.0.0.1
    env.upsc    upsc
    #env.battery_charge.warning  50:
    #env.battery_charge.critical 10:
    [nut_volts]
    env.upsname apc@127.0.0.1
    env.upsc    upsc
    #env.input_voltage.critical  200:
    , надо отметить что  закоментированные участки  имеют верный синтаксис, но корректно так и не заработали. Поэтому пришлось "инжектировать" этот код в сами плагины так, как это описанно выше в файле /etc/munin/plugins/nut_volts
    Мониторинг PING

    Правим файл настройки ping плагина:
    ln -s /usr/share/munin/plugins/ping_ /etc/munin/plugins/ping_10.90.90.90
    ln -s /usr/share/munin/plugins/multiping /etc/munin/plugins/multiping
    Правим файл настроек плагинов:
    [nano /etc/munin/plugin-conf.d/munin-node]nano /etc/munin/plugin-conf.d/munin-node

    [multiping]
    env.host 92.211.125.86 ya.ru google.com vk.com youtube.com login.p1.worldoftanks.net
    [ping_*]
    #env.packetloss.warning 20
    #env.packetloss.critical 80
    , надо отметить что  закоментированные участки  имеют верный синтаксис, но корректно так и не заработали. Поэтому пришлось "инжектировать" этот код в сами плагины так, как это описанно выше в файле /etc/munin/plugins/ping_
    Метки: ,

    Подключение ИБП к Debian с помощью NUT (Network UPS Tools)
    я - ВИКИНГ
    viking_k

    Установка

    Далее установим NUT:


    sudo apt-get install nut

    Настройка NUT

    NUT может управлять множеством ИБП в сети, но мы будем использовать простую конфигурацию для 1 компьютера. Для этого в файле /etc/nut/nut.conf выставим соответствующий режим:


    MODE=standalone

    В файле /etc/nut/ups.conf укажем параметры подключения к нашему ИБП:



    [apc]
    driver = usbhid-ups
    port = auto
    desc = "UPS host"
    [ippon]
    driver = blazer_usb
    port = auto
    desc = "Ippon IBP"
    default.battery.voltage.high = 13.60
    default.battery.voltage.low = 10.60
    offdelay = 6
    ondelay = 7

    где [apc] - имя нашего ИБП в системе NUT, оно может быть любым;

    driver - имя драйвера для подключения к ИБП

    blazer_serial в зависимости от порта подключения;

    port - имя файла порта, для USB можно просто "auto", для COM1-порта "/dev/ttyS0"

    desc - комментарий;

    default.battery.voltage.high - максимальное напряжение батареи при полном заряде, необходимо для расчета остаточного заряда батареи;

    default.battery.voltage.low - минимальное напряжение батареи при полном разряде;

    offdelay - команда ИБП перейти в режим ожидания


    Пробуем запустить upsdrvctl:
    upsdrvctl start
    Должно появиться что-то вроде:

    Network UPS Tools — UPS driver controller 2.2.2
    Network UPS Tools: 0.29 USB communication driver — core 0.33 (2.2.2)
    Using subdriver: APC HID 0.92Если получаем ошибку could not detach kernel driver from interface 0, то делаем:

    upsdrvctl start
    udevadm control --reload-rules
    udevadm trigger
    После чего снова делаем
    upsdrvctl start

    Далее в файле /etc/nut/upsd.conf мы пропишем контроль доступа:


    ACL all 0.0.0.0/0
    ACL localnet 192.168.1.0/24
    ACL localhost 127.0.0.1/32
    ACCEPT localhost localnet
    REJECT all

    Здесь мы разрешили подключение к службе для локального компьютера и локальной сети, и отвергли всех остальных. Кстати по умолчанию NUT слушает все интерфейсы по 3493 порту.

    Далее заводим пользователей, которые могут контролировать ИБП в файле /etc/upsd.users:


    [имя_пользователя]
    password = пароль_пользователя
    allowfrom = localnet
    upsmon master
    actions = SET
    instcmds = ALL

    где

    allowfrom - параметр определяющий источник подключения;

    upsmon master - параметр дающий права на управление ИБП.

    И последнее, осталось настроить службу мониторинга в файле /etc/nut/upsmon.conf пишем:


    RUN_AS_USER nut
    MONITOR имя_ибп@localhost 1 имя_пользователя пароль_пользователя master
    MINSUPPLIES 1
    POWERDOWNFLAG /etc/killpower
    SHUTDOWNCMD "sbin/shutdown -Ph +0"
    POLLFREQ 5
    POLLFREQALERT 5
    HOSTSYNC 15
    DEADTIME 15
    RBWARNTIME 43200
    NOCOMMWARNTIME 300
    FINALDELAY 5

    где SHUTDOWNCMD "sbin/shutdown -Ph +0" - команда на завершение работы компьютера.

    Все. Теперь запустим nut командой:


    # /etc/init.d/nut start

    можно запросить статус ИБП командой:


    upsc apc@127.0.0.1

    в ответ вам система выдать примерно следующее:


    
    

    battery.charge: 100
    battery.charge.low: 10
    battery.charge.warning: 50
    battery.date: 2001/09/25
    battery.mfr.date: 2013/12/24
    battery.runtime: 18144
    battery.runtime.low: 120
    battery.type: PbAc
    battery.voltage: 27.2
    battery.voltage.nominal: 24.0
    device.mfr: American Power Conversion
    device.model: Back-UPS RS 1500G
    device.serial: 3B1352X01850
    device.type: ups
    driver.name: usbhid-ups
    driver.parameter.pollfreq: 30
    driver.parameter.pollinterval: 2
    driver.parameter.port: auto
    driver.version: 2.6.4
    driver.version.data: APC HID 0.95
    driver.version.internal: 0.37
    input.sensitivity: medium
    input.transfer.high: 294
    input.transfer.low: 176
    input.voltage: 239.0
    input.voltage.nominal: 230
    ups.beeper.status: enabled
    ups.delay.shutdown: 20
    ups.firmware: 878.L4 .I
    ups.firmware.aux: L4
    ups.load: 8
    ups.mfr: American Power Conversion
    ups.mfr.date: 2013/12/24
    ups.model: Back-UPS RS 1500G
    ups.productid: 0002
    ups.realpower.nominal: 865
    ups.serial: 3B1352X01850
    ups.status: OL
    ups.test.result: No test initiated
    ups.timer.reboot: 0
    ups.timer.shutdown: -1
    ups.vendorid: 051d

    Метки: , ,

    Как превратить Ubiquiti UniFi в обычную точку доступа (на ОС Linux)
    я - ВИКИНГ
    viking_k
    Ubiquiti UniFi в обычных условия может работать только совместно с контроллером установленым на ПК. Но и в этом случае настройки ее крайне бедны.
    Зато есть умельцы, которые выяснили, что используется такой же процессор как у прочих станций, на которые установлена AirOS, т.е. можно собрать дистрибутив AirOS для UniFi. А так же не стоит забывать про OpenWRT и DDwrt.

    Способ первый (по инструкции)
    Для начала сбрасываем станцию к заводским настройкам, это не критично, но чаще всего сбережет некоторое количество нервов и времени. Для этого при подключенном питании нажимаем кнопку RESET и ждем 20 секунд. Дальше подразумевается, что станция имеет IP адрес 192.168.1.20 и логин и пароль «ubnt».

    Скачиваем специально собранную прошивку AirOS:

    Компания Ubiquiti с 2012 года решила сделать аппаратно программную защиту, на сколько мне известно, основывается она на определение MAC адреса сетевого адаптера + идентификатор устройства. Т.е. начиная с версии 5.5 появилась проверка на мак адрес, он должен начинаться на 00:15:6d, 00:27:22 и dc:9f:db. Начиная с версии 5.5.2 еще добавлена проверка на board ID, в станцию впаяли дополнительный чип, т.е. если это не Ubiquiti станция — будет выдавать сообщение:
    This device has been identified as counterfeit.
    AirOS is not licensed for use on this device and has been disabled.
    Please see the Ubiquiti Brand Protection page at www.ubnt.com
    Именно таким образом у меня определялась UniFi AP LR на базе чипа AR7241 с прошивкой собранной на базе SDK версии 5.5.2.
    Так же в интернете все инструкции ссылаются на BZ.v5.2.1.6359.101126.2057.bin или BZ.v5.3.7782.110301.2247.bin, при обновлении этими прошивками UniFi превращалась в тыкву, как далее выяснилось, это слишком старая прошивка, которая не знает сетевого интерфейса на базе чипа AR7241.

    Название UniFi AP (AR7240) UniFi LR или PRO (AR7241)
    BZ.v5.2.1.6359.101126.2057.bin работает убивает
    BZ.v5.3.7782.110301.2247.bin работает убивает
    BZ.v5.5.12536.120806.1601.bin работает работает
    BZ.v5.5.2.14464.130315.0303.bin работает проблема с лицензией
    nv-airos-unifi-bz2-v5.5.2.bin не проверялось работает
    Cкачиваем PuTTY и WinSCP:
    С помощью SCP клиента (по протоколу SCP!) залить прошивку на станцию в каталог /tmp и переименовать в fwupdate.bin, в линуксе будет выглядеть так:
    scp ./BZ.v5.5.12536.120806.1601.bin ubnt@192.168.1.20:/tmp/fwupdate.bin
    Подключаемся по SSH к станции и проверяем подходит ли для неё новая прошивка, вводим команду:
    /sbin/ubntbox fwupdate.real -c /tmp/fwupdate.bin

    если все хорошо — никакого ответа не будет, просто перейдет на следующую строку, в случаи ошибки — выведет «Invalid firmware» и индекс ошибки.
    Если вас все устраивает — вводим команду обновления прошивки:
    /sbin/ubntbox fwupdate.real -m /tmp/fwupdate.bin -d
    ВНИМАНИЕ!!!
    После перепрошивки светодиодные индикаторы могут не работать.
    Через примерно 3-4 минуты станция перезагрузиться и будет отвечать на пинг (в интернете пишут, бывает что длительное время не отвечает, не встречал, если не отвечает через 5 минут — беда).
    Так же много зависит от изначально установленой прошивки на UniFi. Например на последнеей версии firmware 3.2.12 прошивка у меня даже не могла корекктно завершиться.  Пришлось откатываться на более раннюю firmware 1.2.1.
    И даже в этом случае большая вероятность неудачи. И связанно это с защитой которую ставит Ubiquiti.

    Если  через 3-4 минуты станция стала доступна осталось зайти на нее еще раз через SSH и ввести команду:
    cfgmtd -f /usr/etc/system.cfg -w && reboot

    которая по сути сбросить к заводским настройкам, но только уже к тем, которые заложены по умолчанию для AirOS. Возможно, при отсутствии пинга поможет сбросить станцию зажав кнопку RESET на 15-20 секунд.
    Если все прошло успешно, то WEB-интерфейс доступен по адресу http://192.168.1.20/. А по SSH уже начнет принимать непосредственно толька что установленная AirOS.
    Способ первый (наглый)

    На Ubiquiti UniFi есть так называемый режим RECOVERY. Попасть в него можно зажав кнопку RESET и удерживая ее подать питание  на устройство. Через 20 секунд дионы начнут моргать попеременно желтым и зеленым цветами. Это означает что устройство готово принять прошивку.

    Скачиваем специальную программу
    tftp2:



    или средствами tftp клиента windows:

    tftp -i 192.168.1.20 put firmware.bin

    или средствами tftp клиента linux:

    root@ubuntu:tftp 192.168.1.20
    tftp> bin
    tftp> trace
    tftp> put firmware.bin
    Sent 1965199 bytes in 35.2 seconds
    tftp> exit


    А затем спокойно ждем пока устнойство самостоятельно загрузит и установит прошивку. Таким образом можно востановить родную прошивку Ubiquiti UniFi, установить AirOS, а также поставить соответствующие прошивки OpenWRT и DDwrt.

    P.S.

    версию чипа можно узнать так: # cat /proc

    Материалы:
    http://www.kochetov.net.ua/?p=407
    http://asp24.com.ua/blog/kak-prevratit-unifi-v-obychnuyu-tochku-dostupa/
    http://asp24.com.ua/blog/poshagovaya-instruktsiya-po-vosstanovleniyu-ustrostv-ubiquiti-posle-nyeudachno-proshivki/
    http://www.ubnt.su/info/firmware.htm

    P.P.S.

    В моем случае установить AirOS  таки не удалось, из-за защит наделаных Ubiquiti, но отлично встала весьма функциональная OpenWRT.
    Метки: , , , ,

    Установка Munin в Debian для мониторинга сервера.
    я - ВИКИНГ
    viking_k

    Заметка для тех кто в танке и не знает как установить и сконфигурировать бесплатное средство для мониторинга серверов – munin.  Хотите красивые графики? – вы на верном пути.

    Munin – это простейшее удобное средство мониторинга серверов. Простота в использовании/установке и последующей настройки делают munin очень привлекательным продуктом, он уже занял свое место в этой нише, я же в свою очередь давно использую этот софт из за того что достаточно просто можно писать свои плагины. Мунин прекрасное универсальное решение для мониторинга серверов!!!

    Сразу после установки мунина  доступно несколько базовых плагинов которые позволяют следить за основными параметрами сервера, например la, network, cpu, hdd, smta, mysql и все в том духе, так же можно скачать и подключить сторонние плагины с официального сайта (их там очень много, можно подобрать на все случаи жизни).  Всю собранную информацию Munin представляет в виде красивых графиков которые доступны через web интерфейс. Сам мунин написан на языке Perl и использует для хранения и обработки данных RRDTool что вполне разумно.

    Munin состоит из двух частей/приложений, master и node. Уже из названия можно понять какую роль выполняет master и node, мастер это сердце мониторинга он опрашивает свои node и рисует красивые графики, node может быть несколько (из 1 веб морды можно мониторить множество серверов).

    В нашем debian 6 уже весь софт имеется в репо, нужно только найти, поставить и настроить связь между мастером и нодой а так же подключить дополнительные плагины при необходимости.

    Установка Munin в Debian

    Смотрим какие пакеты есть с упоминанием слова munin:

    # aptitude search munin
    p   munin                                                                          - network-wide graphing framework (grapher/gatherer)
    p   munin-common                                                           - network-wide graphing framework (common)
    p   munin-java-plugins                                                      - network-wide graphing framework (java plugins for node)
    p   munin-libvirt-plugins                                                    - Munin plugins using libvirt
    p   munin-node                                                                 - network-wide graphing framework (node)
    p   munin-plugins-extra                                                    - network-wide graphing framework (user contributed plugins for node)

    Ставим сам munin и munin-node (в моем случае для теста все будет на 1 сервере)

    # aptitude install munin munin-node

    Все конфиги располагаются в директории /etc/munin, после успешной установки можно приступать к настройке мастера. На все про все уйдет не более 5 минут =)

    # aptitude search munin
    i   munin                                                                           - network-wide graphing framework (grapher/gatherer)
    i A munin-common                                                           - network-wide graphing framework (common)
    p   munin-java-plugins                                                      - network-wide graphing framework (java plugins for node)
    p   munin-libvirt-plugins                                                    - Munin plugins using libvirt
    i   munin-node                                                                  - network-wide graphing framework (node)
    p   munin-plugins-extra                                                    - network-wide graphing framework (user contributed plugins for node)
    # ls /etc/munin/
    apache.conf  munin.conf  munin-conf.d  munin-node.conf  plugin-conf.d  plugins  templates

    Настройка Munin сервера

    Открываем  в редакторе  munin.conf
    #nano /etc/munin/munin.conf

    ищем строки

    [localhost.localdomain]

    меняем на свой хост, я приведу к такому виду, важно – хост имя должно быть корректное

    [localhost]

    Если вы в будущем захотите добавлять новые ноды то таким же макаром ниже вписываете новые сервера (синтаксис думаю понятен), сохраняете и все,  не нужно не чего перезагружать.

    У меня нету apache поэтому я его доставлю
    aptitude install apache2-mpm-prefork

    Проверим вирт хост для веб морды minin

    # ls /etc/apache2/conf.d/
    charset  localized-error-pages  other-vhosts-access-log  security
    # ls /etc/munin/
    apache.conf  munin.conf  munin-conf.d  munin-node.conf  plugin-conf.d  plugins  templates


    у меня вирт хост мунина не лежит в  /etc/apache2/conf.d/ добавим

    # ls /etc/apache2/conf.d/
    charset  localized-error-pages  munin  other-vhosts-access-log  security
    # cp /etc/munin/apache.conf /etc/apache2/conf.d/munin
    # service apache2 reload

    закомментируйте в /etc/apache2/conf.d/munin

    # Order allow,deny
    # Allow from localhost 127.0.0.0/8 ::1

    или укажите свой ip в Allow from

    иначе доступа не будет – You don’t have permission to access

    Настройка Munin ноды

    # nano /etc/munin/munin-node.conf

    для локал хоста все уже настроено, я раскомментировал только

    host_name localhost

    если вы используете внешнее подключение то нужно прописать ip адрес мастер сервера (дать доступ мастеру что бы он мог забирать инфу с ноды) в таком виде дописывайте ip адрес мастера

    allow ^127.0.0.1

    # service munin-node restart

    идем в браузер http://ip/munin и ждем.

    Можно принудительно запустить опрос нод, так же поможет для отладки

    # su - munin --shell=/bin/bash
    $  /usr/share/munin/munin-update --nofork --debug
    $ exit

    Если все ок то вскоре появятся файлики с графиками в /var/cache/munin/www а тем временем в браузере
    ...честно спизжено отсюда
    Метки: , ,

    Полезные репозитории Debian
    я - ВИКИНГ
    viking_k
    Во-первых существует целая куча сайто генераторов списка репозиториев:
    Во-вторых есть вполне себе официальные репозитории
    или тоже самое но с  yandex зеркала
    В-третих есть много дополнительных репозиториев для отдельно взятого ПО
    B в-четвертых это может быть персональный архив пакетов (PPA) в стиле Ubuntu
    Такие записи появляются автоматически после набора в консоли команды типа:
    #add-apt-repository ppa:webupd8team/sublime-text-3
    Метки: ,

    Добавляем свои DNS на роутер с OpenWRT
    я - ВИКИНГ
    viking_k
    В этой статье будет рассмотрен пример по работе лёгкого DHCP/DNS-сервера dnsmasq. В частности, как задать нужные DNS сервера на роутере.

    Тестовый стенд: TP-Link 741ND ,  прошивка OpenWRT BARRIER BREAKER (14.07, r42625)

    В настройках роутера можно указать путь до файла с настойками DNS серверов cat /etc/config/dhcp

              ...
          config dnsmasq
              option resolvfile '/tmp/resolv.conf'
          ...

    Или в веб интерфейсе:


    (без названия)

    Итак возможные варианты значения:

    1. /tmp/resolv.conf.avto (он же по умолчанию) - этот файл формируется атоматически и содержит DNS сервера которые пришли от провайдара по DHCP. В моем случаее это были сервера РТК
      nameserver 213.135.96.250
      nameserver 213.135.97.131

    2. /tmp/resolv.conf - этот файл так же формируется автоматически демоном dnsmasq. В моем случае это был loopback:
      nameserver 127.0.0.1

    3. /tmp/resolv.conf.my (или любое другой файл) - этот файл должен быть сформерован самостоятельно при загрузке роутера ну например силами своего собственного демона. И писать там можно все что угодно:
      nameserver 8.8.8.8
      nameserver 8.8.4.4
      nameserver 127.0.0.1

    Мне польше понравился 2 путь.  В основном потому было лень придумывать как сохранять файл в /tmp/resolv.conf.my, а уходить далеко от дефолтного /tmp/resolv.conf.avto
    не хотелось.

    Оказалось что файл /tmp/resolv.conf формируется скриптом /etc/init.d/dnsmasq, а в самом начале этого скрипта указываются настройки cat /etc/init.d/dnsmasq
          START=60
          USE_PROCD=1
          PROG=/usr/sbin/dnsmasq
          DNS_SERVERS=""
          DOMAIN=""
          ADD_LOCAL_DOMAIN=1
          ADD_LOCAL_HOSTNAME=1
          CONFIGFILE="/var/etc/dnsmasq.conf"
          HOSTFILE="/tmp/hosts/dhcp"
          TRUSTANCHORSFILE="/usr/share/dnsmasq/trust-anchors.conf"
          ....

    Где и пригодилась переменная DNS_SERVERS в которую я вписал значения "8.8.8.8   8.8.4.4". После перезагрузки демона роутер начал обращаться к нужным мне серверам DNS, а содержимое файла /tmp/resolv.conf приняло следующий вид:
          nameserver 8.8.8.8
          nameserver 8.8.4.4
          nameserver 127.0.0.1
    Метки: , ,

    Подключаем Диск Google в Debian
    я - ВИКИНГ
    viking_k

    Устанавливаем fuse:
    sudo apt-get install fuse python-fuse

    В Ubuntu

    Добавить репозиторий Ubuntu (12.10):
    sudo add-apt-repository ppa:invernizzi/google-docs-fs

    Установить пакеты:
    sudo apt-get update sudo apt-get install google-docs-fs


    В Debian

    Загрузить пакеты google-docs-fs и python-gdata:
    wget -c http://ppa.launchpad.net/invernizzi/google-docs-fs/ubuntu/pool/main/g/google-docs-fs/google-docs-fs_1.0~gdrive_all.deb

    Установить через консоль:
    apt-get install python-gdata
    dpkg -i google-docs-fs_1.0~gdrive_all.deb

    Далее

    Создаем в домашней директории папку gDisk
    mkdir ~/gDisk

    добавить своего пользователя в группу fuse, чтобы тот мог монтировать диски:
    sudo adduser %username% fuse

    и смонтируем диск
    gmount gDisk %username%@gmail.com

    после чего нас попросят ввести пароль от учётной записи

    Метки: , ,

    ImageMagick - мощный консольный графический редактор
    я - ВИКИНГ
    viking_k

    Часто требуется не просто обработать или улучшить изображение, но применить последовательность операций к большому количеству изображений. В этом нам поможет консольный графический редактор ImageMagick.
    Установка и первые шаги
    Устанавливается черзвычайно просто:



    apt-get install imagemagick

    и всё. Но дальше меня лично ждал сюрприз: а где, собственно, программа? На самом деле этот пакет содержит несколько программ: display, animate, identify, convert, montage, mogrify и composite. Здесь я приведу свой скромный опыт работы с основной программой пакета - всемогущей convert.

    С пакетом ImageMagick (во всяком случае в Дебиане) поставляется могучий мануал в PDF на 320 страницах - весьма толковое руководство, но на английском. До его завершения весьма далеко: описаны только опции командной строки, а остальное просто набросано.

    Консольный графический редактор
    У многих моих подоконных товарищей такое словосочетание вызывает когнитивный диссонанс: как графический редактор может бытьконсольным!? Может, и бывает чрезвычайно полезен, когда нужно обработать не одно, а множество изображений, лежащих к тому же в разных каталогах. Естественно, в альтернативной среде приняты наиболее топорные средства решения проблем: тыкать и выделять мышкой, и для каждого файла повторять процедуру. Самые продвинутые слышали об Action в фотошопе, но и это средство - не панацея (а кроме того, требует немалого времени на отладку комбинации действий).

    Ниже - часть используемых мной команд обработки изображений, разбитых по категориям (насколько это возможно).

    Операции с цветом
    Имеется в виду изменение цветовых пространств: RGB/CMYK, grayscale и BW. Всё, что связано с изменением цветов.

    Перевод в оттенки серого
    -colorspace GRAY

    Например: convert -colorspace GRAY tux.jpg tuxConvertGray.jpg

    На самом деле ключ colorspace позволяет переводить изображения между разными цветовыми пространствами: GRAY, OHTA, RGB, Transparent, XYZ, YCbCr, YIQ, YPbPr, YUV или CMYK.

    Перевод в чёрно-белое изображение
    Здесь есть несколько методов: бинаризация по порогу (threshold), с диффузией ошибки (метод Floyd/Steinberg, error diffusion) и локальный адаптивный порог.

    Бинаризация с диффузией ошибки выполняется ключом:
    -dither
    -monochrome
    Вместе с этой опцией следует применять ключи -colors или -monochrome для определения цветового пространства, к которому применяется преобразование.

    Бинаризация по порогу делается при помощи ключа:
    -threshold число
    где число - значение порога.

    Пример: convert -threshold 128 1.png 2.png

    Локальная адаптивная бинаризация по порогу производится при помощи следующего параметра:
    -lat ШиринаxДлина{+-}Смещение{%}
    Здесь имеется в виду область размером ШиринаxДлина, в пределах которой происходит порог. Смещение определяет степень отклонения значений пикселей (в процентах). Данные параметры стоит подбирать с визуальным контролем (запустить ещё и просмотрщик изображений).


    Пример: convert -lat 3x3+5% tux.jpg tuxConvertedLat3x3.jpg

    Постеризация
    Уменьшение количества цветов на изображении:
    -posterize числооттенков
    до числаоттенков приводит к сокращению и "огрублению" оттенков изображения.


    Инвертирование

    Чтобы инвертировать изображение (цветное или полутоновое), надо указать ключ:
    -negate
    Действует для цветых и полутоновых изображений.

    Изменение разрядности изображения
    Чтобы перевести 16-битное изображение в 8-битное, нужно воспользоваться ключом:
    -depth 8
    Кто сказал, что в Линукс нельзя работать с 16-битным цветом?

    Операции с освещённостью
    Всё, что касается освещённости пикселей, без привязки к цветовому пространству: гамма-коррекция, контрастирование.

    Повышение / понижение контраста
    Изменение контрастности изображения достигается:
    -contrast

    +contrast
    При этом -contrast повышает контрастность, а + понижает.

    Пример: convert -contrast tux.jpg tuxConvertedContrast-50.jpg

    Эквализация гистограммы
    Автоматическое контрастирование изображения:
    -equalize
    Производит автоматическую эквализацию гистограммы - алгоритм изменяет гистограмму изображения так, чтобы она была равномерна по светам и теням.

    Нормализация
    Для того, чтобы значения пикселей изображения занимали весь диапазон, следует указать ключ:
    -normalize
    Этим достигается повышение контраста на изображении.

    Гамма-коррекция
    Для гамма-коррекции изображения следует указать ключ:
    -gamma значение
    Значения меньшие 1.0 делают изображение темнее, значения более 1.0 осветляют изображение. Наиболее часто применяемые значения лежат в пределах от 0.8 до 2.3
    Можно применять разные значения гамма-коррекции для разных цветовых каналов, например так: -gamma 1.7/2.3/1.2

    Уровни
    Более тонкая настройка контрастности изображения при помощи уровней:
    -level точкачёрного{,точкабелого}{%}{,значениегаммакоррекции}
    можно указывать как в абсоютных величинах, например -level 10,65000 так и в процентах -level 2%,98%
    По умолчанию гамма стоит равная 1.0 (то есть без гамма-коррекции), но её можно задать, например, так -level 2%,98%,0.8

    Геометрические преобразования
    Здесь я приведу несколько полезных команд, которые позволяют менять масштаб изображения или кадрировать его. Безусловно, вслепую определить точные координаты очень сложно, но ведь никто не воспрещает использовать консольные и графические утилиты вместе?

    Изменить размер изображения
    Можно задать точный размер в пикселях:
    -resize MMMxNNN
    изменить размер изображения на MMMxNNN. При этом плотность изображения сохраняется изначальной.
    Можно задать в процентах:
    -resize 200%
    то есть увелилить в 2 раза.

    Более быстрый, но грубый алгоритм маштабирования:
    -scale число%
    масштабирует изображение в заданном процентном соотношении.

    Кадрировать изображение
    Для кадрирования изображения следует использовать:
    -crop ШиринаxВысота{+-}<ИсходноеХ>{+-}<ИсходноеY>{%}
    Имеется в виду, что требуется вырезать область ШиринахВысота, причём область смещена на значение ИсходноеХ и ИсходноеY пикселей. Значения двух последних параметров - на самом деле просто координата левого верхнего угла области, для которой указаны данные ширины и высоты. Описание дано в терминологии GiMP: если там вызвать диалог кадрирования, то станет понятным, что имеется в виду.

    Пример: convert -crop 95x85+50+12 tux.jpg tuxConvertedCrop.jpg

    Изменить плотность изображения
    Для того, чтобы задать количество пикселей на дюйм, следует воспользоваться ключом:
    -density DPIгоризонтальноеxDPIвертикальное
    -density число
    Первый вариант нужен тогда, когда по вертикали и горизонтали разрешение разное. Второй вариант проще: если нужно задать разрешение, одинаковое в обоих направлениях.

    Поворот изображения
    Чтобы повернуть изображение, указываем:
    -rotate "+-градусы"
    Для того, чтобы повернуть изображение по часовой стрелке, пишем -rotate "+90" для поворота против часовой стрелки, соответственно
    -rotate "-90"
    Если поворот производится на произвольное число градусов, то изображение поворачивается как целое, увеличиваясь для вмещения исходной картинки. Появившиеся области становятся цвета фона, который определяется параметром -fill цвет.

    Несколько слов о заполнении:

    • если надо заполнить цветом по-быстрому и особенно не думать, можно указать именованый цвет (yellow, black, white). Полный их перечень можно получить командой convert -list color

    • если заполнять надо точно известным цветом, можно указать его в формате #RGB (R,G,B are hex numbers, 4 bits each)

    • convert -fill blue ...
      convert -fill "#ddddff" ...
      convert -fill "rgb(65000,65000,65535)" ...


    Фильтры для улучшения изображений
    Приведены алгоритмы размытия / повышения резкости и шумоподавления.

    Размытие по Гауссу
    Чтобы размыть изображение по Гауссу:
    -blur Радиус
    -blur РАДИУСxСИГМА
    Размытие изображения по Гауссу на РАДИУС пикселей. Опционально можно задать степень (стандартное отклонение) - задав СИГМУ.


    Радиальное размытие
    Размыть изображение, "завращав" его вокруг центра, можно:
    -swirl градус
    на заданное количество градусов.

    Удаление спекл-шума
    Простой метод удаления спекл-шума (мультипликативный шум):
    -despeckle
    Действие приводит к лёгкому размытию.

    Выделение краёв
    Для выделения краёв на изображении следует использовать ключ:
    -edge радиус
    Приводит к появлению оконтуренного изображения (по всей видимости, применяется метод Собела).

    Увеличение резкости
    Для того, чтобы изображение стало более резким, можно применить ключ:

    -sharpen РадиусxСигма
    Используется оператор Гаусса, требуется задание радиуса и стандартного отклонения (Сигма)

    Медианная фильтрация
    Для удаления импульсного шума с изображения следует использовать медианную фильтрацию:
    -median радиус
    значение параметра задаёт область оценки шума для алгоритма.


    Нечёткая маска
    Для повышения резкости изображение, особенно на контурах, можно применить нечёткую маску:
    -unsharp РадиусxСигма+величина+порог
    Используется оператор Гаусса, которому требуется задать Радиус и Сигму (для достижения хороших результатов радиус должен быть больше сигмы). По умолчанию 0 и 1.0 соответственно.
    Параметр величина есть процент разницы между оригинальным и нечётким изображением, умолчание 1.0, а порог - величина количественной разницы между изображениями (умолчание 0.05).


    У некоторых пользователей возникает дескрипанс: как же так, типа Unsharp, а повышает резкость? Дело в том, что фильтр получил своё имя потому, что его действие выглядит так, как будто из изображения вычли его нерезкую копию. Никакого вычитания, конечно, не происходит: выполняется свёртка с ядром Гаусса 3х3 пикселей, но это уже другая история.

    Добавление / удаление шума (по ближайшим соседям)
    Шумоподавление выполняется при указании ключа:
    -noise радиус
    Удаление шума с изображения на основе анализа величин значений ближайших пикселей в области заданного радиуса. Пиксель считается шумовым и заменяется на среднее по области, если и только если значение пикселя является максимумом или минимумом в данной области.

    Чтобы добавить шум к изображению, указываем:
    +noise тип
    Можно добавить шумы: Uniform (однородный), Gaussian (Гауссов), Multiplicative (спекл-шум), Impulse (импульсный), Laplacian (Лапласов шум), Poisson (шум Пуассона).

    Вместо заключения
    Мне давно хотелось разобраться с возможностями ImageMagick, а тут выдалось время, когда вся работа сделана, а новой ещё не нагрузили :-) К сожалению, фраза сейчас не актуальна :-)))

    Ссылки
    Мануал в формате PDF я уже упоминал, очень толковая вещь, но занудно написанная и довольно неряшливая. Начальные сведения можно найти у моего забугорного коллеги, продвинутые сведения и приёмы - у орлов из IBM. Товарищ jetxee привёл несколько примеров использования ImageMagick вскриптах. Этого должно хвтатить на первое время.
    Метки: ,

    Wake On Lan в Debian
    я - ВИКИНГ
    viking_k

    Удалённое выключение Linux не представляет особого труда, лишь бы был доступ ssh. А вот с аппаратным включением системы дело обстоит несколько иначе.

    Итак, поговорим о том, что и как необходимо сделать, чтобы удалённо включить компьютер, поддерживающий технологию Wake On Lan.
    Wake On Lan поддерживается практически во всех современных материнских платах. Для того, чтобы иметь возможность разбудить компьютер удалённо, необходимо, чтобы на нём был установлен источник питания ATX версии не ниже 2.01, материнская плата, поддерживающая Wake On Lan (сокращённо WOL), а также сетевая плата с поддержкой этой технологии.

    Настройка:
    Определить, поддерживает ли материнская плата Wake On Lan, можно зайдя в настройки CMOS Setup в раздел настроек управления питанием. Найдите там опцию «Wake On Lan» и убедитесь, что она включена.

    После загрузки системы установите, если необходимо, пакет ethtool, при помощи которого можно в том числе и переключать сетевую плату в режим пробуждения по сигналу WOL от других машин:

    # apt-get install ethtool

    Далее, необходимо определить, поддерживает ли установленная сетевая плата WOL, и включена ли эта опция:

    # ethtool eth0 | grep -i wake-on
        Supports Wake-on: pumbg
        Wake-on: d

    В строке Supports Wake-On перечислены механизмы, поддерживаемые сетевой платой.
    Для удаленного включения используется отправка Magic Packet ("волшебного пакета") на MAC адрес сетевой карты через широковещательный адрес сети.

    Убедитесь, что в Supports Wake On присутствует буква «g». Буква «d» в строке Wake-on обозначает, что WOL для данного сетевого интерфейса отключён. Чтобы включить его в режим распознавания Magic Packet, необходимо:

    # ethtool -s eth0 wol g

    Имейте ввиду, что после включения компьютера, вероятней всего, опция Wake-on опять перейдёт в состояние «d» и, если вам нужно, добавьте приведённую выше команду куда-нибудь в автозагрузку.

    Теперь всё готово для пробуждения системы по получению Magic Packet. Для того, чтобы его отправить, необходимо знать MAC-адрес сетевого интерфейса включаемого компьютера, поэтому прежде, чем выключать систему, запишите его:

    # ifconfig eth0 | grep -i hwaddr
    eth0      Link encap:Ethernet  HWaddr 00:00:2e:b9:cb:ad

    Теперь можно выключать систему:

    # poweroff

    Включение:
    Теперь с любого другого компьютера, находящегося в том же сегменте сети (в принципе, это необязательно, но тогда необходимо, чтобы в вашей сети маршрутизаторы корректно пробрасывали широковещательные пакеты), можно включить ранее сконфигурированную удалённую систему. Для этого понадобится утилита wakeonlan, которую необходимо установить, если её ещё нет в вашей системе:

    # apt-get install wakeonlan

    Разбудить выключенную систему теперь можно командой (обратите внимание, wakeonlan не требует прав суперпользователя):

    $ wakeonlan -p 8 00:0e:2e:b9:cb:ad

    Опцией -p указывается номер UDP-порта, с которого будет отправлен Magic Packet. Указание этой опции обязательно, поскольку по умолчанию wakeonlan использует девятый порт, помеченный в /etc/services как discard, что означает то, что пакет с этого порта отправить не получится. В принципе, можно использовать любой незанятый в системе UDP-порт.

    Метки: , ,

    Способы получения root-а на Android
    я - ВИКИНГ
    viking_k

    Root-права (или суперюзер) – это специальный аккаунт в UNIX-подобных системах с идентификатором 0, владелец которого имеет право на выполнение всех без исключения операций.
    В общем, рут права дают полный доступ к системным и аппаратным данным, с возможностью их редактирования или удаления.
    Основные методы получения root прав доступа на смартфонах с ОС Android
    Есть 17 основных методов получения root прав.

    1) SuperOneClick - Программа для получения root прав с помощью компьютера.
    Все кроме(на 1 июля 2011):
    - Droid Eris (HTC DesireC)
    - Droid Incredible (HTC Incredible)
    - HTC Aria
    - HTC из серии Desire
    - HTC Legend
    - HTC Wildfire (HTC Buzz)
    - Sprint EVO 4G (HTC Supersonic)
    - T-Mobile G2
    - T-Mobile MyTouch 3G 32A (v1.2)
    - T-Mobile MyTouch 4G
    Для вышеперечисленных аппаратов требуются дополнительные манипуляции с ядром прошивки и загрузчиком
    Требования:
    - Если используется компьютер с WinXP - установите Microsoft NET. Framework 2.0 (или выше)
    - Если используется Mac или Linux установите mono: http://www.go-mono.com/mono-downloads/download.html
    - Обязательно нужны драйвера для связи компьютера с телефоном через ADB (android debug bridge). Они обычно поставляются производителями или идут в одном из пакетов Android SDK Tools
    - Не подключайте телефон в режиме монтирования sd-карты
    - Включите хотя бы раз пункт Настройки/ Приложения/ Разработка/ Отладка USB
    - В некоторых случаях поможет подсоединение телефона в режиме recovery
    Получение root
    Убедитесь, что пункт Настройки/Приложения/Разработка/Отладка USB выключен
    Нажмите Root
    Когда приложение напишет "Waiting for Device", включите пункт Отладка USB
    После этого будет запущен эксплоит RATC
    Когда появится надпись "Starting ADB Server..."
    Выключите пункт Отладка USB
    Включите
    Снова выключите
    Это надо сделать до того, как появится новая надпись "Waiting for device..."

    2) z4root – программа для получения root прав без компьютера.
    Работает:
    - Acer Liquid S100
    - Cricket Huawei Ascend
    - Garmin-Asus A10
    - Gigabyte GSmart 1305
    - HTC Hero (2.1)
    - Huawei U8110
    - Huawei U8150 (Android 2.2)
    - Huawei U8220
    - Huawei U8230
    - Huawei U8500
    - LG GT540 (2.1)
    - LG P500 Optimus One (2.2)
    - Motorola Backflip
    - Motorola Defy
    - Motorola Droid X
    - Motorola Droid 1 (2.2.1)
    - Motorola Droid 2
    - Motorola Quench XT5
    - Pocketbook IQ 701
    - Samsung Acclaim
    - Samsung GT-I5700 Spica
    - Samsung GT-I5800 Galaxy 3
    - Samsung GT-I7500 Galaxy
    - Samsung GT-I9000 Galaxy S (строго до Android 2.2.1)
    - Samsung GT-P1000 Galaxy Tab
    - SonyEricsson X10
    - SonyEricsson X10 mini
    - SonyEricsson X10 mini pro
    - SuperPad (WowPad / Fly Touch II) Infotm x220.
    Не работает:
    - Archos 70 (unknown)
    - Google Nexus One (worked before FRG83D)
    - HTC Desire (requires nand unlock)
    - HTC Desire HD (requires nand unlock)
    - HTC Droid Incredible
    - HTC Evo (requires nand unlock)
    - HTC Legend
    - HTC Magic (unknown)
    - HTC Wildfire
    - T-Mobile G2 (requires nand unlock)
    - T-Mobile MyTouch 3G (unknown)
    - Motorola Droid1 (older firmware)
    - Samsung GT-I9000 Galaxy S (Android 2.2.1)
    - SonyEricsson X8 (Android 2.1)
    Запускаете и нажимаете Shell Root (постоянный рут) или Temporary Root (временный рут - после перезагрузки слетит)
    После процедуры с Shell root требуется перезагрузить смартфон

    3) Universal AndRoot - программа для получения root прав без компьютера.
    - Acer Liquid (2.1)
    - Acer beTouch E110
    - Dell Streak (2.1)
    - Gigabyte Gsmart 1305
    - Google Nexus One (2.2 FRF91)
    - HTC Dream (1.6)
    - HTC Hero Версия ОС: 2.1-update1, Номер ПО: 3.32.411.1 (прошивка через RUU)
    - HTC Hero Версия ОС: 2.1-update1, Номер ПО: 3.32.411.2 (OTA обновление)
    - HTC Magic (1.5)
    - HTC Tattoo (1.6)
    - HTC Legend (рутуется до ребута)
    - Motorola ME511
    - Motorola Milestone (2.1)
    - Motorola Droid (2.2)
    - Motorola Quench XT5
    - Motorola XT701
    - Motorola XT800 (2.1)
    - Orange San Francisco
    - Sony Ericsson X10 (1.6)
    - Sony Ericsson X10 Mini
    - Sony Ericsson X10 Mini Pro (1.6)
    - LG GT540 (1.6)
    - Vibo A688 (1.6)
    Устанавливаем программу в память телефона.
    Запускаем.
    Выбираем в спойлере свою ось.
    Нажимаем рут.
    Ждем окончания и перезагружаемся.

    4) VISIONary - программа для получения root прав без компьютера.
    Google
    - Nexus One
    - Nexus S Android 2.3.4
    Highscreen
    - Zeus 1.5

    HTC
    - Desire HD 2.2 (1.72)
    - Desire Z 2.2 (1.72)
    - Wildfire
    - Incredible S
    LG
    - Optimus One P500 2.2.1
    Sony Ericsson
    - Xperia X10
    Для работы приложения ОБЯЗАТЕЛЬНО нужно включить режим USB debugging (Настройка - Приложения - Разработка - Отладка USB)!
    Устанавливаем в память телефона.Открываем программу и выбираем нужный пункт:
    Temproot on boot - автоматически разрешать temproot при загрузке устройства (автор рекомендует перед включением этой опции сначала запустить temproot вручную, чтобы проверить, все ли в порядке)
    Run visionary.sh after root - позволяет запуск скрипта (как root) после получения root-привилегий. Файл скрипта находится в разделе /data/local/visionary.sh
    Set system r/w after root - позволяет перемонтировать системный раздел на чтение/запись после получения root-привилегий
    Temproot now - активировать temproot (root-права будут утеряны после перезагрузки)
    Attempt permroot now - попытка получения постоянных root-привилегий (настоятельно рекомендуется прочитать раздел ВАЖНО перед применением!)
    Unroot now - полное отключение root-привилегий
    После перезагрузить аппарат

    5) GingerBreak - программа для получения root прав без компьютера.
    - Acer Liquid (2.2)
    - Acer Liquid MT Android 2.2 (1.100.35)
    - apad imx515 (2.3.3)
    - Dell Streak (2.2.2)
    - Desire HD (2.3.3) - ТОЛЬКО ПРИ НАЛИЧИИ S-OFF!
    - HTC Desire S, Incredible S - ТОЛЬКО ПРИ НАЛИЧИИ S-OFF!
    - Google Nexus One (2.3.3)
    - Highscreen Cosmo
    - Huawei S7 (2.2)
    - LG Optimus 2x (stock)
    - LG Optimus Black (2.2.2) - написали в личку
    - LG Optimus One (2.2.1)
    - LG P 350 (2.2.2)
    - Motorola Defy (firmware: 3.4.2-155)
    - Nexus S (2.3.3)
    - Samsung GT-I9003 Galaxy S scLCD (2.2.1)
    - SE Arc
    - SE Xperia Play
    - SGS (2.3.3)
    - ViewSonic 10s (2.2)
    - Viewsonic Viewpad7 (2.2)
    1. Устанавливаем программу в память телефона.
    2. Включаем отладку USB. Для этого заходим в Настройки -> Приложения -> Разработка -> Отладка USB. Ставим галочку.
    3. Проверяем, чтобы флэшка была вставлена и работала
    4. Запускаем GingerBreak
    5. Выбираем Root Device
    6. Подождите несколько минут. Если нет никаких проблем, то устройство перезагрузится (отмечу, что перезагрузка может занять долгое время, поэтому ждем)
    7. Радуемся!

    6) UNREVOKED – специальный способ получения root прав для телефонов HTC EVO 4G, Sprint Hero, HTC Desire, HTC Wildfire, HTC Aria, HTC Droid Incredible с помощью компьютера.
    Саму программу качаем здесь
    Инструкция: Запускаем программу и следуем по указаниям.

    7) MtkDroidTools-Программа для получения root  прав для китайских девайсов  на ОС Android
    1. Скачиваем программу MTKdroidTools
    2. В телефоне нужно активировать откладку по USB, для этого заходим в параметры>параметры разработчика>отладка по USB>ставим галочку
    3. Запускаем установку программы MTKdroidTools.exe и подключаем девайс к компу,
    4. Ждем пока программа не выдаст запрос “Установить su, superuser, rootexplorer?” Нажимаем подтвердить, и ожидаем окончания процесса.
    5. Отсоединяем девайс от компа, и делаем перезагрузку

    8) Unlock Root Pro-Еще одна программа для получение Root прав с помощью компьютера
    1. Установите драйвер для своего Android устройства
    2. Установите Unlock Root и введите ключ из текстового документа в архиве
    3. Включите USB в режиме отладки (Настройки->Для разработчиков-> Отладка по USB)
    4. Подключите устройство к компьютеру
    5. Подождите пока программа определит устройство. Далее нажмите Root
    6. Все, процесс рутирования начался (В процессе рутирования телефон несколько раз перезагрузится)
    7. Дождитесь его завершения, после чего вам предложат установить Battary Saver (Если не надо, откажитесь)
    8. После всей этой процедуры еще раз перезагрузите устройство
    9. Вы сможете проверить получили ли вы Root права на любом приложении, требующем Root

    9) Framaroot-Приложение для Android под названием Framaroot, позволяющее получить root-права на некоторые android-смартфоны/планшеты буквально в один клик мыши. Оно позволяет установить Superuser и Su binary на смартфоны/планшеты.
    1. Устанавливаем Framaroot
    2. Запускаем, выбираем Superuser или SuperSU, навыбор, но лучше SuperSU.
    3. Жмакаем Gimli, Sam, Frodo, Legolas, Aragorn, Gandalf, Boromir т.е. любого понравившегося персонажа, если он доступен :D
    4. Выскочило окошко со смайликом :-) о удачно полученых Root-правах (см.скрин).
    5. Перезагружаем девайс и радуемся  :D !
    6. После получения рут прав Framaroot можно удалить!
    Совместимо со следующими Qualcomm девайсами (Gandalf exploit):
    Совместимо со следующими MediaTek девайсами (Boromir exploit)
    Совместимо со следующими Huawei K3V2 девайсами (Pippin exploit)
    Совместимо со следующими AMLogic девайсами (Gollum exploit)
    Совместимо со следующими Samsung девайсами (Legolas, Aragorn exploits)
    Совместимо со следующими Exynos девайсами (Sam, Frodo, Legolas, Aragorn exploits)
    Совместимо со следующими Omap девайсами (Gimli exploit)

    10) Kingo Android Root - Удобная программа, которая позволит вам максимально спокойно и без лишних действий получить права Администратора (root права) на мобильном устройстве под управлением Android.
    Google Nexus 4
    Google Galaxy Nexus
    Google Galaxy Nexus S
    Google Galaxy Nexus One
    Nexus 7 2013 Wifi
    HTC 920E
    HTC Wildfire S
    HTC Wildfire
    HTC Vision
    HTC Thunderbolt
    HTC Tattoo
    HTC Sensation
    HTC Salsa
    HTC Runnymede
    HTC Rhyme
    HTC Rezound
    HTC Raider 4G
    HTC Primotd
    HTC Primotds
    HTC One X
    HTC One V
    HTC One S (S3)
    HTC One S
    HTC One
    HTC Mytouch 4G Slide
    HTC Mytouch 4G
    HTC Mytouch 3G
    HTC Magic
    HTC Legend
    HTC Incredible S (G11)
    HTC Incredible 2
    HTC Incredible
    HTC Hero 200
    HTC Hero
    HTC EVO Shift 4G
    HTC EVO 4G
    HTC EVO 3D GSM
    HTC EVO 3D CDMA
    HTC Droid Eris
    HTC Dream
    HTC Desire Z
    HTC Desire S
    HTC Desire HD
    HTC Desire
    HTC Chacha
    HTC Aria
    HTC Amaze 4G
    Samsung Galaxy Note (i9220)
    Samsung Galaxy Note II (N7100)
    Samsung i500
    Samsung i535 Galaxy S III
    Samsung i699
    Samsung i777 Galaxy S II
    Samsung i879
    Samsung i939
    Samsung i959
    Samsung i9000 Galaxy S
    Samsung i9001 Galaxy S Plus
    Samsung i9100 Galaxy S II
    Samsung i9105 Galaxy S II Plus
    Samsung i9152 Galaxy Mega (5.8)
    Samsung i9300 Galaxy S III
    Samsung i9308
    Samsung S5830 Galaxy Ace
    Samsung S5660 Galaxy Gio
    Samsung i9500 Galaxy S IV
    Samsung S7562 Galaxy S Duos
    Samsung T959 Vibrant
    Samsung Galaxy Tab 2 (7.0)
    Samsung Galaxy Note 10.1 GT-N8000
    Samsung GALAXY Tab 3 WiFi+3G
    Samsung Galaxy Mega 6.3 i9200
    Samsung Galaxy Gran Duos GT-I9082L
    Galaxy Tab 2 10.1 (P5100)
    Samsung S7562 Galaxy S Duos
    Samsung Galaxy S III mini GT-I8190
    Samsung Galaxy Ace 2 (i8160)
    Samsung Galaxy Grand Duos (i9082)
    Samsung Galaxy S III L710(SPRINT)
    Samsung Galaxy Xcover2 (GT-S7710)
    Samsung GT-S5690 Galaxy Xcover
    Samsung Galaxy S4 (GT-i9500)
    Samsung Galaxy Tab 8.9 P7300
    Samsung Galaxy Mega 6.3 I9200
    Samsung SM-T3100 Galaxy TAB 3 8.0
    Samsung GT-I8552 Galaxy Win DUOS
    LG Optimus Black (P970)
    LG Optimus 2X (P990)
    LG Optimus One (P500)
    LG Optimus 3D (P920)
    LG Optimus G2X (P999)
    LG Optimus Pro (C660)
    LG Optimus Hub (E510)
    LG Optimus Sol (E730)
    LG Optimus LTE (LU6200)
    LG Optimus L3 (E400)
    LG Optimus Net (P690)
    LG Optimus L5 Dual E615
    LG Optimus 3D MAX P725
    LG Optimus L7 P705
    LG Optimus L4 E440
    Motorola DEFY Me 525
    Motorola DEFY Me 525 +
    Sony Xperia TX (LT29i)
    Sony Xperia S (LT26i)
    Sony Xperia Z (L36h)
    Sony Xperia Arc S (LT18i)
    Sony Xperia Arc (LT15i)
    Sony Xperia Neo (MT15i)
    Sony Xperia ZL
    Sony Xperia Z Ultra
    Sony Xperia Acro S
    Sony Xperia P
    Sony Xperia E C1505
    Sony Xperia ion (LT28h)
    Sony Xperia sola
    Sony Xperia Neo L MT25i
    Sony Xperia L (C2105)
    Sony Xperia U (ST25i)
    Sony Xperia ZR (C5502)
    Prestigio MultiPhone 3540 DUO
    Prestigio MultiPhone PAP 4322 DUO
    Prestigio MultiPhone 4505 DUO
    Prestigio MultiPhone 4040 DUO
    Prestigio GeoVision 7777
    Prestigio MultiPad 2 PMP7380D PRO DUO 8.0 3G
    Prestigio MultiPad 7.0 Prime Duo
    Explay Vision
    Sharp SH530U
    Zte 880
    ZTE V970M
    ZTE MT7A Megafon Login
    Alcatel One Touch 5020D M'POP
    Alcatel One Touch SPop 4030D
    Alcatel One Touch 6010X Star
    Globex GU904C
    DEX ip821
    DNS AirTab M104g
    DNS S5301M
    DNS AirTab P100qw
    ASUS Eee Pad Transformer TF101G
    Huawei Link10
    Huawei S8600
    Huawei Ascend G510-0200
    Huawei U8800 Pro Ideos X5 Pro
    Huawei MediaPad 7 Vogue
    Huawei MediaPad 7 Vogue (Lite 2)
    Huawei Ascend G610-U20
    Zopo ZP100
    Lenovo P770
    Lenovo IdeaTab S6000
    Lenovo IdeaPhone P780
    Wexler.Book T7008
    TG Teamgee Super8 E1
    Digma iDxD4 3g
    Qumo QUEST 570
    Fake Goophone i5 (iPhone 5. MTK6575. 854x480)
    Mini Pc Tv Box Rockchip Rk31
    Explay Surfer 10.11
    Fly IQ246 Power
    МТС 972
    iRU Pad Master M704G
    МТС 960
    Xiaomi mi2S
    Ritmix RMD-770
    0. Быть полным админом на компьютере и временно отключить файрвол/брандмауэр или добавить в белый список Kingo Root в файрволе/брандмауэре. Под proxy скачивать драйвер не сможет, нужно самому установить драйвер для телефона
    1. Установить Kingo ROOT.
    2. Запустить Kingo ROOT и подключить телефон с включенным режимом отладки по USB и с установленной галочкой на "Неизвестные источники".
    3. Kingo ROOT начнет качать драйвера и устанавливать их.
    4. После установки драйвера появится кнопка ROOT, нажимаем на нее.
    5. Ждем пока поставится рут и телефон сам перезагрузится.
    6. Радуемся полученному руту.
    P.S. Если у кого то программа устанавливает заново драйвер, то перезагружаем компьютер и телефон.


    11) Root with Restore by Bin4ry - еще один инструмент для получения прав root. В данном случае получается посредством восстановления данных в телефоне. Данный способ работает на достаточно большом количестве смартфонов и планшетов, что делает его полезным.{C}{C}{C}{C}
    1. Скачать и разархивировать архив в удобное место
    2. Запустить "RunMe.bat"
    3. Выбрать пункт с названием устройства (для всех кроме Xperia и LT, выбираем пункт 3)
    4. Соглашаемся в восстановлением на устройстве
    5. Ждем когда телефон полностью перезагрузится 2 раза
    6.  Отключаем телефон (планшет) от компьютера
    7.  Радуемся Rootу!
    Не отключаем телефон (планшет) от компьютера до завершения процесса!

    Официально поддерживаемые устройства:
    Sony Xperia : S, T, P , Acro S, Ion , Tipo , Tablet S, Go, Sola, U
    Google: Nexus 7 [UK Firmware]
    XTouch: X401
    Jiayu: G2-S
    LG: P705
    HTC: One S , Sensation XL [ICS 4.03] , Sprint's OTA ICS update on Evo3D , Desire S
    Kyocera: Rise & Hydro
    Samsung: Galaxy S2
    Ainol: Novo 7 Tornado 7
    Prestigio: MultiPad PMP5197D 9.7 ULTRA
    HDC: I9300 S3 Clone

    12) Android 2.3+ и ниже.
    1) Скачиваем архив Android 2.3+ ниже.
    2) Перезагружаемся в рекавери.
    3) Делаем бекап всех данных.
    4) Идем в install zip from sdcard ищем наш архив и прошиваем его.
    5) После окончания прошивки перезагружаемся и имеем полноценный рут.

    13) Baidu Root - Программа для получения рут прав в один клик на большинстве устройствах начиная от андроид 2.3 до 4.4. Она так же является утилитой для управления правами суперпользователя.
    1) установить программу и принять соглашение (в не переведенных версиях кнопка в правом нижнем углу)
    2) отказаться от модернизации ( запрашивает не всегда)
    3) нажать на кнопку "получить root" ( в не переведенных версиях большая синяя кнопка в центре)
    4) ждать. Программа оповестит когда рут будет получен. (Загорится зеленым)

    14) Romaster SU (Shouquan) - является хорошим инструментом для получения Root на Samsung, HTC, Sony, Huawei, ZTE, Lenovo, CoolPad и других, всего свыше 8000 моделей, что гарантирует эффективное получение Root (Android 2.0+).
    15) Root Dashi (Zhiqupk Root) - Второе по популярности приложение для получения Root (после Baidu Root) (Android 2.2+) .
    16) 360 Root - Приложение для получения Root на устройствах Android (2.2-4.2) от известной компании Qihoo 360.
    17) iRoot - Аналог Romaster SU является хорошим инструментом для получения Root на Samsung, HTC, Sony, Huawei, ZTE, Lenovo, CoolPad и других, всего свыше 8000 моделей, что гарантирует эффективное получение Root.
    Внимание! Все действия вы выполняете на свой стах и риск! Никто не несет ответственности за возможные негативные последствия для вашего устройства!!






    Если все способы не сработали на твоём Android устройстве, значит тебе сюда



    P.S.
    Статья  безчестно спизжена вот от сюда
    Лично мне для получения рута на планшете 3Q tablet PC RCp731C-BL помогла Baidu root, а на телефоне LG P715 помогла Framaroot
    Метки: ,

    debian - настройка web-сервера
    я - ВИКИНГ
    viking_k

    MySQL

    Если нужен SQL сервер, то для примера установим MySQL. Надо заранее подготовить хороший пароль, сохраним его в вашу базу паролей (я генерирую и храню пароли в KeePassX) и пропишем в /root/.my.cnf:
    [client]
    password = "c8M2oWUJSrYrc2kiqQ"

    #apt-get -y install mysql-client mysql-server

    При установке будет просьба ввести новый пароль для администрирования MySQL — вводите заранее подготовленный.
    Немного обезопасим БД:
    Ответы:
    Change the root password? [Y/n] n
    Remove anonymous users? [Y/n] y
    Disallow root login remotely? [Y/n] y
    Remove test database and access to it? [Y/n] y
    Reload privilege tables now? [Y/n] y

    Резервное копирование MySQL


    Apache


    phpMyAdmin

    Метки: ,

    Основы тестирования сетей
    я - ВИКИНГ
    viking_k
    $ ping google.com                         # проверить соединение с интернетом 
    $ traceroute google.com                   # проверить путь до хоста 
    $ ifconfig                                # проверить конфигурацию сетевых интерфейсов 
    $ route -n                                # посмотреть таблицу маршрутизации 
    $ dig [@dns-server.com] host [{a|mx|any}] # просмотреть DNS запись хоста 
    $ whois host                              # узнать данные о домене из базы whois 
    $ iptables -L -n | less                   # проверить фильтр пакетов 
    $ netstat -a                              # узнать все открытые порты 
    $ netstat -l                              # просмотреть все слушающие порты 
    $ netstat -l --inet                       # просмотреть слушающие TCP порты
    Метки: , ,

    Error running style: S2TIMEOUT: Timeout: 4, URL: viking-k.livejournal.com/ at /home/lj/src/s2/S2.pm line 531.