пятница, 25 марта 2011 г.

Настройка NetFlow сенсора на Cisco и коллектора на Debian

В прошлом году, в середине декабря, вышестоящее руководство по моему департаменту запросило суточную статистику в разрезе по IP-адресам по загрузке канала, соединяющего наш филиал с корпоративной сетью. Канал этот с нашей стороны заходит на один из портов маршуртизатора Cisco 2821. Недолго думая я решил прибегнуть к проверенному средству - NetFlow и пакету flow-tools. Может потом когда-нибудь пригодится мне или кому-нибудь ещё.

Для начала настроим NetFlow-сенсор на маршрутизаторе:
ip flow-export version 5
ip flow-export destination 192.168.0.1 9000
ip flow-export source GigabitEthernet 0/0
ip cef

interface GigabitEthernet 0/1
  ip flow ingress
  ip flow egress
  ip route-cache flow
  no ip mroute-cache
192.168.0.1 - это адрес компьютера, на котором настроен коллектор,
9000 - это UDP-порт на этом компьютере, куда будет сыпаться статистика,
GigabitEthernet 0/0 - это интерфейс, с которого будет исходить поток статистики,
GigabitEthernet 0/0 - это интерфейс, статистика трафика которого будет сниматься.

Теперь пришёл черёд NetFlow-коллектора. Поставим пакет flow-tools:
# apt-get install flow-tools
И зададим настройки коллектора в файле /etc/flow-tools/flow-capture.conf:
-w /var/flow/cisco2821 -n 24 -N 3 192.168.0.1/192.168.0.2/9000
/var/flow/cisco2821 - каталог с отловленными файлами потоков,
192.168.0.1 - адрес компьютера, а точнее - того интерфейса, на который льётся поток,
192.168.0.2 - адрес маршуртизатора Cisco 2821, с которого будет идти поток,
9000 - UDP-порт компьютера, на который будет сваливаться поток,
24 - количество ротаций журналов с потоком в сутки (по какой-то непонятной причине количество ротаций и момент их срабатывания всё-же не поддаются точному расчёту, поэтому это лишь приблизительная настройка),
3 - расфасовка файлов по подкаталогам вида YYYY/YYYY-MM/YYYY-MM-DD/

Обязательно нужно создать каталог для файлов /var/flow/cisco2821/:
# mkdir -p /var/flow/cisco2821/
И можно запускать коллектор:
# /etc/init.d/flow-capture start
С помощью следующей команды нужно убедиться, что коллектор запустился и приступил к работе:
# netstat -4nlp | grep 9000
Нужно также не забыть проковырять дырочку в пакетном фильтре, чтобы он не отбрасывал пакеты (это вы сделайте сами).

Пока статистика собирается, можно заняться фильтрами. Например, можно создать фильтр, отбирающий статистику только за рабочее время (хотя была запрошена в первую очередь суточная статистика). Например, в файл /etc/flow-tools/cfg/filter.cfg пропишем вот такие правила:
filter-primitive work-time-start
  type time
  permit gt 9:00

filter-primitive work-time-end
  type time
  permit lt 18:00

filter-definition work-time
  match start-time work-time-start
  match end-time work-time-end
Теперь этот фильтр можно использовать в команде flow-nfilter, которую можно включить в конвейер:
$ cd /var/flow/cisco2821/2010/2010-12/2010-12-16/
$ flow-cat ft-v05.2010-12-16.1* \
  | flow-nfilter -f /etc/flow-tools/cfg/filter.cfg -Fwork-time \
  | flow-stat -f10 > stat.txt
flow-cat объединяет отобранные файлы за сутки 2010-12-16,
flow-filter отбирает из объединённого потока ту информацию, которая соответствует правилу work-time,
flow-stat с опцией -f10 создаёт отчёт из пяти колонок: IP-адрес отправителя, IP-адрес получателя, количество соединений (уникальных триплетов протокол/порт-отправителя/порт-получателя), количество байт, количество пакетов.

Декодирование писем в формате TNEF в Postfix

Вчера столкнулся с интересной проблемой, корень которой в очередной раз нашёлся в Microsoft. Один из сотрудников пожаловался, что некоторые письма к нему приходят без вложений. Я попытался разобраться в ситуации и выяснил, что письма в почтовом клиенте имеют точно такой же размер, какой они имеют, когда их принимает Postfix. Стало быть почтовый сервер, почтовый клиент, антивирус на сервере и на компьютере почтового клиента никаких изменений в письма не вносят.

Потом я обратил внимание на размер письма (несколько сотен килобайт) и на отображаемый в клиенте текст. Письмо было явно слишком большим для такого небольшого объёма информации. Я заглянул в исходный текст письма и обнаружил, что в нём имеется вложение с именем файла "winmail.dat" и MIME-типом "application/ms-tnef".

Я заинтересовался, а что же это вообще такое и обнаружил, что это изобретённый Microsoft новый формат для писем, а понимают его только почтовые клиенты Outlook и те клиенты, разработчики которых специально озаботились этой проблемой. Письмо открывалось с помощью изделия той же фирмы Microsoft - Outlook Express, но изделие молча игнорировало попытки старшего брата донести до него информацию.

Первым делом я нашёл рецепт отключения этой фичи в Outlook отправителя
Файлы winmail.dat в письмах и отправил эту ссылку отправителю.

Предвидя возможные повторы этой проблемы и необходимость снова и снова отправлять эту ссылку разным людям, я поискал, а нельзя ли этот TNEF преобразовывать прямо на сервере? Нашёл следующую заметку Postfix + ytnef filter, которая, к слову, была написана всего полтора месяца назад. Так что если бы я столкнулся с проблемой раньше, возможно мне так и пришлось бы отправлять людям ссылку.

Там описывается настройка прокси-конвертера ytnef smtpd для FreeBSD. Поскольку у меня сервер работает под Debian Lenny, я решил выложить тут адаптированный вариант, а иначе просто ограничился бы ссылкой.

Итак, перво-наперво, ставим сам конвертер ytnef и python:
# aptitude install --with-recommends ytnef
# aptitude install python
Качаем архив со скриптом по ссылке и распаковываем его:
$ wget http://www.viraj.org/ytnef_smtpd/ytnef_smtpd-1.1.tar.gz
$ tar xzvf ytnef_smtpd-1.1.tar.gz
$ cd ytnef_smtpd-1.1
Копируем скрипт туда, где ему положено лежать:
# cp ytnef_smtpd.py /usr/local/bin/
# chmod +x /usr/local/bin/ytnef_smtpd.py
И меняем настройки скрипта, которые находятся в нём самом-же. У меня в Postfix уже есть два прокси, первый сканирует письма на предмет наличия вирусов, а второй проставляет оценки уровня спама. Наша задача - встроить новый прокси в начало цепочки, чтобы сначала письмо преобразовывалось, а затем уже проверялось и оценивалось.

Приведу лишь изменённые строки:
LISTEN_PORT = 10028
REMOTE_PORT = 10026
YTNEF_BIN = '/usr/bin/ytnef'
FILE_BIN = '/usr/bin/file'
LOG_FILE = '/var/log/ytnef_smtpd.log'
Скрипт будет ожидать подключений к порту 10028, а преобразованное письмо будет отправлять на порт 10026, где его будет ловить уже антивирус.

Теперь создадим скрипт автозапуска /etc/init.d/ytnef_smtpd.sh (он немного отличается от оригинала):
#!/bin/sh

case "$1" in
  start)
    if [ -f /var/run/ytnef_smtpd.pid ]
    then
      echo "Script already launched. PID: "`cat /var/run/ytnef_smtpd.pid`"
    else
      echo "Starting ytnef smtpd..."
      /usr/local/bin/ytnef_smtpd.py &
      echo $! > /var/run/ytnef_smtpd.pid
      echo "...Done!"
    fi
    ;;
  stop)
    if [ -f /var/run/ytnef_smtpd.pid ]
    then
      echo "Shutting down ytnef smtpd..."
      kill -TERM `cat /var/run/ytnef_smtpd.pid`
      rm -f /var/run/ytnef_smtpd.pid
      echo "...Done!"
    else
      echo "ytnef smtpd not launched."
    fi
    ;;
  *)
    echo "Use start script for: { start | stop }" >&2
    exit 1
    ;;
esac
Пропишем его автозапуск и запустим:
# chmod +x /etc/init.d/ytnef_smtpd.sh
# update-rc.d ytnef_smtpd.sh defaults
# /etc/init.d/ytnef_smtpd.sh start
Теперь скрипт должен прослушивать порт 10028, это можно проверить следующей командой:
# netstat -nlp4 | grep 10028
Если это так, значит пока что всё идёт нормально.

Теперь нужно перенастроить Postfix, так чтобы он перенаправлял только что полученные письма на обработку ytnef smtpd.

В файле /etc/postfix/main.cf прописываем порт первого прокси в цепочке (в нашем случае это порт ytnef smtpd - 10028):
content_filter = scan:127.0.0.1:10028
И если до этого у вас не было прокси, добавляем в файл /etc/postfix/master.cf следующие строчки (обратите внимание на пробелы в начале всех строк, кроме первой):
127.0.0.1:10025 inet n - n - 16 smtpd
  -o content_filter=
  -o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
  -o smtpd_helo_restrictions=
  -o smtpd_client_restrictions=
  -o smtpd_sender_restrictions=
  -o smtpd_recipient_restrictions=permit_mynetworks,reject
  -o mynetworks_style=host
  -o smtpd_authorized_xforward_hosts=127.0.0.0/8
Эти строчки настроят ещё один smtp-сервер, который будет принимать письма на порту 10025 только от локальных программ, но при этом не будет отправлять письма на дальнейшую проверку. Именно этот порт необходимо указать в настройке "REMOTE_PORT", если у вас больше нет никаких прокси в цепочке.

Осталось перезапустить postfix и всё должно заработать:
# /etc/init.d/postfix restart
Я специально ради этого устанавливал себе на компьютер Outlook, отправил из него письмо в формате tnef и принял в Outlook Express. Письмо прочиталось вместе с вложениями.

Что случится, когда компьютеры перестанут уменьшаться?

Перевод статьи: What happens when computers stop shrinking?
Переводчики: Владимир Ступин, Егор Калиничев.
Переведено на сайте коллективных переводов translated.by

19 марта 2011, Мичио Каку (Michio Kaku)

Примерно в 2020, эпоха уменьшающихся интегральных схем подойдёт к концу -- и нам лучше подготовиться к этому

Эта статья является сокращённым изложением из новой книги Мичио Каку, "Физика будущего."

Я отлично помню, как я сидел в офисе Марка Вейсера в Кремниевой Долине почти двадцать лет назад, когда он объяснял мне его видение будущего. Жестикулируя руками, он азартно объяснял мне, что должна была произойти новая революция, которая изменит мир. Вейсер был членом компьютерной элиты, работавшей в исследовательском центре Xerox в Пало Альто (том самом, где были созданы первый персональный компьютер, лазерный принтер и оконная среда с графическим интерфейсом пользователя), но он был бунтарём, протестовавшим против значков, что противоречило общепринятому соглашению, а также он был членом неистовой рок-группы.

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

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

Это была эпоха споров, для которой Вейсер придумал выражение "вездесущих компьютеров." Заглядывая в далёкое прошлое персонального компьютера, он предсказал, что микросхемы однажды станут настолько дешёвыми и доступными, что они проникнут во всю окружающую обстановку -- в нашу одежду, мебель, стены, в наши тела. И они все будут подключены к Интернет, предоставляя доступ к данным друг друга, делая нашу жизнь более приятной, отражая все наши желания. Куда бы мы ни направились, микросхемы будут незаметно выполнять наши желания. Среда станет живой.

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

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

Основополагающим источником пророческой мечты Вейсера было нечто называемое законом Мура, эмпирическое правило, которое двигало компьютерную промышленность в течение пятидесяти, а то и больше, лет. Оно задавало темп современной цивилизации как часовой механизм. Закон Мура просто говорил, что мощность компьютеров удваивается каждые восемнадцать месяцев. В соответствии с ним, каждый Новый год вы получаете новые компьютерные игры как минимум в два раза мощнее (в терминах количества транзисторов), чем в прошлом году. Кроме того, по прошествии лет, эта увеличивающаяся шкала превратилась в колоссальную. Например, когда вы получаете по почте поздравительную открытку, она часто снабжена микросхемой, которая поёт вам поздравительную песню. Удивительно, что эта микросхема обладает большей вычислительной мощностью, чем все Союзные войска в 1945. Гитлер, Черчиль или Рузвельт могли бы убить ради этой микросхемы. Но что мы с ней делаем? После праздника мы выбрасываем открытку вместе с микросхемой. Сегодня ваш мобильный телефон обладает большей вычислительной мощностью, чем всё оборудование NASA, которое позволило им в 1969 высадить двоих астронавтов на луне. Видеоигры, требующие чудовищной вычислительной мощности для моделирования трёхмерных сцен, используют больше вычислительной мощности, чем мэйнфреймы предыдущего десятилетия. Сегодня Sony PlayStation, которая стоит $300, обладает мощностью военного суперкомпьютера 1997, который стоил миллионы долларов.

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

Если эти микросхемы будут встроены в технику, она чудесным образом преобразится. Если микросхемы встроить в печатные машинки, они становятся текстовыми процессорами. Если вставить их в телефоны, они становятся мобильными телефонами. Если их встроить в камеры, они становятся цифровыми камерами. Автоматы для игры в пинбол становятся видеоиграми. Аудиопроигрыватели становятся iPod'ами. Самолёты становятся смертельными беспилотниками Predator. После каждого революционного преобразования промышленность перерождается. Со временем, практически всё вокруг станет умным. Микросхемы станут настолько дешёвыми, что они станут стоить меньше пластиковой упаковки и смогут заменить штрих-код. Компании, не сделавшие свою продукцию умной могут оказаться выброшенными за борт конкурентами, которые сделают.

Конечно, мы по-прежнему будем окружены мониторами компьютеров, но они примут вид обоев, фоторамок или семейных фотографий, а не компьютеров. Представьте все картины и фотографии, украшающие ваш сегодняшний дом; теперь представьте, что каждая из них стала анимированной, движущейся и подключенной к Интернет. Когда мы выйдем наружу, мы сможем увидеть движущиеся картинки, поскольку они будут стоить так же мало, как и неподвижные.

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

Сегодня входя в комнату мы не задумываясь начинаем искать выключатель для света, поскольку подразумевается, что в стенах проложена электропроводка. В будущем первой вещью, которую мы будем искать при входе в комнату - это окно в Интернет, потому что мы будем подразумевать, что комната умная. Как однажды сказал писатель-романист Макс Фрищ, "Технология - это привычка упорядочивать мир, который мы не можем прочувствовать."

Нам хочется спросить: до каких пор будет продолжаться эта компьютерная революция? Если закон Мура будет действовать следующие пятьдесят лет, вполне возможно, что компьютеры смогут скоро превзойти вычислительную мощность человеческого мозга. К середине века возникнет новая закономерность. Как однажды сказал Джордж Харрисон, "Всё когда-нибудь проходит". Закон Мура тоже должен закончиться, а с ним и значительный рост вычислительной мощности, который подпитывал рост экономики последние полвека.

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

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

Много лет назад, когда мы, физики, указывали на неизбежность краха закона Мура, промышленность обычно лишь иронизировала над нашими предупреждениями, относясь к нам, как к волкам, воющим на луну. Конец закона Мура предрекался неоднократно, но они просто не могли в это поверить.

Но не теперь.

Два года назад, я был ключевым докладчиком на конференции Microsoft в их штаб-квартире в Сиэтле, штат Вашингтон. Три сотни ведущих инженеров Microsoft присутствовали на этой встрече, ожидая услышать мою речь о будущем компьютеров и телекоммуникаций. Возвышаясь над огромной толпой, я мог видеть лица молодых, полных энтузиазма инженеров, которые создавали программы для настольных компьютеров и ноутбуков. Я резко высказался о законе Мура, и сказал что промышленность должна готовиться к грядущему кризису. Десятилетие назад я мог вызвать громкий смех или сдавленное хихиканье. Но в этот раз я видел только согласные кивки головами.

Коллапс закона Мура будет иметь международное значение, сопряжённое со ставками в миллиарды долларов. Но определённо, как он закончится и что его заменит, зависит от законов физики. Ответ на вопросы физики станет краеугольным камнем экономической структуры капитализма.

Чтобы понять сложившуюся ситуацию, важно понимать, что выдающийся успех компьютерной революции основывается на нескольких физических принципах. Первое, компьютер обладает умопомрачительной скоростью, поскольку электрические сигналы распространяются со скоростью близкой к скорости света, которая является максимальной скоростью во вселенной. За одну секунду луч света может совершить путешествие вокруг земли семь раз или достичь луны. Электроны также легко перемещаются и слабо связаны с атомом (и их можно соскрести при расчёсывании волос, при ходьбе по ковру или при надевании одежды -- это причина, по которой вещи липнут). Сочетание слабой привязанности электронов и их огромной скорости позволяет нам отправлять электрические сигналы в невероятном темпе, что привело к революции электричества в прошлом веке.

Второе, в сущности не существует предела объёма совокупной информации, которую можно поместить на лазерный луч. Световые колебания, поскольку они колеблются гораздо быстрее звуковых колебаний, могут нести значительно больше информации, нежели звук. (Например, представьте длинный кусок натянутой верёвки а затем быстро потрясите один из концов. Чем быстрее вы трясёте один конец, тем больше сигналов вы можете отправить вдоль верёвки. Следовательно, совокупность информации, которую вы втисните в волну растёт с увеличением скорости, с которой вы трясёте верёвку, то есть с увеличением частоты колебаний.) Свет - это волна, колеблющаяся с частотой порядка 10^14 циклов в секунду (это 1 с 14 нулями). Чтобы передать один бит информации (1 или 0), требуется множество циклов. Это означает, что оптоволоконный кабель может нести примерно 10^11 бит информации на одной частоте. И это число можно увеличить, если пустить по одному оптическому волокну несколько сигналов, а затем связать несколько волокон в одном кабеле. Это означает, что увеличив количество каналов в кабеле, а затем увеличив количество кабелей, можно передавать информацию практически с неограниченной скоростью.

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

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

Проектирование надписи для массовой футболки начинается с создания трафарета с очертаниями образца того, что вы хотите создать. Затем трафарет помещается над одеждой и используется окраска спреем. Только там, где были прорези, краска попадёт на одежду. Когда трафарет удалён, получается совершенная копия шаблона на футболке.

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

После этого пластина погружается в кислоту, которая вытравливает очертания схем и создаёт сложный дизайн миллионов транзисторов. Так как пластина состоит из множества проводящих и полупроводниковых слоёв, кислота может вырезать куски различной формы и глубины, позволяя создавать неимоверно сложные схемы.

Причина неуклонного увеличения мощности микросхем по закону Мура состоит в том, что ультрафиолетовое излучение позволяет уменьшать и уменьшать длину волны, делая возможным вытравливание все более мелких транзисторов на кремниевых пластинах. Поскольку ультрафиолетовое излучение имеет длину волны в 10 нанометров (нанометр это одна миллиардная доля метра), самый маленький транзистор, который вы можете вытравить, имеет размер около 30 атомов в ширину.

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

Около 2020 года или чуть позднее, закон Мура окончательно перестанет соответствовать действительности, и Кремниевая Долина может медленно превратиться в Ржавый Пояс*, если не найдёт замену этой технологии. Транзисторы станут так малы, что квантовая механика и ядерная физика будут действовать на них, и электроны будут утекать из проводов. Например, самый тонкий слой внутри вашего компьютера будет около пяти атомов шириной. На этом уровне, согласно законам физики, вступает в свои права квантовая механика. Принцип неопределённости Гейзенберга утверждает, что вы не можете одновременно знать положение и скорость некоторой частицы. Это может звучать нелогично, но на уровне атомов вы просто не можете знать, где находится электрон, так что он никогда не может быть заперт в ультратонком слое или проводе и обязательно утечет наружу, вызывая короткое замыкание. Согласно законам физики, в конечном итоге Эпоха Кремния подойдёт к концу, и мы вступим в Пост-Кремниевую Эру.

*) Ржавый Пояс - северо-восточная и средне-западная часть США, характеризующиеся устаревающей промышленностью, старыми заводами и снижением населения. Центром её являются города по производству стали в Пенсильвании и Огайо. (прим. перев.)

Выдержки из "Физика Будущего", Мичио Каку. (c) 2011 Мичио Каку. Взято с разрешения Doubleday, подразделения Random House, Inc. Все права защищены. Никакая часть из этих выдержек не может быть воспроизведена или напечатана без письменного разрешения издателя.

Мичио Каку - профессор физики в CUNY Graduate Center, со-основатель полевой теории струн и автор нескольких научных работ. Его новая книга - "Физика Будущего."