Пятница, 19.04.2024, 04:01
Приветствую Вас Гость | RSS
Мой сайт
Главная
Регистрация
Вход
Форма входа

Меню сайта

Категории раздела
Об ОС Windows [137]
В категории размещаются статьи, касающщиеся операционных систем от Microsoft.
Об ОС *Nix [198]
В данной категории собраны статьи об ОС семейства Unix/Linux/FreeBSD/...
Справочные материалы [351]
Справка по всему разделу.
Виртуализация и Облака [46]
Networks & Routing [86]
DataBases [22]

Наш опрос
Оцените мой сайт
Всего ответов: 209

Статистика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Главная » Статьи » Системное администрирование » Об ОС *Nix

Установка и настройка OpenVPN в CentOS

Установка и настройка OpenVPN в CentOS 4

Я не знаю кому как, а лично мне очень не нравится когда мою болтовню по асе, мою почту, да и вообще весь мой трафик может перехватить мой провайдер и еще куча всяческих очень любопытных граждан :-). Кроме того, иногда просто необходимо иметь ip адрес не свой родной, а иностранный.
Выходом из такого положения может служить такая технология как Virtual Private Network. Реализаций под linux есть масса: это и Poptop и решения на базе IPsec и OpenVPN и многие другие.
Не буду обсуждать то или иное решение, скажу только, что я остановился на OpenVPN. Причин несколько:

  • относительная простота установки;
  • для создания туннеля используется только один TCP или UDP порт;
  • работа туннеля через NAT - очень немаловажная штука для меня;
  • аутентификация пользователей и шифрование трафика с использованием библиотеки OpenSSL;
  • сжатие трафика - тоже немаловажно :-)
  • Итак, сегодня мы рассмотрим установку и настройку очень полезного пакета OpenVPN.
    заходим на наш сервер, переходим в каталог /usr/local/src и качаем последние исходники:
    cd /usr/local/src
    wget http://openvpn.net/release/openvpn-2.0.7.tar.gz
    распаковываем:
    tar zxvf openvpn-2.0.7.tar.gz
    и запускаем инсталляцию:
    cd openvpn-2.0.7
    ./configure
    После чего получаем ошибку такого вида:
    LZO library available from http://www.oberhumer.com/opensource/lzo/
    configure: error: Or try ./configure --disable-lzo

    Это значит что у нас в системе нет библиотеки lzo с помощью которой происходит компрессия и декомпрессия нашего трафика в реальном режиме времени. лезем на соответствующий сайт, качаем библиотеку и ставим:
    cd ..
    wget http://www.oberhumer.com/opensource/lzo/download/lzo-2.02.tar.gz
    tar zxvf lzo-2.02.tar.gz
    cd lzo-2.02
    ./configure
    make
    make install
    После чего возвращяемся в каталог openvpn-2.0.7 и продолжаем установку
    cd ../openvpn-2.0.7
    ./configure
    make
    make install
    На этом этап инсталляции пакета закончен. Теперь приступим к настройке.
    Генерируем master CA сертификат/ключ
    cd easy-rsa
    . ./vars
    ./clean-all
    ./build-ca

    при генерации жмем везде Enter за исключением одной строки:
    Common Name (eg, your name or your server's hostname) []: OpenVPN-CA
    Это у нас имя CA сертификата.
    Дальше генерируем сертификат и ключ для сервера:
    ./build-key-server server
    Также жмем Enter на вопросы за исключением
    Common Name (eg, your name or your server's hostname) []: server
    На вопросы где есть выбор y/n отвечаем y
    Дальше генерируем ключи клиентов, я делаю два:
    ./build-key client1
    ./build-key client2

    также как и в предыдущем случае при вопросе Common Name отвечаем соответственно client1, client2 и два вопроса где есть выбор y/n жмем y

    Дальше генерируем параметры Diffie Hellman
    ./build-dh
    На этом с генерацией покончено.
    Теперь создаем каталог /etc/openvpn и переписываем туда сгенерированные ключи и конфигурационный файл нашего сервера:
    mkdir /etc/openvpn cp ../sample-config-files/server.conf /etc/openvpn/ Открываем на редактирование конфиг сервера:
    vi /etc/openvpn/server.conf
    ищем строку
    ;push "redirect-gateway"
    меняем на
    push "redirect-gateway def1"
    ;push "dhcp-option DNS 10.8.0.1"
    меняем на
    push "dhcp-option DNS 10.8.0.1"
    ;max-clients 100
    меняем на
    max-clients 10 потому как 100 клиентов мы не хотим, нам 2 надо но на будущее сделаем запас
    строки
    ;user nobody
    ;group nobody

    раскомментируем в
    user nobody
    group nobody строку
    verb 3
    меняем на
    verb 0 потому как мы не хотим чтобы лог велся подробный
    переписываем скрипт старта сервера и добавляем его в автоматический старт при загрузке

    cp /usr/local/src/openvpn-2.0.7/sample-scripts/openvpn.init /etc/rc.d/init.d/openvpn
    chkconfig --add openvpn
    запускаем openvpn
    service openvpn start
    Еще один этап завершили. Но это еще не все.
    Теперь нужно настроить наш выделенный сервер чтобы все наше хозяйство работало.
    Для начала включаем форвардинг пакетов:
    vi /etc/sysctl.conf
    находим строку
    net.ipv4.ip_forward = 0
    и меняем ее на
    net.ipv4.ip_forward = 1
    эта строка у нас говорит ядру включить форвардинг пакетов. Но этот параметр сработает только после перезагрузки сервера, а нам естественно нужно чтобы система заработала прямо сейчас.
    Для этого также есть хитрая команда:
    echo "1" > /proc/sys/net/ipv4/ip_forward
    Теперь нам надо включить трансляцию адресов (NAT) чтобы пакеты от клиентской машины попадая на наш выделенный сервер могли уйти в Интренет, ну и соответственно возвращались назад.
    iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    Теперь нам надо сохранить наши настройки таблицы iptables:
    iptables-save > /etc/sysconfig/iptables
    Теперь при перезагрузке нашего сервера правила iptables будут загружаться автоматически (конечно при условии что на нашем выделенном сервере выбран автоматический старт службы iptables). Проверить это можно командой:
    chkconfig --list iptables
    Результат вывода такой:
    iptables 0:off 1:off 2:on 3:on 4:on 5:on 6:off
    Это значит, что для уровня запуска 3 старт службы iptables разрешен.

    Все! На этом настройка нашего OpenVPN сервера закончена. Но это еще не все!

    Теперь нам нужно настроить клиентскую часть OpenVPN. Рассмотрим самый простой вариант инсталляции клиентской части OpenVPN под Windows XP.
    Mathias Sundman разработал очень полезный продукт OpenVPN GUI for Windows для упрощения нам жизни :-). Лезем к нему на сайт, качаем и инсталируем http://openvpn.se/files/install_packages/openvpn-2.0.7-gui-1.0.3-install.exe
    После инсталляции пакета в System Tray появляется соответствующий значек, похожий на значек удаленного доступа по модему.
    Вернемся к вопросу настройки нашего OpenVPN сервера. Помните, мы там генерировали ключи. Так вот именно сейчас они нам и понадобятся. А именно для клиента client1 нам нужны следующие файлы:
    ca.crt
    client1.crt
    client1.key

    На нашем сервер они лежат в папке /etc/openvpn. Копируем их оттуда любым способом на свою клиентскую машину. На сайте OpenVPN на эту тему написано, что копировать ключи очень рекомендуется через защищенные каналы свзи, например с помощью scp или sftp из пакета OpenSSH. Это верно. Но в крайнем случае, можно их и по почте послать и по ftp скачать. Дело Ваше.
    Далее создаем для примера на нашем диске С папку vpn и копируем туда наши ключи. Затем из папки C:\Program Files\OpenVPN\sample-config\ копируем файл client.ovpn в папку C:\Program Files\OpenVPN\config\ и открываем его на редактирование. Ищем строку
    remote my-server-1 1194
    Меняем на
    remote xxx.xxx.xxx.xxx 1194 где xxx.xxx.xxx.xxx это ip адрес нашего выделенного сервера.
    Ищем строки
    ca ca.crt
    cert client.crt
    key client.key

    и меняем для нашего случая на
    ca с:\\vpn\\ca.crt
    cert с:\\vpn\\client1.crt
    key с:\\vpn\\client1.key

    Сохраняемся, потом жмем правой кнопкой мыши на значке OpenVPN в System Tray и выбираем Connect.
    В общем на этом все. Теперь Вы в сети Интернет работаете от ip адреса Вашего выделенного сервера, причем канал между Вами и сервером шифруется с помощью SSL и трафик сжимается с помощью LZO real-time compression library.

    Некоторые дополнения к теме OpenVPN.

    Для проверки шифрования канала можно воспользоваться утилитой tcpdump и послушать, что именно проходит через наши интерфейсы например запустив ping -t google.com с клиентской (в нашем случае windows машины):
    tcpdump -i tun0 -lenx для прослушивания интерфейса tun0:

    07:35:39.039836 > ip 76: IP 64.233.167.99 > 10.8.0.6: icmp 40: echo reply seq 52992
    0x0000: 4500 003c 5024 0000 f501 8342 40e9 a763 E..

    0x0010: 0a08 0006 0000 825b 0400 cf00 6162 6364 .......[....abcd
    0x0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst
    0x0030: 7576 7761 6263 6465 6667 6869 uvwabcdefghi
    07:35:39.935597 < ip 76: IP 10.8.0.6 > 64.233.167.99: icmp 40: echo request seq 53248
    0x0000: 4500 003c 502d 0000 8001 f839 0a08 0006 E.. 0x0010: 40e9 a763 0800 795b 0400 d000 6162 6364 @..c..y[....abcd
    0x0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst
    0x0030: 7576 7761 6263 6465 6667 6869 uvwabcdefghi
    07:35:40.039872 > ip 76: IP 64.233.167.99 > 10.8.0.6: icmp 40: echo reply seq 53248
    0x0000: 4500 003c 502d 0000 f501 8339 40e9 a763 E.. 0x0010: 0a08 0006 0000 815b 0400 d000 6162 6364 .......[....abcd
    0x0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst
    0x0030: 7576 7761 6263 6465 6667 6869 uvwabcdefghiВидим, что пакеты не шифрованы, но ведь так и надо для этого интерфейса :-)
    Теперь посмотрим как шифруется канал между клиентской машиной и нашим сервером по интерфейсу eth0:

    tcpdump -i eth0 udp port 1194 -lenx смотрим

    07:49:27.636106 00:13:8f:a3:3c:bf > 00:0c:db:b6:21:00, ethertype IPv4 (0x0800),
    length 143: IP ss.ss.ss.ss.1194 > cc.cc.cc.cc.4286: UDP, length 101
    0x0000: 4500 0081 acc4 4000 4011 2e6d 5995 c3a1 E.....@.@..mY...
    0x0010: 52d1 ef32 0bd6 10be 006d 2773 3022 cd46 R..2.....m's0".F
    0x0020: fdbe bd8e eb73 1d90 ff19 14a3 f2a6 a484 .....s..........
    0x0030: b34d 227c 0dc8 3115 f6bd 9f68 04b4 5b6d .M"|..1....h..[m
    0x0040: 9f9e 5ff1 f8a0 e8de 5963 f8de 41fc 66ac .._.....Yc..A.f.
    0x0050: f652
    07:49:28.647961 00:13:8f:a3:3c:bf > 00:0c:db:b6:21:00, ethertype IPv4 (0x0800),
    length 143: IP ss.ss.ss.ss.1194 > cc.cc.cc.cc.4286: UDP, length 101
    0x0000: 4500 0081 acc5 4000 4011 2e6c 5995 c3a1 E.....@.@..lY...
    0x0010: 52d1 ef32 0bd6 10be 006d 3ee2 3001 88d0 R..2.....m>.0...
    0x0020: 19de 5eb9 6ece ee5f 4088 16a0 7ccb fed4 ..^.n.._@...|...
    0x0030: c097 7c7e c546 9cd5 3c88 960e d87d dfdf ..|~.F..< ....}..
    0x0040: 931f d1b5 b620 9fd1 6e70 898e 9753 aaeb ........np...S..
    0x0050: 2337

    где ss.ss.ss.ss адрес нашего сервера, а cc.cc.cc.cc адрес нашего клиента.
    Как видно из дампа наш канал зашифрован.



    Источник: http://dedicatesupport.com/archives/8
    Категория: Об ОС *Nix | Добавил: admin (13.02.2011)
    Просмотров: 3407 | Теги: openvpn, install, Server, config, centos | Рейтинг: 0.0/0
    Всего комментариев: 0
    Имя *:
    Email *:
    Код *:
    Поиск

    Друзья сайта
  • Официальный блог
  • Сообщество uCoz
  • FAQ по системе
  • Инструкции для uCoz


  • Copyright MyCorp © 2024