Блог пользователя - muff

NAT - реализация с помощью PF

Решил "пощупать" реализацию NAT с помощью PF. Ознакомившись с документацией, убедился, что все не так и сложно.

Итак, исходные данные:

  • офисная сеть 10.200.106.0/24;
  • интерфейс vlan106 - "смотрит" в офисную сеть;
  • интерфейс vlan684 - "смотрит" в Internet, default;
  • интерфейс vlan685 - "смотрит" в UA-IX, получает от вышестоящего маршрутизатора список сетей UA-IX.

Исходя из указанного построения сети, понятно, что НАТить необходимо на двух внешних интерфейсах одновременно (на vlan684 и vlan685 соответственно).

Итак, для начала отредактируем конфигурационный файл pf.conf под свои нужды. В моем случае конфигурация получилась следующая:

Back-resolv для блока IP-адресов

Пора заняться поддержкой бек-резолва для выделенного блока IP-адресов. Для начала, для зарегистрированного блока IP-адресов необходимо создать на DNS-сервере PTR-записи, чтобы IP-адрес мог отрезолвиться в имя. Напомню, RIPE выдал следующий блок адресов: 194.28.100.0/22.

У меня на сервере DNS работает под управлением BIND 9. Сервер работает на IP 194.28.100.100 (ns.valor.net.ua). Файлы зон располагаются в каталоге /var/named/zones. Именно в этом каталоге необходимо создать 4 файла зон (для каждой подсети). Пример отработаем на сети 194.28.100.0/24 (остальные - по аналогии).

Создаем файл зоны:

PHP - вывод случайного содержимого

PHP логотип
 
Иногда требуется выводить данные в случайном порядке. Кроме этого, вещь полезна еще и тем, что контент страниц никогда не повторяется и при индексации роботами мы всегда можем сказать, что страницы у нас разные, чем несколько вводим в заблуждение поисковики. Но это заблуждение в нашу пользу.

Реализовать это можно несколькими способами. Один из самых простых:

  1. Создать на сервере текстовый файл data.txt
  2. Наполнить этот файл содержимым (каждый новый вариант - с новой строки)
  3. Добавить на страницу следующий php-код:
<?php
$phrases = "data.txt"; //файл содержимого
$z = file ($phrases);
$cz = count ($z) -1;
$r = rand (0, $cz);
print $z[$r];
?>

Для примера, на этой странице будет генерироваться три афоризма:


Афоризм 1: Если палка без двух концов - это уже бублик.

Афоризм 2: По штатному расписанию он был еще не самый старший дурак...

Афоризм 3: Силам правопорядка не хватает сил либо соблюдать права, либо следить за порядком.


Ничего сложного. Единственный ньюанс - необходимо, чтобы кодировка текстового файла совпадала с кодировкой веб-страницы.

 

BGP - как происходит выбор наилучшего маршрута

BGP всегда выбирает один из маршрутов - как наилучший. Когда маршрут выбран, BGP помещает его в свою таблицу маршрутизации, и передает его своим neighbor'ам. Для выбора наилучшего маршрута BGP использует следующие критерии:

1. Если путь, указанный в поле next-hop, недоступен, этот update убивается.

2. Лучшим считается путь с наибольшим значением weight;

3. Если weight путей одинаковы, то выбирается путь с наибольшим lpref;

4. Если weight и lpref одинаковы, то выбирается путь, который появился в таблице маршрутов BGP на данном роутере. (подразумевается, что это будет самый наикратчайший путь);

5. Если нет путей, которые "родились" на данном роутере, то выбирается путь с AS_path минимальной длины;

Добавлены переводы man-страниц

 

FreeBSDДобавлено значительное количество переводов на русский man-страниц. Рекомендую "пробежаться" по названиям, возможно что-то заинтересует. Сам обнаружил несколько полезных утилит, о которых не подозревал. Если есть чем поделиться - регистрируйтесь и добавляйте материал самостоятельно.

Просмотреть доступные переводы можно в разделе Русские man-ы

BGP - настраиваем Border Gateway Protocol c помощью Quagga

Вообще-то по настройке Quagga уже есть статья, но решил, что настройке BGP необходимо посвятить отдельную статью. Итак, на днях получила дружественная сеть свою автономную систему и блок адресов. Соответственно необходимо все это дело настроить под собственные нужды, и с этой просьбой и обратилась ко мне.

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

Поставленная задача: получить от провайдера по одному BGP-соединению список сетей UA-IX, по второму - Full-view. Ну а дальше уже можно будет по представленной схеме настраивать соединения с несколькими аплинками.

Ddrescue - поиск сбойных блоков на жестком диске

Возникла необходимость в поиске сбойных блоков на жеском диске. Порыскав по интернету, нашел описание утилиты ddrescue. Решил попробовать. Итак, устанавливаем утилиту из портов:

# cd /usr/ports/sysutils/ddrescue && make install clean && rehash

Проверка не составляет труда. Проверим, для примера, раздел /dev/ad5s1d:

# ddrescue --force /dev/ad5s1d /dev/null

Собственный счетчик посещений

В сети очень много сервисов предлагают установить свои счетчики посещений. Мы же в этот раз попробуем создать собственный счетчик посещений, который можно будет поместить на веб-страницу, своими силами.

Счетчик создаем с помощью PHP. Код счетчика очень простой:

<?php
$filename = "counter.dat";      // задаем переменную, указывая имя файла
if(file_exists($filename)){     // если файл присутструет, то
$fp = fopen($filename,"r");     // открываем соединение с этим файлом, причем только на чтение
if ($fp) {                      // проверяем, успешно ли открылось соединение.
$counter = fgets($fp,10);       // если успешно, считываем из открытого файла первые
                                // 10 символов в переменную счетчика
fclose($fp);                    // закрываем соединение
} else {                        // иначе
$counter = 0;                   // присваиваем переменной счетчика ноль
}
}
$counter++;                     // увеличиваем переменную счетчика на единицу
echo $counter;                  // выводим на экран переменную счетчика
$fp = @fopen($filename,"w");    // открываем соединение на запись с очисткой всего содержимого файла
if ($fp) {                      // если успешно, то...
$counter = fputs($fp,$counter); // записываем новое значение переменной счетчика в файл
fclose($fp);                    // закрываем файл
}
?>

Вот и все! Теперь можно устанавливать свои собственные счетчики на любых страницах сайта. Для этого указанный код вставляется в любое место нужной страницы. В этом месте будет выведено количество посещений.

ПРИМЕР: Вы пользователь, который посетил эту страницу.

Cron - отключение отправки уведомлений

Добавил в cron задание, которое выполняется каждую минуту и перечитал конфигурацию cron-а. Проверил по логам - задание выполняется корректно, cron честно выполняет свою роль. А еще через несколько минут увидел, что все тот же cron радостно отчитывается о выполненом задании, отправляя на root-овый e-mail сообщение.

"Выправить" это очень просто. Чтобы cron не отправлял отчеты, необходимо добавить в его конфигурационный файл /etc/crontab такую строчку: MAILTO="". Тоесть теперь начало файла будет выглядеть примерно вот так:

MPD - настройка собственного VPN-сервера

В связи с просьбой одного из сотрудников в реализации доступа к серверам офисной сети из дома (согласно требованиям безопасности, доступ к ним из сети Internet ограничен), возникла необходимость в настройке VPN-сервера. Реализовывать будем на базе MPD - основанная на netgraph реализация ppp-протокола мультисвязи для FreeBSD. Еще одним плюсом в сторону MPD есть то, что он совместим с Microsoft,  тоесть подключиться к нашему серверу пользователи ОС Windows смогут пользуясь стандартными средствами ОС.

В более ранних версиях, для работы MPD необходима была поддержка ядром NETGRAPH, однако, начиная с FreeBSD6.0, это необязательно. Поскольку офисный маршрутизатор работает под FreeBSD 8.0, пересобирать ядро с поддержкой NETGRAPH не будем:

RSS-материал

Вставай, Україно!

Литература