суббота, 24 сентября 2011 г.

Настройка VPN Клиент Сервер на Debian

Задача: Дать доступ к корпоративной сети удаленным пользователям.
Установить на сервере в корпоративной сети сервер vpn, разрешить использование сетевых шар, удаленным пользователям. (в сети на каждую шару стоит ограничение доступа по ip)
Сервер в сети стоит за NAT'ом.

Решение:  
1. Установка vpn сервера pptpd
apt-get install pptpd
Настройка pptp сервера.
Открываем конфиг /etc/pptp.conf

option /etc/ppp/pptpd-options
debug
bcrelay eth1
localip 192.168.0.1
remoteip 192.168.0.150-200
option - подключение конфиг файла, о нем ниже.
bcrelay eth1 - передача VPN-клиентам широковещателных пакетов, смотрящий на роутер (о настройке роутера ниже.)
localip - ip адреса vpn сервера в сети.
В данном случае:
  •  192.168.0.1 - смотрит в сеть
remouteip - диапазон адресов для выдачи клиентам при подключении к vpn

четверг, 22 сентября 2011 г.

Монитор доступности серверов в сети


Есть в сети несколько серверов/компьютеров, которые должны быть доступны всегда.
Если они вдруг не доступны, нужно сразу же сообщить об этом.

Для начала разберемся, как отправлять сообщение в jabber

echo "hello from `hostname`" | /usr/bin/sendxmpp -t -u mail@jabber.company -p PaSSWorD /
-s testmessage admin@jabber.company
Где:
-t - указываем использовать SSL соединения
-u mail@jabber.company - JID пользователя
-p PassWorD - это пароль пользователя
-t testmessage - тема сообщения
admin@jabber.company - JID получателя

Взято с http://silinio.webhost.ru/sendxmpp-notify.html


Ну а теперь скрипт который мониторит доступность серверов, и в случае не доступности, шлет сообщение в jabber.
Jabber сервер установлен и настроен.
#!/bin/bash
for i in 192.168.1.1 192.168.1.105;
do
    if eval "ping -c 2 $i"; then
        file="/home/name/scripts/pingserv/pingd/file`echo $i`"
        if [ -e $file ]; then
           rm "/home/name/scripts/pingserv/pingd/file`echo $i`"
           echo "`date` SERVER `echo $i` Is Work =)" | sendxmpp -d -s "Server `echo $i` Work =)" username@jabber > /dev/null 2>&1
        fi
    echo "11" > /dev/null
    else
        file="/home/name/scripts/pingserv/pingd/file`echo $i`"
        if [ -e $file ]; then
          echo "11" > /dev/null
        else
          echo "$i" > /home/name/scripts/pingserv/pingd/ping.log
          echo "`date` SERVER `echo $i` NOT Work!!" | sendxmpp -d -s "Allarm!!! `echo $i` DOWN!!!!" username@jabber > /dev/null 2>&1
          touch "/home/name/scripts/pingserv/pingd/file`echo $i`"
        fi
    fi
done
Засунуть этот скрипт в CRON, и каждые 10 минут запускать.
*/10 * * * * /home/name/scripts/pingserv/pingip > /dev/null 2>&1
Общая идея - пинг серверов, если какой то не доступен, сообщить в jabber.
создать файл c ip сервера, чтобы при следующем пинге, если сервер все еще не доступен, не отсылать повторное сообщение.
Если сервер стал доступен, удалить этот файл и сообщить о доступности сервера.

вторник, 13 сентября 2011 г.

php Отправка почты с сайта с вложениями

Задача
Интернет магазин. покупатель выбирает товар, выбирает способ доставки и оплаты.
Если способ доставки выбран "Почтой России" - отправлять менеджерам сайта сообщение с  заполненным почтовым бланком ф.116.
Если выбран способ оплаты "Наложенный платеж" - отправлять заполненный почтовый бланк ф.112.

Решение

Для начала нужно создать эти бланки. Код бланков описывать не буду. (скачать их можно тут html файлы, в формате php для принятия post'данных).
112.php и 116.php - каждый бланк будет принимает GET данные.

Обращаться к ним следующим образом:
http://****/112.php?fio1=".$_POST['firstname']."&fio2=".$_POST['lastname']."&fio3=".$_POST['thirdname']."&adr1=".$_POST['area'].",".$_POST['city']."&adr2=".$_POST['address'].",&pst=".$_POST['postindex'])
Бланки готовы, и ждут обращения с GET 'данными.
Переходим к функции отправки почты.
Создаем файл mail.php в который передаются данные формы. (В форме пользователь заполняет свои данные, ФИО, почтовый адрес, телефон.. описывать форму не буду.)

Для начала нужно сформировать запрос обращения к бланкам:

$file = str_replace(" ", "%20", "http://****/112.php?fio1=".$_POST['firstname']."&fio2=".$_POST['lastname']."&fio3=".$_POST['thirdname']."&adr1=".$_POST['area'].",".$_POST['city']."&adr2=".$_POST['address'].",&pst=".$_POST['postindex']);  
$file2 =str_replace(" ", "%20", "http://****/116.php?fio1=".$_POST['firstname']."&fio2=".$_POST['lastname']."&fio3=".$_POST['thirdname']."&adr1=".$_POST['area'].",".$_POST['city']."&adr2=".$_POST['address'].",&pst=".$_POST['postindex']);   
Пробелы обязательно заменить на %20

Далее проверим, выбрана ли доставка почтой, и выбран ли способ оплаты - наложенным платежом. и создаем массив файлов $files.
if($_POST['pays'] == 3)
   { $files = array('112.html' => file_get_contents($file), '116.html' => file_get_contents($file2));}
elseif($_POST['pays'] == 2)
   { $files = array('116.html' => file_get_contents($file2));}
else $files = "";
112.html и 116.html  - это имена создаваемых файлов, для последующего вложения к письму.

Непосредственно сама функция отправки

четверг, 8 сентября 2011 г.

Windows не открываются некоторые сайты

Проверяем файл hosts в C:\WINDOWS\system32\drivers\etc\hosts (как было описано раньее). Там должна быть всего одна строчка начинающаяся без #, а именно: "127.0.0.1       localhost".


Заходим Пуск --> Выполнить, вводим команду "cmd", нажимаем Enter. В командной строке пишем через пробел:"route -f" и жмем Enter.
Далее прописываем:"netsh winsock reset" и снова жмем Enter.



Зараженные параметры в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\PersistentRoutes\
Очисти или удали все айпи (ip),