Архив рубрики «делюсь опытом»

Надёжен ли Сбербанк?

Кабы знать, где упасть, там бы соломки подкласть. В начале девяностых у людей были заморожены банковские вклады, спустя несколько лет (через 10?) по ним были выплачены «копейки». Мой дед, наученный горьким опытом, старается все банки обходить стороной и всячески не доверяет им.

У меня есть карта VISA Classic (Aeroflot) от Сбербанка. У Сбербанка есть огромное преимущество — он есть везде.

В апреле мне захотелось подключить услугу Сбербанк ОнЛ@йн (см. УДБО), я написал заявление. С этих пор начались круги ада.

Услугу подключили через 3 дня, но она работала в режиме ограниченной функциональности. Мне предлагалось прийти в банк и подписать УДБО, который уже был подписан. Работники Сбербанка, как им и полагается, разбирались с этим на протяжении двух месяцев (если бы не пинал, то разбираться вообще бы не стали).

С 2003 года я менял паспорт три раза. После смены паспорта я всегда извещал об этом Сбербанк письменным заявлением (о смене паспортных данных). Как показала практика, пользы от этих заявлений нет никаких — в компьютер сведения никто не вносил. Умная система Сбербанк ОнЛ@айн сообразив, что с паспортами что-то не то решила ограничить доступ к моему счёту.

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

Срок моей карточки был до «06/10». В День города я зашел получить новую карту.

Вот здесь мне стало не по себе. Мой счёт «переоформили» на полного моего тезку (ФИО совпадает полностью), также клиента этого банка. Заменили всё — паспортные данные, адрес прописки, контактные телефоны. По сути я лишился своих денег.

Прошло уже 5 дней, так до сих пор разбираются.

Построение VPN с помощью IPSec между D-Link DIR-130 и сервером OpenSWAN

Мы с друзьями активно используем технологии построения частных сетей VPN IPSec. Особенностью IPSec является возможность объединить несколько распределённых локальных сетей в единое целое адресное пространство.

В настоящий момент на рынке имеется бюджетная модель маршрутизатора SOHO класса с поддержкой IPSec — это D-Link DIR-130. Стоимость такой штуки в Новосибирске колеблется в районе 4000 рублей.

Допустим, у нас имеется две точки.

В точке «A» установлен компьютер под управлением Linux, компьютер имеет IP-адрес 178.49.6.146 и является шлюзом для локальной сети 192.168.0.0/25.

В точке «Б» установлен маршрутизатор D-Link DIR-130, имеющий IP-адрес 178.49.6.151, и являющийся шлюзом для локальной сети 192.168.0.128/25.

Ниже я привожу инструкцию, которая позволит построить зашифрованный VPN IPSec туннель и установить прямую маршрутизацию между точками «A» и «Б».

Во-первых, на сервере под управлением Linux нам следует установить пакет OpenSWAN:

sudo apt-get install openswan

…и изменить значения параметров в файле /etc/sysctl.conf в соответствии с /etc/ipsec.d/examples/sysctl.conf:

# example entries for /etc/sysctl.conf
# forwarding is needed for subnet or l2tp connections
net.ipv4.ip_forward = 1

# rp_filter is stupid and cannot deal decrypted packets "appearing out of
# nowhere"
net.ipv4.conf.default.rp_filter = 0

# when using 1 interface for two networks, and in some other cases with
# NETKEY, the kernel thinks it can be clever but breaks things.
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.default.log_martians = 0
# these are non-ipsec specific security policies you should use
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0

Затем определить основные настройки и конфигурацию VPN-подключения в файле /etc/ipsec.conf. Ниже привожу пример конфигурации для нашего случая:

# /etc/ipsec.conf - Openswan IPsec configuration file
# RCSID $Id: ipsec.conf.in,v 1.15.2.6 2006-10-19 03:49:46 paul Exp $

# This file:  /usr/share/doc/openswan/ipsec.conf-sample
#
# Manual:     ipsec.conf.5

version	2.0	# conforms to second version of ipsec.conf specification

# basic configuration
config setup
	# plutodebug / klipsdebug = "all", "none" or a combation from below:
	# "raw crypt parsing emitting control klips pfkey natt x509 private"
	# eg: plutodebug="control parsing"
	#
	# !!!
	plutodebug=none
	klipsdebug=none
	strictcrlpolicy=no
	interfaces=%defaultroute
	protostack=netkey
	#
	# ONLY enable plutodebug=all or klipsdebug=all if you are a developer !!
	#
	# NAT-TRAVERSAL support, see README.NAT-Traversal
	nat_traversal=no
	#virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12
	#
	# enable this if you see "failed to find any available worker"
	nhelpers=0
	# Close down old connection when new one using same ID shows up.
	uniqueids=yes

# Add connections here

conn %default
	keyingtries=0
	disablearrivalcheck=no
	#authby=rsasig
	leftrsasigkey=%dns
	rightrsasigkey=%dns
	# Add connections here

conn MyConnection1
	type=tunnel
	left=178.49.6.146
	leftsubnet=192.168.0.0/25
	right=178.49.6.151
	rightsubnet=192.168.0.128/25
	keylife=3600s
	keyexchange=ike
	ike=3des-md5-modp1024
	ikelifetime=28800s
	esp=3des-md5
	pfs=yes
	authby=secret
	auto=start
	#DPD
	dpddelay=30
	dpdtimeout=120
	dpdaction=hold
include /etc/ipsec.d/examples/no_oe.conf

Следующим шагом будет задание пароля в файле /etc/ipsec.secrets:

178.49.6.151 178.49.6.146: PSK "mypassword"

На этом настройка OpenSWAN на сервере закончена, сервис следует перезапустить:

sudo ipsec setup restart

Для того, чтобы пакеты из локальной сети уходили в VPN-туннель, нам следует переопределить правило маскирования адресов для локальной сети 192.168.0.0/25 на сервере под управлением Linux (там, где у нас стоит OpenSWAN):

iptables -t mangle -A PREROUTING -d 192.168.0.128/25 -j MARK --set-mark 1
iptables -t nat -A POSTROUTING -s 192.168.0.0/25 -m mark ! --mark 1 -o eth1 -j SNAT --to-source 178.49.6.146

Переходим к настройке D-Link DIR-130. Во вкладке SETUP / VPN Settings создаём VPN профиль «IPSec — Internet Protocol Seecurity» со следующими параметрами:

IPSEC SETTING:
Enable: да;
Name : MyIPSec1;
Local Net /Mask: 192.168.0.128/25;
Выбрать: Site to Site;
Remote IP: 178.49.6.146;
Remote Local LAN Net /Mask : 192.168.0.0/25;
Authentication: Pre-shared Key: mypassword;
Local ID : IP address: 178.49.6.151;
Remote ID : IP address: 178.49.6.146;
#
PHASE 1:
Выбрать: Main mode;
NAT-T Enable: нет;
Keep Alive / DPD: DPD (Dead Peer Detection);
DH Group : 2 - modp 1024 bit;
IKE Proposal List :
#1: Chiper: 3DES, Hash: MD5;
#2: Chiper: 3DES, Hash: MD5;
#3: Chiper: 3DES, Hash: MD5;
#4: Chiper: 3DES, Hash: MD5;
#5: Chiper: 3DES, Hash: MD5;
IKE Lifetime : 28800 Seconds;
#
PHASE 2:
PFS Enable: да Perfect Forward Secrecy PFS;
PFS DH Group: 2 - modp 1024 bit;
IPSec Proposal List :
#1: Chiper: 3DES, Hash: MD5;
#2: Chiper: 3DES, Hash: MD5;
#3: Chiper: 3DES, Hash: MD5;
#4: Chiper: 3DES, Hash: MD5;
#5: Chiper: 3DES, Hash: MD5;
IPSec Lifetime : 3600 Seconds;

Сохраняем, на этом настройка закончена.

Что нам стоит Asterisk построить?

Ниже привожу инструкцию, которая позволит собрать самую свежую версию IP-PBX Asterisk с поддержкой протокола H323 (модуля chan_h323.so), Gtalk, Asterisk Add-Ons, DAHDI Linux / DAHDI Tools, LibPRI и LibSS7.

Первым делом нам следует установить пакеты, которые в дальнейшем потребуются при сборке приложений:

sudo apt-get install autoconf bison build-essential curl flex libgnutls-dev libtool libusrp-dev libusrp0 libxml2-dev ncurses-dev openssl subversion texinfo

Затем мы создадим символьную ссылку для файла compiler.h, необходимого для компиляции некоторых приложений (будьте внимательны с указанием текущей версии linux-headers-2.6.32-22):

sudo ln -s /usr/src/linux-headers-2.6.32-22/include/linux/compiler.h /usr/include/linux/compiler.h

Следующим шагом мы создадим каталог src в домашней директории в который загрузим и распакуем все необходимые пакеты исходных кодов требуемых нами приложений:

cd ~
mkdir src
wget ~/src
wget http://downloads.asterisk.org/pub/telephony/asterisk/releases/asterisk-1.6.2.9.tar.gz
tar xzf asterisk-1.6.2.9.tar.gz
wget http://downloads.asterisk.org/pub/telephony/asterisk/asterisk-addons-1.6.2.1.tar.gz
tar xzf asterisk-addons-1.6.2.1.tar.gz
wget http://downloads.asterisk.org/pub/telephony/dahdi-linux-complete/releases/dahdi-linux-complete-2.3.0.1+2.3.0.tar.gz
tar xzf dahdi-linux-complete-2.3.0.1+2.3.0.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libpri/releases/libpri-1.4.11.1.tar.gz
tar xzf libpri-1.4.11.1.tar.gz
wget http://downloads.asterisk.org/pub/telephony/libss7/releases/libss7-1.0.2.tar.gz
tar xzf libss7-1.0.2.tar.gz

В том числе библиотеки PWLib и OpenH323, необходимых для сборки канала H323.

wget http://sourceforge.net/projects/openh323/files/openh323/1.18.0/openh323-v1_18_0-src-tar.gz/download
tar xzf openh323-v1_18_0-src-tar.gz
wget http://sourceforge.net/projects/openh323/files/pwlib/1.10.0/pwlib-v1_10_0-src-tar.gz/download
tar xzf pwlib-v1_10_0-src-tar.gz

Собирать Asterisk, как и любое приложение, следует с конца.

Сборка и установка библиотеки PWLib:

cd ~/src/pwlib_v1_10_0
./configure
make clean opt
sudo make install

Сборка и установка библиотеки OpenH323:

cd ~/src/openh323_v1_18_0
export PWLIBDIR=~/src/pwlib_v1_10_0
./configure
make clean opt
sudo make install

Сборка и установка библиотеки LibPRI:

cd ~/src/libpri-1.4.11.1
make
sudo make install

Сборка и установка библиотеки LibSS7:

cd ~/src/libss7-1.0.2
make
sudo make install

Сборка и установка DAHDI Linux / DAHDI Tools:

cd ~/src/dahdi-linux-complete-2.3.0.1+2.3.0
make all
sudo make install
sudo make config

Для понта рекомендуется включить поддержку Gtalk, установив iksemel:

svn checkout http://iksemel.googlecode.com/svn/trunk/ iksemel-read-only
cd iksemel-read-only
./autogen.sh
./configure
make
make check
sudo make install

Переходим к сборке самого Asterisk:

cd ~/src/asterisk-1.6.2.9
export PWLIBDIR=~/src/pwlib_v1_10_0
export OPENH323DIR=~/src/openh323_v1_18_0
./configure

Выбираем необходимые нам модули, функции и медиафайлы для Asterisk в интерфейсе:

make menuselect

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

make
sudo make install

При первой установке Asterisk следует установить примеры конфигурационных файлов и добавить приложение в автозагрузку (/etc/init.d/) следующими командами:

sudo make samples
sudo make config

Asterisk практически готов к использованию, осталось повязать бантик, установив пакет дополнительных возможностей Asterisk Add-Ons:

cd ~/src/asterisk-addons-1.6.2.1
./configure
make
sudo make install
sudo make samples

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

fsck

Сегодня обновился до WordPress 3.0 и решил рассказать о том, куда я пропадал.

Две недели назад у меня слетел жёсткий диск на ноутбуке, незначительная часть работ была потеряна. Диск заменил, а вот лицензионную Windows Vista до сих пор не удалось восстановить, пока обхожусь Ubuntu 10.04 Netbook Edition.

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

Задумался об использовании сервиса Dropbox.

У всего этого есть и положительная сторона — в течении нескольких дней опубликую несколько инструкций по настройки таких сервисов, как Asterisk, OpenSWAN и Kannel.

кукуруза™

О бесплатной международной пластиковой карте MasterCard с возможностью оплаты услуг через интернет, SMS-уведомлениями и удалённым управлением (в т.ч. через интернет) ещё месяц назад можно было мечтать, а сегодня она уже есть — это проект кукуруза™ от «Евросети».

Проект стартовал 27 мая, и я сразу оформил себе такую карточку. Это обычная дебетовая карта моментального выпуска. Выдаётся бесплатно, при себе необходимо иметь паспорт с пропиской, 201 рубль и мобильный телефон (на него в виде SMS-сообщения придут все пароли). Плата за годовое обслуживание, пополнение счёта и оплату услуг (в т.ч. через интернет) не взимается. Снять деньги с карты можно в любом банкомате мира с комиссией 1% (минимальная сумма комиссии 100 рублей). Единственное ограничение — на банковском счёте карты не должно быть больше 150 тысяч рублей. В роли банка-эмитента выступает ООО «РНКО „Платёжный центр“».

Впрочем, кукуруза™ это не только кредитка а ещё и интересный проект, который содержит в себе большое количество разнообразных, но одинаково полезных сервисов — скидки в «Евросети» и у партнеров, IP-телефония и другие сервисы.

P.S. При оплате услуг через интернет в поле владелец карты (cardholder name) следует указать тринадцатизначный штрих-код карты, например 1234567890123 (см. картинку).

P.P.S. Аналогичная карта есть и у ГК «Связной» (см. здесь) — это совместный проект двух российский ритейлеров, отличается только одёжкой и контактными телефонами.

Посекундный международный роуминг от Билайн

Отправил родителей в Турцию с подключенной услугой Комфортный роуминг на билайновском номере. Суть услуги заключается в том, что сразу приобретается 100 минут входящей связи в национальном или международном роуминге за 895 рублей (минуты следует потратить в течении месяца).

Предложение само по себе очень выгодное — при подключении пакета стоимость разговора снижается в 8 (восемь) раз!

Какого же было моё удивление, когда я сначала по детализации, а потом и от оператора центра поддержки клиентов 0654 узнал, что эти минуты для абонентов предоплатной системы расчётов расходуются посекундно!

В общем, тем кто собирается отдохнуть за границей, рекомендую приобрести SIM-карту Билайн, и ни в коем случае не попадаться на лохотрон эстонских операторов типа SIMTRAVEL или ГУДЛАЙН (это одна шайка-лейка). Оставьте лучше свои деньги в кошельке российского оператора!

Резонанс моста

То, что вы видели в Волгограде — это детские игрушки, цветочки:

Мне удалось увидеть при испытаниях картину похлеще. Что-то на подобии вот такого (съёмки 40-х годов):

Посмотрите также фотографии из альбома Семипалатинск-2005.

Обновил скрипт для скачивания музыки с сайта vkontakte.ru

См. здесь.

Новотелеком не умеет работать с корпоративными клиентами

Утро. Понедельник. Потребовалось подключить корпоративную точку к ISP Новотелеком.

Сначала хотим ознакомиться с тарифами, заходим на соответствующую страничку. Видим, ага, тарифов нет, компания хочет чтобы звонили им, но это и понятно, тем более кризис. Сразу в глаза бросается контактный номер телефона 2090000 с расширением 288. И первые мысли, которые приходят в голову — компании не выгодно работать с корпоративным сектором. Почему? Да потому что только кастрированный мудак не выделит специальный номер для корпиков. Зачем потенциальному корпику слышать все рассказы о чудесах «Электронного города» на общей линии? Корпику нужно знать:

  1. Цены.
  2. Сроки.
  3. Технические условия (BGP–маршрутизация и прочее).

Ну ладно… звоню 2090000. Звучит фраза «для соединения с сотрудником компании нажмите семь». Нажимаю семь. Фраза «ваш вызов переводится на оператора справочной службы» меня полностью убила. Прощаю. Прошу соединить 288. Жду. Через 20 секунд получаю ответ, что «сейчас никого нет на месте, перезвоните позднее» и кидают трубку!

Через пять минут ситуация повторяется.

Мои первые мысли подтверждаются…

Вы не поверите, но ровно пять лет назад…

Ровно пять лет назад (2005-03-11T10:05:32Z) появился на свет мой домен ksn.name. С тех пор у меня появилась постоянная «прописка» в сети. Но всё же, этому предшествовало несколько событий, о которых я хочу рассказать.

2000 год

Умею пользоваться интернетом, но ни почтового ящика, ни ICQ не имею.

Летом уезжаю на каникулы в Семипалатинск к бабушке и дедушке. Отец даёт мне денег и свой рабочий адрес электропочты, и советует по приезду найти в городе интернет–кафе, зарегистрировать почту на Апорте (Яндекса тогда в помине не было) и написать ему «тестовое письмо».

Интернет–кафе в Семипалатинске, с помощью друзей, я нашел довольно быстро. Оно располагалось на правом берегу. На следующий день двадцать минут пешком и я на месте. Кликаю по буковке «е» и… открывается не Апорт, как это было всегда (позже узнаю что такое стартовая страничка), а www.rax.ru (царство ему сетевое). Мне анимированным баннером предлагается завести почтовый ящик. Забыв про всё на свете, рожаю свой самый первый ksn@rax.ru. Всё лето я на rax`се. Позже я про него плавно забываю, и он пропадает.

2002 год

Учусь в 10 классе. Многие транспортные компании, типа Еврошина и Гермес–Транзит (царство им дорожное) имеют большое желание иметь в офисе нормальные телефоны, а не сидеть на Алтае. Я им предлагаю свои услуги в содействии установки ISDN–линий. У людей появляются многоканальные телефоны с тональным набором и определителем номера (последнее вообще было невиданным чудом). Начинаю крутиться, мне требуется мобильный телефон и я совершаю покупку Motorola M3688 в офисе ЗАО «Сибирские сотовые системы — 900» (по бумаге, на деле уже МТС). Билайн тогда ещё не по зубам. Моим первым номером стал +79029004781 (договор до сих пор сохранился).

Так вот. При чём тут сотовый телефон? Дело вот в чём, МТС спустя некоторое время запускает развлекательный портал www.mts-life.ru (царство ему сетевое) с возможностью интеграции почтового ящика и мобильного телефона (как только сообщение приходило на почту, так сразу же поступало SMS–уведомление). Я регистрируюсь и получаю рабочую электронку ksn@mts-life.ru. Этот ящик был указан даже на визитках. Прожил он больше пяти лет.

2004 год

Первый курс института. Портал MTS-life перестаёт поддерживаться, постоянно даёт сбои. Я понимаю, для того, чтобы сохранить контакты нужно регистрировать свой домен. Направляю заявку на регистрацию домена третьего уровня ksn.nsk.ru. Администратор зоны nsk.ru компания Инфотека закрепляет домен ksn.nsk.ru за мной. Не делегирует, а лишь создаёт A–запись на статический IP–адрес мобильного телефона. Затраты на хостинг и поддержку DNS я не могу себе позволить. Доменом я так и не пользовался.

Также у меня имеется адрес электронной почты sergkor@rol.ru, но я им не пользуюсь, и первая страничка http://user.rol.ru/~sergkor (с убогим зелёным дизайном). Сайт был сделан со знанием HTML`а на FrontPage`е. Что на нём было уже не помню.

2005 год

Сдана первая сессия. Я понимаю, что без персонального дома мне никуда. Решаю регистрировать домен без географической привязки. Узнаю про новый домен .name для частных лиц. Ищу самые доступные тарифы. И нахожу их на webgo.ru (НетДрайв`е — ныне это системы web–решений). Договариваюсь с молодым человеком из техподдержки (позже познакомились — это был Виталий Шиндин, позже он создал социальную сеть locals.ru). Виталий мне сообщил свои реквизиты и я перевел 450 рублей через Сбербанк. Домен должны были зарегистрировать 10 марта. Я звоню Виталию домой, видимо бужу. Он сообщает, что зарегистрировать трёхбуквенный домен нельзя по правилам (действительно, раньше было нельзя). Я убеждаю его, что правила в 2004 году изменили, прошу попробовать ещё раз. Парень хочет спать и соглашается на всё.

Вечером домен регистрируется.

Первым моим хостинг провайдером стал НетДрайв (с 2005 по 2007 год). Ребятам я благодарен, работали хорошо.

Прописываюсь по адресу mail@ksn.name (и по сей день на нём).

Убогий зелёный сайт переносится на новый домен.

2006 год

От очаровательной девушки узнаю, что под словом «мыльцо» имеется в виду адрес электронной почты.

Создаётся вторая «чёрно-белая» версия сайта на Parser`е.

2007 год

Ситуация на рынке стала меняться и ребята из НетДрайва занимались уже другими проектами. В один прекрасный вечер перестаёт работать панель управления доменами manager.webgo.ru, которая была ресселеровской на индийском сервисе www.directi.com.

Прописываю в файле hosts нужный IP. Регистрируюсь на сервисе Directi как конечный пользователь. Переношу домен ksn.name с ресселеровской площадки на персональную. Сам продляю ему жизнь кредитной картой на один год. С тех пор всё в моих руках.

Убивается сайт полностью (он мне не нравится). Я всё никак не могу собраться наверстать что–то новое.

2008 год

Домен хостился в трёх местах. Сначала в Сибирьтелекоме (месяц), потом на Мастерхосте, затем полгода снова в Сибирьтелекоме. Мастерхост (полгода). Затем на домашнем сервере (по сей день).

С 2008 года пользуюсь службами Google Apps (электронная почта).

Lecactus соблазняет меня WordPress`ом. Первая статья в блоге появляется 21 августа 2008 года.

11 марта 2010 год — домену исполнилось 5 лет.

Что нового у Сбербанка России?

Для того, чтобы продлить свой домен (11 марта домену ksn.name исполнится 5 лет) пошёл вносить 500 рублей на сбербанковскую визу, специально созданную для этих дел.

На пороге я заметил, что наименование и номер отделения изменились. Теперь я входил в двери Левобережного отделения №8047 (до этого 5503) Сибирского банка Сбербанка России.

Деньги я вносил как обычно через терминал. Машинка бумажку проглотила, а вот чек печатала очень долго (больше минуты). Я заподозрил что–то не ладное. Так и есть. Пришёл домой и проверил свой баланс по телефону 8–8002003747, деньги были зачислены моментально. Раньше эта операция занимала от 3 до 8 часов. Впрочем, у каждого случая есть свои плюсы.

Не ходите люди в Банк Русский Стандарт

Не рассматривайте этот банк своим кредитором.

Не открывайте счета в этом банке.

Не переводите платежи на счета этого банка.

Не обменивайте валюту в этом банке.

Игнорируйте все письма от этого банка.

Если вам попала в руки брошюра этого банка — с ужасом разомкните руки.

Удалите из записной книжки все телефоны этого банка.

И тем более никогда не рассматривайте этот банк своим РАБОТОДАТЕЛЕМ. Он набирает нормальных девчонок, закончивших ВУЗ, к себе на работу на режим 10x7x30 за 10000 рублей! Именно на 30 — ни одного выходного! НИ ОДНОГО! ЗА 10 (десять) тысяч рублей!

Моя знакомая, на днях покинула этот ад.

// Для банка — с такими условиями вы долго не продержитесь. Задумайтесь пока не поздно! ПОЗОР!

Распределённый трафик (для блога WordPress)

Обычно, я не рассказываю читателю о технической стороне работы моего сайта, но некоторыми вещами захотелось поделиться.

До недавнего времени мой ресурс целиком и полностью отдавался по домашнему ADSL Annex B каналу, исходящая скорость на котором не превышает 600 Кбит/с. В принципе, канала хватало, но ровно до тех пор, пока я не начал развешивать в каждом посте по десятку фотографий.

Главная страница моего блога весит от 5 до 8 мегабайт. Для того, чтобы отдать весь контент посетителю за 10 секунд, нужно иметь скорость соединения не менее 10 мегабит. А если кидаешь ссылку на форум о наличии вновь опубликованного поста, то в раз к тебе приходят до 20 человек. Здесь нужно уже иметь гигабитный интерфейс, чтобы для каждого посетителя процесс загрузки фотографий остался незаметным.

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

Задача была решена следующим образом.

Начиная с версии 2.6 в WordPress появилась замечательная возможность указания пути размещения и загрузки для контента и плагинов (см. wp-config.php). Т.е. владелец блога может указать следующие вещи:

1. Локальный путь к папке wp-content, в которой находится контент:

define( 'WP_CONTENT_DIR', $_SERVER['DOCUMENT_ROOT'] . '/wp-content' );

2. Полный URI путь–префикс к папке wp-content:

define( 'WP_CONTENT_URL', 'http://wp-content.ksn.name');

3. Локальный путь к папке plugins:

define( 'WP_PLUGIN_DIR', $_SERVER['DOCUMENT_ROOT'] . '/wp-content/plugins' );

4. Полный URI путь–префикс к папке plugins:

define( 'WP_PLUGIN_URL', 'http://ksn.name/wp-content/plugins');

Конечный слэш («/») не указывается!

Как вы уже догадались, я воспользовался возможностью определения полного URI путь–префикса к папке wp-content и перенёс (на самом деле продублировал) весь контент на другой субдомен. Теперь стало возможным отдавать тяжёлый статический груз WordPress блога с совершенно другого сервера/хостинга (или нескольких серверов, если правильно настроить DNS).

В качестве сервера для контента послужила виртуальная win–площадка Мастерхост за 150 рублей в месяц. Почему windows, скажете вы… Всё дело в том, что в отдаче статического контента IIS равных нет. К тому же, я давно задумывал родить несколько сервисов на ASP.NET (windows–хостинг был выбран без колебаний).

Итак, я скопировал всё содержимое директории wp-content на хостинг и определил константы в файле wp-config.php.

После проделанного сайт работоспособен, но… URI пути к фотографиям в постах остались прежними и начинаются с http://ksn.name, т.е. основная нагрузка трафика остаётся на прежний канал. Открывать каждый пост и переписывать пути занятие нецелесообразное, поэтому дополнительно был применён швейцарский нож URL преобразований — mod_rewrite, и в корневой файл .htaccess были внесены две строчки (для папки загрузок и фотографий):

<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /

RewriteRule ^wp-content/gallery/(.*)$ http://ksn.name/wp-content/gallery/$1 [R=303,L]
RewriteRule ^wp-content/uploads/(.*)$ http://ksn.name/wp-content/uploads/$1 [R=303,L]

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
RewriteCond %{HTTP_HOST} !=ksn.name
RewriteRule ^(.*) http://ksn.name/ [R=301]
</IfModule>

Таким образом, при запросе картинки с адресом http://ksn.name/wp-content/uploads/2009/12/S-MPH-0895_11.jpg Apache сообщит браузеру посетителя «смотри по адресу http://wp-content.ksn.name/uploads/2009/12/S-MPH-0895_11.jpg», и картинка будет загружена с веб–сервера wp-content.ksn.name.

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

На что следует обратить внимание?

  1. При добавлении нового контента, через библиотеку медиафайлов, его необходимо продублировать на сервер контент–хостинга дополнительно ручным способом.
  2. Практически все хостинг–провайдеры не требуют дополнительной оплаты за размещение данных на субдоменах. К тому же, хостинг статического контента в 2 раза дешевле хостинга с возможностью запуска скриптов, а его цена, как я уже говорил, не должна превышать 150 рублей.
  3. Приведённые выше инструкции полезны как блогерам со стажем, так и начинающим. Чем раньше разнесён контент,тем проще им будет управлять в будущем.

P.S. Переопределением путей для папки плагинов работает полноценно, но с ним, на мой взгляд, лучше не экспериментировать.