Archive

Archive for the ‘Uncategorized’ Category

Настройка DHCP сервера для APC AP9617

July 24th, 2009 No comments

ap9617

Имеется:

  • APC Smart UPS 1000 XL
  • Плата управления APC AP9617

Задача: необходимо присвоить IP-адрес плате управления с помощью DHCP-сервера. Особенность в том что AP9617 принимает DHCP запросы только если в них установлен определенный флаг. Так же необходимо что бы DHCP сервер выдавал IP-адрес только платам управления.

Решение:

option space APC;
option APC.cookie code 1 = string;
class "APC" {
    match if substring (option vendor-class-identifier,0,3) = "APC";
    vendor-option-space APC;
    option APC.cookie "1APC";
}
 
subnet 192.168.0.0 netmask 255.255.255.0 {
    option subnet-mask 255.255.255.0;
    option routers 192.168.0.1;
    default-lease-time 30;
    max-lease-time 30;
 
    pool {
        range 192.168.0.100 192.168.0.110;
        allow members of "APC";
    }
}
Tags:

VPN с на базе MPD для FreeBSD

July 16th, 2009 No comments

Ставим из портов текущую версию mpd к примеру mpd4-4.0.r1
далее приспупим к созданию конфигурационного файла /usr/local/etc/mpd4/mpd.conf

startup:
#если необходим просмотр активности через веб, то добавляем следующее
   set web port port 5006
   set web ip ip-адрес
   set web user user password
   set web open
default:
   load pptp0
   load pptp1
   load pptp2
   load pptp3

…и так далее, количество зависит от количества одновременных подключений

pptp0:
   new pptp0 pptp0
   load default_pptp
pptp1:
   new pptp1 pptp1
   load default_pptp
pptp2:
   new pptp2 pptp2
   load default_pptp
pptp3:
   new pptp3 pptp3
   load default_pptp
...
 
default_pptp:
   set iface disable on-demand
   set iface enable proxy-arp
   set iface idle 1800
   set iface enable tcpmssfix
   set bundle enable multilink
   set link yes acfcomp protocomp
   set link no pap chap
   set link enable chap
   set link keep-alive 10 60
   set link mtu 1460
   set ipcp yes vjcomp
#Выдаваемый шлюз для всеx ip адресов (можно зарать и другую маску)
   set ipcp ranges 192.168.1.1/32 0.0.0.0/0
#Выдаваемый днс сервер
   set ipcp dns 192.168.1.1
#ip адрес сервера
   set pptp self 192.168.2.1
   set pptp enable incoming
   set pptp disable originate
#Если необходимо шифрование данных Microsoft то добавляем следующее
   set bundle enable compression
   set ccp yes mppc
   set ccp yes mpp-e40
   set ccp yes mpp-e128
   set ccp yes mpp-stateless

на этом можно закончить писать в файл и перейти к писанию mpd.links

pptp0:
   set link type pptp
pptp1:
   set link type pptp
pptp2:
   set link type pptp
pptp3:
   set link type pptp
...

на этом можно закончить писать в файл и перейти к писанию mpd.secret где содержатся логины и пароли

joe   "foobar"   192.168.1.1
bob   "foo"   192.168.1.10
sal   "yipee"   192.168.1.254

на этом закончим конфигурить mpd и изменим /etc/rc.conf добавляем в него

mpd_enable="YES"
mpd_flags="-b"

запускаем /usr/local/etc/rc.d/mpd4.sh start

Оригинал статьи: VPN с на базе MPD для FreeBSD

Tags: , ,

Map

July 15th, 2009 No comments

Небольшая иллюстрация для истории: мониторинг домашней сети.

map

Tags:

Настройка Jail в FreeBSD с помощью ezjail

July 14th, 2009 No comments

Перевод: Сгибнев Михаил
Оригинал: Setup FreeBSD Jail With ezjail

Зададимся вопросом – как, используя сервер на базе FreeBSD, получить несколько независимых окружений, в народе называемых jail? Например, как использовать одну из jail для почтового сервера, а вторую для web-сервера, при этом каждая jail должна иметь собственный IP-адрес?

Каждая jail на FreeBSD имеет собственные файлы, процессы и учетные записи. Находясь внутри, практически невозможно отличить jail от реальной системы. Самым простым способом определения, создания и модифицирования jail является использование среды ezjail.

Внимание! Сетевые демоны, перед использованием jail, должны быть сконфигурированы на использование адреса 127.0.0.1 или на работу с адресом интерфейса. По крайней мере, это необходимо сделать со службами sshd и syslogd.

Вводные данные

  • server.nixcraft.net.in : FreeBSD host server running v7.2 with 202.54.1.2
  • smtpd.nixcraft.net.in : Mail server jail with 202.54.1.3
  • httpd.nixcraft.net.in : Web server jail with 202.54.1.4

Шаг 1: Обновляем корневую систему

Убедитесь в том, что ваша система достаточно актуальна. Руководство по обновлению системы вы можете найти здесь.

Шаг 2: Устанавливаем ezjail

Для установки ezjail выполните нижеприведенные команды. Таким образом, мы получим два скрипта, позволяющие нам более просто управлять жизненным циклом jail.

    # cd /usr/ports/sysutils/ezjail
    # make install clean
    

Расположение файлов ezjail по умолчанию:

  1. /usr/jails/ каталог размещения шаблонов jail.
  2. /usr/jails/flavours/ настройка каждой jail может быть выполнена через flavours.
    Служит для того чтобы, например, добавить значение по умолчанию в файл /etc/resolv.conf или обновить существующий файл /etc/make.conf
  3. /usr/jails/basejail/ базовая система jail, которая монтируется в режиме “read only” и
    является одинаковой для всех jail, что позволяет сэкономить место на жестком диске.
  4. /usr/local/etc/rc.d/ezjail.sh скрипты Stop/Start/Restart
  5. /usr/local/etc/ezjail.conf конфигурационный файл ezjail, который содержит настройки для rc скрипта. Таже данный файл может быть просмотрен
    командой ezjail-admin.
  6. /usr/local/etc/ezjail/ все файлы конфигурации ваших jail хранятся здесь

Шаг 3: Создаем базовый шаблон jail

Для создания или обновления окружения ezjail (aka basejail) из исходных текстов, выполните следующую команду:

    # ezjail-admin update -p -i
    

 Где:

  • -p : Provide ports for jail.
  • -i : не запускать “make world”.

Если у вас нет /usr/src и вы никогда не запускали make world, вы можете установить шаблон с ftp сервера, используя утилиту ezjail-admin:

    # ezjail-admin install
    

 Шаг 4: Создаем SMTPD Mail Server Jail

 Для создания jail smtpd.nixcraft.net.in с адресом 202.54.1.3, располагающейся в каталоге /jails/smtpd.nixcraft.net.in, выполните следующую команду:

    # ezjail-admin create -r /jails/smtpd.nixcraft.net.in smtpd.nixcraft.net.in 202.54.1.3
    

 Обновление файла конфигурации SMTPD Jail

 По умолчанию, файл конфигурации расположен в /usr/local/etc/ezjail/smtpd_nixcraft_net_in. Откройте его и добавьте следующие строки:

    export jail_smtpd_nixcraft_net_in_hostname="smtpd.nixcraft.net.in"
    export jail_smtpd_nixcraft_net_in_ip="202.54.1.3,10.21.51.12"
    

 Шаг 5: Запускаем сервис jail

 Добавим строку запуска в файл /etc/rc.conf:

    # echo 'ezjail_enable="YES"' >> /etc/rc.conf
    

 После чего можем запустить службу:

    # /usr/local/etc/rc.d/ezjail.sh start
    

 Для управления конкретным jail можно воспользоваться следующими командами:

    # /usr/local/etc/rc.d/ezjail.sh {start/stop/restart} jail-name
    # /usr/local/etc/rc.d/ezjail.sh start httpd
    # /usr/local/etc/rc.d/ezjail.sh stop smtpd.nixcraft.net.in
    

 Просмотреть список jail можно командой:

    # jls
    

 Или, для получения дополнительной информации, воспользуйтесь синтаксисом:

    # jls -v
    

 Дя того, чтобы подключиться к jail, воспользуйтесь командой:

    # jexec jid csh
    

 При этом jid можно получить из вывода команды jls. В данном примере мы подключаемся к jail
smtpd.nixcraft.net.in с jid # 2:

    # jexec 2 csh
    

 После подключения к jail мы можем устанавливать необходимое нам ПО, например bash:

    # pkg_add -r -v bash
    

 Или сервер Apache 2.2:

    # cd /usr/ports/www/apache22
    # make install clean
    

 Для того, чтобы подключаться к jail удаленно, необходимо внести следующие изменения в ее файл /etc/rc.conf:

    # echo 'sshd_enable="YES"' >> /etc/rc.conf
    

 Затем откроем файл sshd_config и укажем в нем использовать только IP адрес, назначенный данной jail.
После чего запускаем сервер OpenSSH:

    # /etc/rc.d/sshd start
    # sockstat -4
    

 Обновить FreeBSD Jail можно так:

    # /usr/local/etc/rc.d/ezjail.sh stop
    # ezjail-admin update -p -i
    # /usr/local/etc/rc.d/ezjail.sh start
    

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

    # ezjail-admin update -P
    

 Журнальные файлы jail по умолчанию хранятся в каталоге /var/log.
Для того чтобы, к примеру, просмотреть логи jail smtpd.nixcraft.net.in, воспользуйтесь командой:

    # tail -f jail_smtpd_nixcraft_net_in_console.log
    # grep 'error' jail_smtpd_nixcraft_net_in_console.log
    

 Для добавления httpd jail выполните следующие действия:

    # ezjail-admin create -r /jails/httpd.nixcraft.net.in httpd.nixcraft.net.in 202.54.1.4
    # vi /usr/local/etc/ezjail/httpd_nixcraft_net_in
    # /usr/local/etc/rc.d/ezjail.sh start httpd.nixcraft.net.in
    # jls -v
    # jexec id csh
    

 Для резервного копированя jail рекомендую воспользоваться командами
tar,
rsync и
dump.

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

    # tar -zcvf /dev/sa0 /jails/smtpd.nixcraft.net.in
    

 Для сохранения всех jail, расположенных в каталоге /jails используйте:

    # /sbin/dump -0uLf /dev/sa0 /jails/
    

 А для инкрементных обновлений полученного архива:

    # /sbin/dump -1uLf /dev/sa0 /jails/
    

Используемая литература:

Раздел FreeBSD Jail FreeBSD handbook.

Tags: ,

tmux – консольный оконный менеджер

July 10th, 2009 No comments

Tmux is a terminal multiplexer, it enables a number of terminals to be accessed
and controlled from a single terminal. tmux is intended to be a simple, modern,
BSD-licensed alternative to programs such as GNU screen.

WWW: http://www.sourceforge.net/projects/tmux/

Основные достоинства и отличия Tmux от GNU Screen (взять с opennet.ru)

  • Исходные тексты распространяются в рамках лицензии BSD. Более современная и упрощенная кодовая база (коду screen 20 лет). Предусмотрена возможность подключения расширений от сторонних разработчиков. Поддерживается работа на платформах OpenBSD, FreeBSD, NetBSD, Linux, Mac OS X, Solaris и AIX;
  • Четко формализованная клиент-серверная модель, при которой окна выступают в роли независимых объектов, которые могут сопоставляться и перераспределяться между разными сессиями. При этом поддерживается назначение одного окна нескольким разным клиентам и передача окон от одного клиента другому;
  • Наличие механизма автоматизации выполнение типовых действий, через подключение внешних скриптов;
  • Наличие нескольких независимых буферов обмена. Поддержка выбора раскладки клавиатуры в стиле vi или emacs;
  • Поддержка опции для ограничения размера окна. Более гибкие возможности по разбиению окон на части (поддержка вертикального разделения);
  • Более ясный синтаксис для формирования содержимого строки статуса. Возможность отображения в строке статуса первой строки вывода определенной команды;
  • Более экономное расходование оперативной памяти;
  • Улучшенная поддержка UTF-8.

Установка:

$ cd /usr/ports/misc/tmux
$ make install clean

Запуск новой сессии:

$ tmux

Отключение от сессии:

Ctrl-b + d

Востановление отключенной сессии

$tmux a

или

$tmux attach-session

Режим прокрутки:
включение режима – Ctrl-b + =
прокрутка – стрелками вверх вниз
выключение режима – q

Разделить окно: Ctrl-b + ”
Переключение расположения окон: Ctrl+b + Space
Изменить размер: Ctrl-b + Ctrl+(Up|Down)
Часы: Ctrl+b + t
Переименовать окно: Ctrl-b + ,

Tags:

Используем CURL

July 8th, 2009 No comments

Библиотека CURL (Client URLs) была разработана Даниелом Стенбергом (Daniel Stenberg) в 1998 году как утилита, работающая из командной строки.

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

CURL поддерживает протоколы HTTP, HTTPS, FTP, FTPS, DICT, TELNET, LDAP, FILE, и GOPHER, так же как HTTP-post, HTTP-put, cookies, FTP-закачкe, продолжение прерванной передачи файлов, пароли, номера портов, сертификаты SSL, Kerberos и прокси.

Используя CURL, web-сервер может выступать полноценным клиентом любого основанного на HTTP протоколе сервисе, к примеру: XML-RPC, SOAP, или WebDAV.

В общем виде использование библиотеки сводиться к четырем шагам:

  • Создание ресурса CURL c помощью функции curl_init
  • Установка параметров c помощью функции curl_setopt
  • Выполнение запроса c помощью функции curl_exec
  • Освобождение ресурса CURL c помощью функции curl_close

Простой пример использования CURL:

<?php
  //Иницализация библиотеки curl.
  if ($ch = @curl_init()) 
  {
     //Устанавливаем URL запроса
     @curl_setopt($ch, CURLOPT_URL, 'http://blog.yousoft.ru/');
     //При значении true CURL включает в вывод заголовки.
     @curl_setopt($ch, CURLOPT_HEADER, false);
     //Куда помещать результат выполнения запроса: 
     //  false - в стандартный поток вывода, 
     //  true - в виде возвращаемого значения функции curl_exec.
     @curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
     //Максимальное время ожидания в секундах
     @curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
     //Установим значение поля User-agent
     @curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot (http://blog.yousoft.ru)');
     //Выполнение запроса
     $data = @curl_exec($ch);
     //Вывести полученные данные
     echo $data;
     //Особождение ресурса
     @curl_close($ch);
  }
?>

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

<?php
  $ch = curl_init();
   //GET запрос указывается в строке URL
  curl_setopt($ch, CURLOPT_URL, 'http://blog.yousoft.ru/?s=CURL');
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
  curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot (http://blog.yousoft.ru)');
  $data = curl_exec($ch);
  curl_close($ch);
?>

Посылка GET запроса ничем не отличается от получения страницы. Важно заметить, что строка запроса формируется следующим образом: http://blog.yousoft.ru/index.php?name1=value1&name2=value2&name3=value3. Где http://blog.yousoft.ru/index.php – адрес страницы, nameX – название переменной, valueX – значение переменной.

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

<?php
  $ch = curl_init();
  curl_setopt($ch, CURLOPT_URL, 'http://blog.yousoft.ru/index.php');
  curl_setopt($ch, CURLOPT_HEADER, false);
  curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  //Нужно явно указать, что будет POST запрос
  curl_setopt($ch, CURLOPT_POST, true);
  //Здесь передаются значения переменных
  curl_setopt($ch, CURLOPT_POSTFIELDS, 's=CURL');
  curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30);
  curl_setopt($ch, CURLOPT_USERAGENT, 'PHP Bot (http://blog.yousoft.ru)');
  $data = curl_exec($ch);
  curl_close($ch);
?>

Отправка POST запроса не многим отличается от отправки GET запроса. Все основные шаги остаются такие же. Переменные также задаются парами: name1=value1&name2=value2.

Оригинал статьи:

Tags:

Автоматизация работы с помощью Empty

July 6th, 2009 No comments

empty – run applications under pseudo-terminal (PTY) sessions and replace
TCL/Expect with a simple tool.

WWW: http://empty.sourceforge.net/

- Mikhail Zakharov
zmey20000@yahoo.com

Установка:

$ portinstall empty

Пример скрипта:

#!/bin/sh
empty -f -i in -o out telnet foo.bar.com
empty -w -i out -o in "ogin:" "luser\n"
empty -w -i out -o in "assword:" "TopSecret\n"
empty -s -o in "who am i\n"
empty -s -o in "exit\n"

Ссылки:

Tags:

Автоматизация работы с помощью Expect

July 6th, 2009 No comments

Expect is a program that performs programmed dialogue with other
interactive programs. It is briefly described by its man page, expect(1).

It uses pseudo-tty’s to control the child processes, so it is not affected
by programs that refuse to read from stdin or pipes. (eg: passwd(1) etc).

WWW: http://expect.nist.gov/
FAQ: http://expect.nist.gov/FAQ.html

Установка:

$ portinstall expect

Пример скрипта:

#!/usr/local/bin/expect -f
set host case.net.ru
 
spawn telnet "$host" 25
expect "220 case.net.ru ESMTP Postfix"
send "EHLO localhost\r"
expect "250-case.net.ru"
send "AUTH PLAIN AHRUAMTIzNDU2\r"
expect "235 2.7.0 Authentication successful"
send "QUIT\r"
interact

Ссылки:

Tags:

Работаем с IPv6

May 22nd, 2009 No comments

Настройка IPv6 в FreeBSD

Регистрируемся на сайте http://www.tunnelbroker.net.
В личном кабинете нажимаем “Create Regular Tunnel”.
Указываем свой внешний IPv4 адрес и выбираем ближайший сервер доступа.

Поднимаем тунель:

$ ifconfig gif0 create
$ ifconfig gif0 tunnel 213.79.110.123 216.66.80.26
$ ifconfig gif0 inet6 2001:470:1f08:f4::2 2001:470:1f08:f4::1 prefixlen 128
$ route -n add -inet6 default 2001:470:1f08:f4::1
$ ifconfig gif0 up

Открываем его в ifpw:

$ ipfw -q 1 add allow ip4 from any to any proto ipv6
$ ipfw -q 1 add pass ipv6 from any to any

Проверка 1:

$ wget -6 http://www.kame.net
--2009-05-22 15:19:11--  http://www.kame.net/
Resolving www.kame.net... 2001:200:0:8002:203:47ff:fea5:3085
Connecting to www.kame.net|2001:200:0:8002:203:47ff:fea5:3085|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: unspecified [text/html]
Saving to: `index.html'
...
2009-05-22 15:19:18 (8.31 KB/s) - `index.html' saved [2986]

Поверка 2:

$ ping6 -c 1 ipv6.google.com
PING6(56=40+8+8 bytes) 2001:470:1f08:f4::2 --> 2001:4860:a005::68
16 bytes from 2001:4860:a005::68, icmp_seq=0 hlim=57 time=87.832 ms
 
--- ipv6.l.google.com ping6 statistics ---
1 packets transmitted, 1 packets received, 0.0% packet loss
round-trip min/avg/max/std-dev = 87.832/87.832/87.832/0.000 ms

Прописываем это все в /etc/rc.conf:

ipv6_enable="YES"
gif_interfaces="gif0"
gifconfig_gif0="213.79.110.123 216.66.80.26"
ipv6_ifconfig_gif0="2001:470:1f08:f4::2 2001:470:1f08:f4::1 prefixlen 128"
ipv6_defaultrouter="2001:470:1f08:f4::1"

 

Раздаем IPv6 во внутреннюю сеть

Включаем маршрутизацию IPv6 в /etc/rc.conf:

$ sysctl net.inet6.ip6.forwarding=1

Настраиваем интерфейс для внутренней сети:

$ ifconfig lagg0 inet6 2001:470:1f08:f4:1::1 prefixlen 80

Прописываем это заодно и в /etc/rc.conf:

ipv6_ifconfig_lagg0="2001:470:1f08:f4:1::1 prefixlen 80"
ipv6_gateway_enable="YES"

Убеждаемся через netstat -nr что появился нужный маршрут:

2001:470:1f08:f4:1::/80           link#6                        UC        lagg0

Если нужна автоматическая настройка внутренних узлов, делаем следующее (я настраивал все статически):

Прописываем в /etc/rc.conf:

rtadvd_enable="YES"              # let our LAN know the IPv6 default route
rtadvd_interfaces="lagg0"        # our private LAN

Прописываем в /etc/rtadvd.conf

lagg0:rltime#0:addrs#1:addr="2001:470:1f08:f4:1::":prefixlen#80:tc=ether:

Запускаем:

$ /etc/rc.d/rtadvd start

 

Настройка IPv6 в Windows XP (static ip)

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

C:Documents and SettingsCase>ipv6 install

Добавляем IPv6-адрес к интерфейсу:

C:Documents and SettingsCase>netsh
netsh>interface ipv6
netsh interface ipv6>add address interface="Local Area Connection" 2001:470:1f08:f4:1::2

Добавляем маршрут для сети в которой находимся:

netsh interface ipv6>add route 2001:470:1f08:f4:1::/80 "Local Area Connection"

Добавляем DNS сервер:

netsh interface ipv6>add dns "Local Area Connection" 2001:470:20::2

(Некоторые конторы, например Google, возвращают ipv6 запись только если запрос сделан с dns-сервера который сат работает на ipv6)

Добавляем маршрут по умолчанию:

netsh interface ipv6>add route ::/0 "Local Area Connection" 2001:470:1f08:f4:1::1

Проверяем маршруты:

netsh interface ipv6>show route
Запрос активного состояния...
 
Публик.  Тип       Метр. Префикс                   Инд  Имя шлюза/интерфейса
-------  --------  ----  ------------------------  ---  ---------------------
no       Вручную      0  2001:470:1f08:f4:1::/80     5  Local Area Connection
no       Вручную      0  ::/0                        5  2001:470:1f08:f4:1::1

Проверяем работу IPv6:

C:Documents and SettingsCase>ping6 ipv6.google.com
 
Проверка связи ipv6.l.google.com [2001:4860:a005::68]
с 2001:470:1f08:f4:1::2 с 32 байт данных:
 
Ответ от 2001:4860:a005::68: байт=32 время=86ms
Ответ от 2001:4860:a005::68: байт=32 время=74ms
Ответ от 2001:4860:a005::68: байт=32 время=82ms
Ответ от 2001:4860:a005::68: байт=32 время=74ms
 
Проверить связь статистики для 2001:4860:a005::68:
    Пакеты: Отправлено = 4, Получено = 4, Lost = 0 (0% loss),
Время в пути в мсек (приблизительно):
    Минимум = 74ms, максимум = 86ms, среднее = 79ms

 

Настройка IPv6 в CentOS 5.4 (static ip)

Настройка интерфейса:

ifconfig eth0 inet6 add 2001:470:1f08:f4:1::130/96

Добавление маршрута по умолчанию:

route --inet6 add default gateway 2001:470:1f08:f4:1::1 eth0

+ прописываем dns-сервер в /etc/resolv.conf

nameserver 2001:470:20::2

Посмотреть маршруты:

route -n -A inet6

Или добавим все в конфиги системы и перезапустим сеть.
В /etc/sysconfig/network добавить NETWORKING_IPV6=yes
В /etc/sysconfig/network-scripts/ifcfg-eth0 добавить:
IPV6INIT=yes
IPV6ADDR=2001:470:1f08:f4:1::130/96
IPV6_DEFAULTGW=2001:470:1f08:f4:1::1

Перезапустим сеть:
service network restart

Ссылки

Tags:

Configuring OSPF on a Cisco router

May 21st, 2009 No comments
Tags: ,