Система Orphus

вторник, 7 июля 2009 г.

OpenVPN: Мой опыт

Буквально перед отпуском надо было настроить 3 сервера и 1 комп на резервное копирование, которые территориально разнесены. Времени было мало. Вариантов было много... Но я остановился именно на OpenVPN, как не наиболее гибком (его ведь можно и для других целей использовать) и безопасном (трафик ведь шифруется) решении.
Один из серверов на Ubuntu 8.04.3 Server, 2 на винде 2000 и 2003 и комп на винде ХРюшке домашней. Данные надо было бэкапить на сервак с 2003 виндой, поэтому он выступает в роли OpenVPN сервера.

Для начала я поставил на свой ноут (Ubuntu 9.04 Desktop) сам OpenVPN и сгенерировал все необходимые сертификаты, которые потом полетели на комп и серваки.
Ставим OpenVPN в ubnutu:
sudo aptitude install openvpn
Теперь нужно сделать папку, в которую скопируем скрипты (в общем скрипты копировать не обязательно, но зато это удобнее):
mkdir ~/openvpn
cp -vR /usr/share/doc/openvpn/examples/easy-rsa/2.0/* ~/openvpn
cd ~/openvpn
Теперь нам нужно экспортировать необходимые переменные (очень важно находиться в папке, из которой будут запускаться скрипты, у меня это ~/openvpn):
source ./vars
Если в этом файле (./vars) подправить последние 5 строчек, то в дальнейшем в большинстве случаев вам не нужно будет вводить одно и тоже :) Вот эти строчки (дефолтовые):
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"
Теперь делаем подготовку. Этот скрипт подготавливает минимум необходимого для начала работ по созданию сертификатов, а именно создает папку ./keys, в которой будут создаваться сертификаты, и в ней создает 2 файла index.txt и serial:
./clean-all
Настало время сгенерировать корневой сертификат и Diffie-Hellman, а т.ж. ключ для tls аутентификафии. Запускаем:
./build-ca
./build-dh
openvpn --genkey --secret keys/tls.key
Часть работы сделана. Теперь нужно создать ключи для сервера и клиентов. Создаем ключ для сервера:
./build-key-server root.server.ru
И для клиетов:
./build-key helpdesk.server.ru
./build-key mail.server.ru
./build-key KM.Guest

С ключами и сетификатами закончили. Теперь пора переходить к настройке OpenVPN сервера. Для начала нужно скачать и установить сам OpenVPN. Я его взял на сайте http://openvpn.se/ (мне он больше нравится). Теперь необходимо скопировать по безопасному каналу созданные ключи и сертификаты на сервер в папку C:\Program Files\OpenVPN\config\keys из папки ~/openvpn/keys. Теперь нужно создать файл с конфигом, я его расположил в C:\Program Files\OpenVPN\config\server.ovpn (дефолтовый путь). Создаем этот файл и пишем в него слующее:
#daemon # Эту строчку надо расскомментировать, если сервер будет на пингвине, а т.ж. подправить пути к ключам и сертификатам
mode server
tls-server
ifconfig 10.77.0.1 255.255.255.0
port 1194
proto tcp-server
dev tap
keepalive 10 120
# client-to-client # Это чтобы клиенты могли обмениваться трафиком, но для режима tun
comp-lzo
persist-key
persist-tun # В режиме tap игнорируется, но почему добавил уже не помню
ca "C:\\Program Files\\OpenVPN\\config\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\keys\\root.server.ru.crt"
key "C:\\Program Files\\OpenVPN\\config\\keys\\root.server.ru.key"
dh "C:\\Program Files\\OpenVPN\\config\\keys\\dh1024.pem"
tls-auth "C:\\Program Files\\OpenVPN\\config\\keys\\tls.key"
client-config-dir "C:\\Program Files\\OpenVPN\\config\\clients" # Тут у нас будут лежать конфиги для клиентов
#push "route 10.77.0.0 255.255.255.0 10.77.0.1" # Мне не нужно видеть внутренню сеть за серверами, поэтому я эту команду не использую
verb 3
log-append "C:\\Program Files\\OpenVPN\\config\\openvpn.log"
status "C:\\Program Files\\OpenVPN\\config\\openvpn.stat"
Теперь нужно создать папку C:\Program Files\OpenVPN\config\clients с конфигами для каждого клиента. Я приведу пример только для одного, т.к. остальные создаются аналогично. Нужно создать файл C:\Program Files\OpenVPN\config\clients\helpdesk.server.ru.ovpn, который записать слудеющее:
# приcваиваем ip-адрес клиенту
ifconfig-push 10.77.0.11 255.255.255.0
# роутинг на сеть сервера (чтобы видеть его локальную сеть)
#push "route 192.168.0.0 255.255.255.0 10.77.0.1"
# роутинг на сеть второго клиента (это чтобы клиенты могли обмениваться трафиком)
#push "route 192.168.2.0 255.255.255.0 10.77.0.12"
Замечу, что если у всех сетей будут одинаковые адреса (например, 3 сети и все 192.168.0.0/24), то компы, на которых стоит OpenVPN, могут жутко глючить с передачей пакетов, а то и вовсе не будут видеть сеть (ни OpenVPN, ни реальную).

Переходим к клиентам. Тут я приведу пример для двух клиентов, на пингвине и винде. В первую очередь скопируем по безопасному каналу ключи и сертификаты на машины-клиенты. На понадобятся файлы tls.key, helpdesk.server.ru.* и ca.crt (они уже лежат на сервере в каталоге C:\Program Files\OpenVPN\config\keys, ты ведь их копировал), их надо скопировать в каталог /etc/openvpn/keys клиента. Теперь в папке /etc/openvpn нужно создать файл с произвольным имененем и расширением (суффиксом) .conf, я обозвал его to_root.server.ru.conf, и заполнить следующим содержанием:
client
pull
tls-client
dev tap
proto tcp
remote root.server.ru 1194 # Правда я указал IP-адрес сервера
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type server
ca /etc/openvpn/keys/ca.crt
cert /etc/openvpn/keys/helpdesk.server.ru.crt
key /etc/openvpn/keys/helpdesk.server.ru.key
tls-auth /etc/openvpn/keys/tls.key
log-append /var/log/openvpn.log
status /var/log/openvpn.stat
Теперь можно запустить OpenVPN и проверить работу (потом лучше остановить, зачем он нам постоянно работающий на клиентах?):
sudo /etc/init.d/openvpn start
ping -c 3 10.77.0.1
На винде все аналогично, за исключением путей. Ключи и сертификаты кладем в папку C:\Program Files\OpenVPN\config\keys, а конфиг в C:\Program Files\OpenVPN\config, только расширение я указал .ovpn, т.к. это нужно для виндового порта, т.е. имя файла конфига на виндовом клиенте у меня будет таким - to_root.server.ru.ovpn.
client
pull
tls-client
dev tap
proto tcp
remote root.server.ru 1194 # Правда я указал IP-адрес сервера
resolv-retry infinite
nobind
persist-key
persist-tun
comp-lzo
ns-cert-type server
ca "C:\\Program Files\\OpenVPN\\config\\keys\\ca.crt"
cert "C:\\Program Files\\OpenVPN\\config\\keys\\helpdesk.server.ru.crt"
key "C:\\Program Files\\OpenVPN\\config\\keys\\helpdesk.server.ru.key"
tls-auth "C:\\Program Files\\OpenVPN\\config\\keys\\tls.key"
log-append "C:\\Program Files\\OpenVPN\\config\\openvpn.log"
status "C:\\Program Files\\OpenVPN\\config\\openvpn.stat"
И точно так же проверяем работоспособность:
net start OpenVPNService
ping -n 3 10.77.0.1

На этом настройка OpenVPN закончена :) Ну а раз речь шла о бэкапах, то приведу пару очень простых примеров, по одному для винды и пингвина.
# Копирование бэкапов (Linux)
/etc/init.d/openvpn start >>~/copy_bak.log 2&>1
sleep 3s
smbmount //10.77.0.1/bak ~/smb/ -o rw,iocharset=utf8,codepage=cp866,username='UserName',password='passwd' >>~/copy_bak.log 2&>1
sleep 3s
cp -Rfv /backup/folder ~/smb/ >>~/copy_bak.log 2&>1
sleep 5s
smbumount ~/smb/ >>~/copy_bak.log 2&>1
/etc/init.d/openvpn stop >>~/copy_bak.log 2&>1


# Копирование бэкапов (Windows) (тут пинг выступает в роли паузы)
net start OpenVPNService
ping -n 10 localhost
net use S: \\10.77.0.1\baks "PaSSwd" /user:UserName
ping -n 5 localhost
xcopy C:\path S:\ /e /h /r /y /f
ping -n 5 localhost
net use S: /delete
net stop OpenVPNService


ЗЫЖ-1 Не ручаюсь, что все сделал правильно. Это мой первый опыт. Комменты приветствуются.
ЗЫЖ-2 Выложил раньше времени, т.к. одному человеку сильно нужна была помощь. Жалко мне его стало :)
ЗЫЖ-3 Очень хороший ЧАВО по OpenVPN





Информация с сайта http://angel2s2.blogspot.com/. Если Вы читаете информацию на другом сайте, пожалуйста свяжитесь с автором сайта http://angel2s2.blogspot.com/.

Отпуск | Vacation

Друзья, я до 3 августа сего года я в отпуске. Поэтому за это время новых статей в блоге наверное не будет.
После отпуска расскажу о своем опыте настройки OpenVPN для резервного копирования данных на компах, которые разнесены территориально. Что мне собственно и пришлось сделать буквально за день до отпуска.
В отпуске хочу купить себе новый ноут ASUS, какую модель пока еще не решил.
Еще есть планы воссоздать виртуальную инфраструктуру сети, для тестирования и обкатки новых решений, перед их внедрением в реальной сети.
О чем тоже расскажу.


До скорых встреч! :)

четверг, 2 июля 2009 г.

macfinder: Узнаем производителя сетевой железяки по его MAC'у

В сети есть замечательный инструмент для определения производителя сетевого оборудования по MAC-адресу. Точнее не по самому MAC-адресу, а по его первым 24 битам (3 байтам). Т.ж. поддерживается и обратная "работа".
Когда я узнал про эту онлайновую утилиту, то не долго думая сварганил скрипт, который позволяет не заходя на сайт узнать... Ну ты уже понял ;)

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

Использование:
macfinder MAC | -m Manufacturer

MAC - первые 24 бита mac-адреса (например, 00d0b7)
-m Manufacturer - название производителя (например, Intel)


Вот собственно и все :)
macfinder забирай тут.




Информация с сайта http://angel2s2.blogspot.com/. Если Вы читаете информацию на другом сайте, пожалуйста свяжитесь с автором сайта http://angel2s2.blogspot.com/.