Ноя
11

Openvpn




  • Установка дебиана по сети.

  • Установка apache, php, mysql на платформу Windows


  • Создание конфигурационных файлов - сервер

    OpenVPN работает по принципу клиент-серверной архитектуры в одном из двух режимов: «точка-точка» или «сервер-клиенты». Количество клиентов во втором случае ограничивается только мощностью компьютера, играющего роль сервера. Причем на одном компьютере возможен одновременный запуск нескольких процессов openvpn, каждый из которых считывает собственный конфигурационный файл и работает в режиме сервера или клиента. Таким образом без проблем создается несколько виртуальных сетей.

    Есть несколько вариантов запуска сервера. Например, вызов openvpn из командной строки со всеми параметрами в придачу. Сервер может также запускаться через xinetd. Традиционным считается вариант с использованием конфигурационного файла в /etc/openvpn и стартового скрипта в /etc/init.d. Его и рассмотрим.

    Для создания конфигурационного файла сервера воспользуемся имеющимся шаблоном server.conf, который находится в подкаталоге sample-config-file. Все параметры в нем хорошо прокомментированы. Вариантов описания даже одной конфигурации сети может быть несколько, рассмотрим лишь один из них. Копируем файл в /etc/openvpn и приступаем к редактированию:

    # vi /etc/openvpn/server.conf

    # Необязательный параметр, указывающий, на каком интерфейсе слушать, без него сервер будет принимать соединения на всех интерфейсах

    # local 195.95.95.95

    # Если используется несколько серверов, каждый должен работать на своем порту

    # port 1194

    # Тип виртуального устройства (tun, tap, null), в некоторых случаях необходимо указывать и его номер

    dev tun

    # По умолчанию используется протокол UDP, возможные варианты - tcp, udp, tcp-server, tcp-client

    # proto tcp-server

    # Включаем сжатие

    comp-lzo

    # Отправка icmp-пакетов, чтобы межсетевые экраны не разорвали соединения при их неактивности

    ping 15

    # Для dial-up, NAT, PPP понадобятся следующие параметры:

    # ping-restart 45

    # ping-timer-rem

    # persist-tun

    # persist-key

    # Вывод отладочных сообщений, максимальное значение «9» стоит устанавливать только при отладке

    verb 3

    # Назначаем виртуальному интерфейсу следующие IP-адреса: своему - 10.1.0.1, удаленному - 10.1.0.2; используется при соединении «точка-точка»

    ifconfig 10.1.0.1 10.1.0.2

    # При установленном «mode server» задается пул клиентских адресов

    # mode server

    # server 10.1.0.0 255.255.255.0

    # Скрипт, содержащий сведения о новом маршруте

    up ./server.up

    # Удаляем маршрут при остановке

    down ./server.down

    # Добавляем адреса сетей и ресурсов, которые будут доступны клиентам

    push "route 192.168.1.0 255.255.255.0"

    # Использование SSL/TLS (только для сервера)

    tls-server

    # Файлы ключей

    ca /etc/openvpn/keys/ca.crt

    cert /etc/openvpn/keys/server.crt

    key /etc/openvpn/keys/server.key

    # Параметры Diffie-Hellman при использовании tls-server

    dh /etc/openvpn/keys/dh1024.pem

    # Пользователь и группа, от имени которых будет работать программа

    user openvpn

    group openvpn

    Файл server.up содержит информацию о новом маршруте, в простейшем случае запись такая:

    route add -net 10.0.1.0 netmask 255.255.255.0 gw 192.168.1.1

    Здесь 192.168.1.1 - адрес внутреннего интерфейса сервера OpenVPN.

    И server.down:

    route del -net 10.0.1.0/24

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

    $ sudo openvpn --config /etc/openvpn/server.conf

    Теперь подсоединяемся с помощью telnet:

    $ telnet localhost 1194

    При получении ответа сервера можно продолжать.

    Если OpenVPN устанавливался из исходных текстов, необходимо обеспечить его автоматический запуск при загрузке системы и остановку при выключении. Разработчики заранее подготовили несколько скриптов. В подкаталоге gentoo находится готовый файл openvpn.init для одноименного дистрибутива, а в sample-scripts – файл для запуска и остановки OpenVPN в RedHat/Fedora и других chkconfig-based дистрибутивах. Хотя после небольшой доработки их можно использовать и в любом другом дистрибутиве. В общем случае подойдут простые скрипты – openvpn-startup.sh и openvpn-shutdown.sh. Хотя заглянуть внутрь первого также стоит:

    # vi openvpn-startup.sh

    #!/bin/sh

    # Конфигурационный каталог openvpn

    dir=/etc/openvpn

    # В этом файле есть готовые правила для iptables на все случаи жизни; если ты планируешь его использовать, то самостоятельную загрузку iptables следует отключить

    $dir/firewall.sh

    # Подгружаем необходимый модуль

    modprobe tun

    # Включаем IP forwarding

    echo 1 > /proc/sys/net/ipv4/ip_forward

    # Оставляем одну запись

    openvpn --cd $dir --daemon --config server.conf

    # openvpn --cd $dir --daemon --config vpn2.conf

    # openvpn --cd $dir --daemon --config vpn2.conf

    Теперь копируем сценарий в /etc/init.d, делаем его исполняемым и создаем необходимые символические ссылки на уровнях запуска, помня о том, что OpenVPN желательно загружать после того, как будет поднята сеть:

    $ chmod +x openvpn-startup.sh

    $ sudo cp openvpn-startup.sh /etc/init.d

    $ sudo ls –n /etc/init.d/openvpn-startup.sh /etc/rc3.d/S99openvpn-startup

    $ sudo ls –n /etc/init.d/openvpn-startup.sh /etc/rc5.d/S99openvpn-startup

    $ chmod +x openvpn-shutdown.sh

    $ sudo cp openvpn-shutdown.sh /etc/init.d

    $ sudo ls –n /etc/init.d/openvpn-shutdown.sh /etc/rc6.d/K80openvpn-shutdown

    Настройки iptables

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

    # vi server.up

    /sbin/iptables -I INPUT -p udp --dport 1194 -j LogAccept

    /sbin/iptables -I OUTPUT -p udp --sport 1194 -j LogAccept

    /sbin/iptables -I FORWARD -s 10.0.1.0/24 -d 192.168.1.0/24 -j LogAccept

    /sbin/iptables -I FORWARD -d 10.0.1.0/24 -s 192.168.1.0/24 -j LogAccept

    # vi server.down

    /sbin/iptables -D INPUT -p udp --dport 1194 -j LogAccept

    /sbin/iptables -D OUTPUT -p udp --sport 1194 -j LogAccept

    /sbin/iptables -D FORWARD -s 10.0.1.0/24 -d 192.168.1.0/24 -j LogAccept

    /sbin/iptables -D FORWARD -d 10.0.1.0/24 -s 192.168.1.0/24 -j LogAccept

    Некоторые варианты настройки iptables можно подсмотреть в файле firewall.sh.

    Создание конфигурационных файлов – клиент

    Для клиентского компьютера также имеется шаблон – client.conf. Конфигурационные файлы клиентов, подключающихся к одному серверу, будут отличаться лишь названиями файлов ключей и некоторыми сетевыми настройками.

    # vi client.conf

    dev tun

    # Для клиента обязательно указываем IP-адрес и порт сервера OpenVPN

    remote 195.95.95.95 1194

    proto udp

    comp-lzo

    ping 15

    verb 3

    # Обрати внимание, что по сравнению с сервером IP-адреса проставлены в обратном порядке

    ifconfig 10.1.0.2 10.1.0.1

    up ./client.up

    down ./client.down

    ca /etc/openvpn/keys/ca.crt

    cert /etc/openvpn/keys/client1.crt

    key /etc/openvpn/keys/client1.key

    user openvpn

    group openvpn

    Клиент и сервер готовы. Можно запускать и пробовать соединение. Команда ifconfig должна показать наличие tun0 на обоих компьютерах. По адресу 10.1.0.2 должен проходить ping. При этом о шифровании будет свидетельствовать то, что захваченный с помощью tcpdump пакет на интерфейсах eth0 и tun0 отличается. Успехов.

    Фронтенды для Linux к OpenVPN

    Все настройки и управление OpenVPN в Linux совсем не обязательно выполнять путем прямого редактирования конфигурационных файлов. Доступны графические интерфейсы, позволяющие сделать это легко и просто. Самым элементарным является kovpn (www.enlighter.de); с его помощью можно запускать и останавливать демон, не вызывая консоль, при запросе вводить имя и пароль.

    Чуть больше возможностей у KVpnc (home.gna.org/kvpnc): создание ключей, импорт и экспорт конфигурационных файлов и сертификатов, работа с несколькими профилями. Он умеет работать и с некоторыми другими VPN-клиентами: Cisco VPN (vpnc), IPSec (FreeS/WAN (OpenS/WAN), racoon), PPTP. Имеет локализованный интерфейс.

    OpenVPN-Admin (openvpn-admin.sf.net), написанный на Mono, позволяет создавать сертификаты и управлять ими с помощью понятных мастеров, работать с несколькими профилями.

    Есть версии не только для *nix, но и для Windows; в планах вариант для Nokia 770. Также существует OpenVPN Control (openvpn-control.sf.net) - мультиплатформенный фронтенд, написанный на Perl и Tk. С его помощью можно просматривать и управлять подключениями к серверу.

    Есть и модуль к Webmin (www.openit.it/index.php/openit_en/software_libero/openvpnadmin), позволяющий в удобном графическом окружении редактировать vars, генерировать все необходимые ключи и сертификаты, создавать серверы и отслеживать активные соединения.


  • Установка дебиана по сети.

  • Установка apache, php, mysql на платформу Windows



  • Социальные сети

    Рубрики

    Последние записи