Архив

Архив автора

Склько можно заработать на sape?

29 августа 2010 admin Нет комментариев

И так господа, есть у меня сайт, с ТИЦ60 и PR2 в индексе яндекса на нём чуть более 18 000 страниц.
Добавил его в sape на сегодня прибыль около 23х рублей в сутки…
Начал изучать, что не так, ну и разумеется оказалось, что в индексе сапе попало всего 2000 страниц, всяко разно игрался с ценами и т.п…

Начитался очень много всего по всяким СЕО форумам, и решил попробовать “отжать сайт”.

Стата сапы

моё сапе

Как видно, сегодня это даже позорно на фоне вот таких скринов.

Чужое сапе

Вот и ставлю цель начать зарабатывать хотя бы  300р. в сутки ;)

Сайт специфический на поисковую выдачу мне всёравно на тиц и ПР тоже :)

По хожу достижений буду описывать что и как :)

Categories: Новости Tags:

Сброс root пароля Mysql

28 августа 2010 admin Нет комментариев

И так, для начала останавливаем демона.

sudo /etc/init.d/mysql stop

Запускаем его в безопасном режиме без проверки привилегий

sudo mysqld_safe --skip-grant-tables &

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

mysql -u root mysql

Дальше редактируем таблицу:

mysql> update user set Password=PASSWORD('новый_пароль') where User='root';

Сбрасываем привилегии, для того, чтобы изменения вступили в силу:

mysql> flush privileges;

Давим ctrl-d для выхода. Затем перезапускаем MySQL сервер:

sudo /etc/init.d/mysql restart

Удачи!

Categories: man, mysql Tags: ,

Ставим PHP 5.3 на Ubuntu

28 августа 2010 admin Нет комментариев

В файл

/etc/apt/sources.list:

Дописываем строки

deb http://php53.dotdeb.org stable all
deb-src http://php53.dotdeb.org stable all

Далее обновляем

apt-get update
apt-get upgrade
Categories: man Tags:

создать pdf (Как создать PDF?)

28 августа 2010 admin Нет комментариев

Да просто! есть масса программ, которые устанавливаются как виртуальные принтеры, и печатая на них любой документ – создаётся pdf файл.

Вот одна из программ

Categories: soft Tags: ,

Ubuntu OpenVPN Server (Настройка, соединение филиалов сеть)

27 августа 2010 admin Нет комментариев

logo

Изначально эту статью я писал для Хабра, но чуть позже решил продублировать в Блог.

Не так давно передо мною встала задача соединить в единую сеть филиалы одной крупкой компании, разбросанные по Сибири. Главная проблема была в том, что OpenVPN надо было заставить работать поверх нестабильного PPPoE попутно пустив весь трафик через OpenVPN

Первоначальная цель была в экономии денег на Интернет трафике в филиалах т.к. в удалённых районах цена безлимитного ADSL с шириной в 256кб/с стоила порядка 7-10т.р. в месяц, а интернет был жизненно необходим.
Вся радость была в том, что почти все филиалы имели подключения одного провайдера, в котором существовало понятие локального и пирингово трафика, а в Главном офисе был выделенный широкий Интернет (другой провайдер, но волей случая он был лоялен к провайдеру филиалов и у него был “пиринговый трафик” с ценой около 6 копеек за мегабайт).
image

1. proxy

Самое быстрое решение это было обычный каскад proxy серверов, так и было сделано т.к. раньше все филиалы раздавали интернет у себя прямо модемом, то нужно было всем выделить по 1 системнику, который бы выполнял роль шлюза, системники были не подарки, кто даст 800й пень, кто 233, в общем у кого что было.. Хотя сегодня за 4-7 т.р. можно собрать достойный шлюз, но хозяин-барин, хочу говорит без затрат!

На эти шлюзы была установлена ubuntu 8.04 LTS настроена в виде шлюза, чтоб воткнул в локальную сеть, в модем и в розетку, и сразу всё работало т.к. во многих филиалах, админы могли только нажать “Any key” на клавиатуре пользователя, но не беда, дело шло, постепенно 7 филиалов перенастроило свои модемы, и воткнули шлюзы :)

сразу же поднимали прокси каскадом, заруливали туда http трафик, но как мы все знаем, хттп трафик это всего некий % от общего трафика, перейдя на более простые тарифы, экономия была, но условная, ведь нерадивый админ или пользователь мог например через torrent стянуть что-то весомое, что сулило попаданием на деньги филиалу…

Попутно появлялись другие задачи в центральном офисе – перенос компаративного почтаря, шлюза, портала настроенного году в 2002 и не тронутого с тех пор, но это заслуживает отдельной статьи…
А нас пока интересует просто сеть…

2. OpenVPN

Эту штуку я видел в первый раз, был некий страх перед первым знакомством, далее чтение мануалов и интернетов, закатав рукава я полез ставить :)

2.1 Сервер
имеет 2 сетевых адаптера eth1 (192.168.5.x) – Локальная сеть и eth0 (real ip 111.111.111.111) Интернет с широким каналом.

apt-get install openvpn

Далее создаём файл конфигурации сервера

touch /etc/openvpn/server.conf

при загрузке системы автоматически поднимаются все VPN соединения, для которых в папке /etc/openvpn есть соответствующие файлы с расширением .conf

у меня он получился примерно таким.

port 1194 #Порт
proto udp #Протокол
dev tun   #Название виртуального устройства  
ca /etc/openvpn/ca.crt
cert /etc/openvpn/server.crt
key /etc/openvpn/server.key # This file should be kept secret
dh /etc/openvpn/dh1024.pem
server 10.10.10.0 255.255.255.0 # vpn subnet
ifconfig-pool-persist ipp.txt # Тут будут храниться ip адреса клиентов
push "route 192.168.5.0 255.255.255.0" # home
keepalive 10 120
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log-append  openvpn.log
verb 4
mute 20
client-to-client
client-config-dir /etc/openvpn/ccd # Тут будут настройки для каждого филиала
route 192.168.0.0 255.255.255.0 # Маршрут от сервера до филиала 1
route 192.168.1.0 255.255.255.0 # Маршрут от сервера до филиала 2

Создаём каталог, в котором будут хранится индивидуальные настройки клиентов:

mkdir /etc/openvpn/ccd

Теперь необходимо создать ключи и сертификаты для шифрования и авторизации

cd  /usr/share/doc/openvpn/examples/easy-rsa/2.0
source ./vars
./clean-all
./build-ca

Теперь создадим сертификат и приватный ключ для сервера:

./build-key-server server

Создаём ключ для клиента (если клиентов несколько, процедуру придётся повторить):

./build-key client1

для каждого клиента должно быть указано своё уникальное имя (в данном случае client1).

если новый клиент создаётся спустя некоторое время, процедура будет выглядеть следующим образом:

cd  /usr/share/doc/openvpn/examples/easy-rsa/2.0
source ./vars
./build-key client2

Генерируем параметры Диффи-Хеллмана:

./build-dh

Помещаем следующие файлы в директорию /etc/openvpn/

    * ca.crt
    * server.crt
    * dh1024.pem
    * server.key

Создаём файл /etc/openvpn/ipp.txt

Конфигурационный файл клиентской машины /etc/openvpn/client.conf у меня получился примерно таким

remote 111.111.111.111 1194
client
dev tun
proto udp
resolv-retry infinite # this is necessary for DynDNS
nobind
user nobody
group nogroup
persist-key
persist-tun
ca /etc/openvpn/ca.crt
cert /etc/openvpn/client1.crt
key /etc/openvpn/client1.key
comp-lzo
verb 4
mute 20
redirect-gateway
#show-net-up
verb 4

Теперь необходимо скопировать с сервера в папку /etc/openvpn/ сгенерированные клиентские ключи и авторитарный сертификат сервера:

    * ca.crt
    * client1.crt
    * client1.key

Если за клиентом скрывается сеть 192.168.1.х то, чтоб сервер видел её нужно добавить на сервер маршрут до неё.

На сервере создаём файл /etc/openvpn/ccd/client1 такого содержания:

iroute 192.168.1.0 255.255.255.0
# роутинг на сеть филиала2, чтоб 2 филиала знали друг друга
#push "route 192.168.100.0 255.255.255.0"
#Заворачиваем весь трафик в OpenVPN
push "redirect-gateway def1"

Вот тут собственно и случилась самая злая проблема у меня.

OpenVPN получив директиву

push "redirect-gateway def1"

(при наличии ‘pull’ в своей конфигурации), клиент не удаляет старый маршрут, а добавляет в таблицу маршрутизации записи вида:

 0.0.0.0/1 via 192.168.231.5 dev tun0  
 128.0.0.0/1 via 192.168.231.5 dev tun0

и если openvpn идёт по ethernet то всё работает и радует админа и пользователей, но великий ppp любит поднимать вот такой маршрут.

0.0.0.0         0.0.0.0         0.0.0.0         U     0      0        0 ppp0

И вот OpenVPN ругается примерно вот так

Jul  2 19:28:53 ino ovpn-client[14465]: NOTE: unable to redirect default gateway -- Cannot read current default gateway from system

Решение этой проблемы искалось долго и нудно, хотя оно на поверхности. если в этом “кривом” маршруте ppp указывать шлюз вместо 0.0.0.0 реальный шлюз, то ОpenVPN видит этот маршрут и добавляет свой без проблем.

Поэтому я создал файл

/etc/ppp/ip-up.d/routing

В который прописал небольшой скрипт. (прошу ногами не пинать, я очень ленивый, и полноценный скрипт определения шлюза и правки маршрутов писать не стал, а сделал как простой костыль)
Буду очень рад, если кто-то предложит более логичный, надёжный, и универсальный метод правки маршрутов на лету.
Пока ещё нет уверенности, что всё будет на 100% работать при обрывах ppp, Но жизнь покажет, если что – поправлю топик.

#! /bin/sh
#Определяем выданный шлюз по умолчанию у меня он всегда  разный но в сети 222.х.х.х
gw1=`ip route show | grep 222 | awk '{print $1}'`
# Удаляем 0.0.0.0 0.0.0.0
route del default
# Добавляем маршрут с верным шлюзом
route add -net default gw ${gw1} dev ppp0

Делаем его исполняемым

chmod ug+x /etc/ppp/ip-up.d/routing

После чего ребут, спустя некоторое время сервер перестал пинговаться по внешнему ипу, но стал отзываться по внутреннему – 10.10.10.26

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

-A POSTROUTING -s 192.168.0.0/255.255.0.0 -j MASQUERADE

Тут не указана привязка ни к внешнему интерфейсу, ни ip :)
когда по разным причинам у нас не будет openvpn то у пользователей будет прямой инет, а когда он появится, то весь трафик полетит через него.

Заключение

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

push "redirect-gateway def1"

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

Ах да, чуть не забыл, о самом главном – profit

Помимо того, что теперь вся сеть обращается к серверам и сервисам филиалов и центра по внутренним ip адресам, так ещё и финансовая экономия.

Раньше каждый филиал тратил на интернет в среднем по 7 000р. в месяц, сейчас в месяц каждый из них платит по 550р. за доступ к пирингу, интернет не расходуется (кроме центрального), для начала было запущено 7 филиалов, дальше будет больше.
получается, что за год при старой схеме компания тратила бы на интернет 588 000р., а при текущей схеме в год будет потрачено 46 200р.

Что дальше?

А теперь, на этой всей хе…. мы попробуем взлететь! я попробую развернуть IP Телефонию, чтоб минимизировать расходы на Телефонные междугородние переговоры между филиалами, связать софтАТС с аппаратными в филиалах, о чём обязательно напишу. Удачи

update1 Много вопросов возникло к термину “Крупная компания” попробую прояснить.

Крупная она в Сибири, центр имеет штат 200 сотрудников, филиалы от 20 до 60, к каждому филиалу ещё крепятся 10-20 объектов. по 5-15 человек. филиалов менее 30ти.

Компания крайне не поворотлива, основной контроль идёт от государства, оборудование, компания делает некие шаги в сторону ИТ развития :)

Update2
И так, после тестирования выявилось, что если надолго опустить сервер управы, то клиенты не охотно поднимают openvpn и трафик может пойти прямо в дорогой инет.
Также если принудительно рвётся ADSL канал, то опенвпн вроде и пытается стартануть заново, но что-то у него это не получается, так и ходит по кругу.
пробовал всякие опции и keepalive и ping-restart и прочее… не помогало…

Поэтому пишем небольшой скрипт, который будет проверять состояние дел.

touch /usr/bin/vpn_keepalive.sh

C содержанием.

#! /bin/sh
# Нужна ли нам отладка, рас комментировать нужное
#debug_out=/dev/null
debug_out=/dev/stdout
#NEXTHOP Это хост внутри ВПН сети
# я взял внутренний ип OpenVPN сервера
NEXTHOP=192.168.5.1
# Комманда перезапуска Опенвпн
OPEN_VPN_CMD="sudo /etc/init.d/openvpn restart"
PING=/bin/ping

logger_opts="-t $0"
if [ "$debug_out" = "/dev/stdout" ]
then
        logger_opts="$logger_opts -s"
fi
pckts_rcvd=`$PING -c 8 -q -W 2 $NEXTHOP | grep transm | awk '{print $4}'`
echo "host: $NEXTHOP, pckts_rcvd: $pckts_rcvd" >$debug_out
if [ $pckts_rcvd -eq 0 ]
then
    echo "Connection with $NEXTHOP lost, resetting" | logger $logopts
    $OPEN_VPN_CMD > $debug_out
else
    echo "Connection with $NEXTHOP up, no action" | logger $logopts
fi

Делаем его исполняемым

chmod ug+x /usr/bin/vpn_keepalive.sh

Скрипт пингует хост, и если 0 пакетов вернулось, то выполнит команду рестарта.
после чего всё гарантированно поднимается, вливаются верные маршруты, и трафик идёт через ВПН трафик

Кидаем этот скрипт в крон

crontab -e

например каждые 2 минуты.

0-59/2 * * * * /usr/bin/vpn_keepalive.sh

И всё если дебаг включен, то в логах (syslog) будет отмечено вот так.

logger: Connection with 192.168.5.1 up, no action

Удачи!

Categories: man, ubuntu Tags: , , ,

Проблема с MTU PPPoE

27 августа 2010 admin Нет комментариев

И так, при соединении нескольких сетей, возникла проблема, что пинги не ходили, а сделано всё верно. Собака была зарыта вот тут

/proc/sys/net/ipv4/ip_no_pmtu_disc

Одним простым движением

echo "1" > /proc/sys/net/ipv4/ip_no_pmtu_disc

Всё решилось, но и для справки
Цитата с ОпенНЕТа

Переменная ip_no_pmtu_disc запрещает поиск PMTU (от англ. Path Maximum
Transfer Unit Максимальный Размер Пакета для выбранного Пути). Для
большинства случаев лучше установить в эту переменную значение FALSE,
или 0 (т.е. система будет пытаться определить максимальный размер
пакета, при котором не потребуется выполнять их фрагментацию, для
передачи на заданный хост). Но иногда, в отдельных случаях, такое
поведение системы может приводить к срывам соединений. Если у вас
возникают такие проблемы, то вам следует попробовать отключить эту опцию
(т.е. записать в переменную число 1) и установить нужное значение MTU.
Хочу обратить ваше внимание на то, что MTU и PMTU это не одно и то же!
MTU (от англ. Maximum Transfer Unit максимальный размер пакета)
определяет максимальный размер пакета для наших сетевых интерфейсов, но
не для сетевых интерфейсов на другом конце. PMTU опция, которая
заставляет систему вычислять максимальный размер пакета, при котором не
потребуется фрагментация пакетов, для маршрута к заданному хосту,
включая все промежуточные переходы. Значение по-умолчанию FALSE (0),
т.е. функция определения разрешена. Если записать число 1 в эту
переменную, то функция определения PMTU будет запрещена. Переменная
ip_no_pmtu_disc может принимать значение 0 или 1.

ещё для эта проблема должна решаться вот так.

iptables -t mangle -A FORWARD -p tcp -m tcp --tcp-flags RST,SYN SYN -j TCPMSS --clamp-mss-to-pmtu

либо вот так

 iptables -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --set-mss 128
Categories: linux Tags: ,

uptime 365 Дней!!!

9 июня 2010 admin 4 comments

Вот так порадовала меня моя ubuntu

# uptime
 12:52:18 up 365 days, 13:24,  2 users,  load average: 0.64, 0.42, 0.33
Categories: linux Tags:

postfix белый лист ( postfix whitelist )

22 апреля 2010 admin Нет комментариев

Сложно найти баланс между ложными срабатывания на спамм и спамом :(

Создаём файл

touch /etc/postfix/whitelist

Добавляем в него записи, можно конкретный ящик, можно все ящики домена, можно домен с под доменами.

user@examlpe.com OK
@examlpe.com OK
.example.ru OK

Теперь преобразим наш файл whitelist в индексированную базу данных, выполнив команду:

postmap /etc/postfix/whitelist

Теперь смотрим каком типом БД пользуется наш postfix

postconf | grep database_type

Возможные варианты ответа hash, btree или dbm
В зависимости от этого в секцию

smtpd_sender_restrictions

Добавляем строку

check_sender_access  hash:/etc/postfix/whitelist

Вот как это выглядит у меня (не забываем про запятые после переменных) (вместо hash пишем свой тип БД)

smtpd_sender_restrictions =
    check_sender_access  hash:/etc/postfix/whitelist,
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_non_fqdn_sender,
    reject_unknown_sender_domain,
    permit
Categories: man Tags: ,

Блокируем плохие сайты squid ( bad sites squid )

13 апреля 2010 admin 2 comments

Настраиваем squid на блокировку нежелательных сайтов, избавляемся со всякими popunder, и прочей нечести на уровне squid

Со временем у меня получилась не маленькая база…
Данный файл постоянно пополняется всякими перепродавалами траффика и т.п.
дальше привожу его содержимое. При желании сами пополняем всякими Вконтактами и однокласниками (в моём файле они присуствуют), также тут есть adult накрутчики, режем их.
Я приведу ссылку на файл, который буду постепенно обновлять.
файл от 16.04.10
Сливаем его на сервер

cd /etc/squid3
wget http://www.odmin4eg.ru/download-manager.php?id=1

В раздел acl нашего squid.conf добавляем.
будте внимательны, сквид довольно привередлев к конфигам.
эти строки добавить между разрешающими и запрещающими у меня например так

acl our_networks src 192.168.0.0/255.255.0.0
acl bad url_regex "/etc/squid3/badsite.acl"
http_access deny bad
http_access allow our_networks

Собственно что добавить

acl bad url_regex "/etc/squid3/badsite.acl"
http_access deny bad

Перезапускаем squid и тестируем, принимаю пожелания по пополнению списка.

Categories: man Tags: ,

Конфиг squid Без комментариев

13 апреля 2010 admin Нет комментариев

Нам надо посмотреть суть конфига сквида, без комментариев и пояснений.

cat /etc/squid/squid.conf | egrep -v "^\s*(#|$)"
Categories: man Tags: