Установка и настройка 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 адрес нашего клиента.
    Как видно из дампа наш канал зашифрован.

    Предлагаю вариант попроще:

    Предлагаю вариант попроще: https://sites.google.com/site/smkuzmin/home/openvpn

    все гениальное

    все гениальное просто)....замечательная статья..все сделал все работает автору 5+

    у меня openvpn стартует,

    у меня openvpn стартует, настраивал на 2ух машинах, но вот беда, клиент не подключается! смотрю tcpdump, от клиента пакеты идут, сервер их принимает на порту, но линк не устанавливается! вообще никаких намеков. может подскажете? проверки ради на всех машинах прописывал в iptables правила по умолчанию ACCEPT, пока не знаю за что еще взяться.
    PIX-GW1:/etc/openvpn # tcpdump -i eth1 port 1195
    16:52:26.469112 IP 192.168.18.1.47980 > ххх.ххх.ххх.ххх.rsf-1: Flags [S], seq 372832519, win 4380, options [mss 1460,sackOK,TS val 265559539 ecr 0,nop,wscale 6], length 0
    16:52:29.473473 IP 192.168.18.1.47980 > ххх.ххх.ххх.ххх.rsf-1: Flags [S], seq 372832519, win 4380, options [mss 1460,sackOK,TS val 265562544 ecr 0,nop,wscale 6], length 0
    16:52:35.489471 IP 192.168.18.1.47980 > ххх.ххх.ххх.ххх.rsf-1: Flags [S], seq 372832519, win 4380, options [mss 1460,sackOK,TS val 265568560 ecr 0,nop,wscale 6], length 0
    3 packets captured
    5 packets received by filter
    0 packets dropped by kernel
    порт 1195 пусть не смущает, изначально на 1194 пробовал. это с клиента tcpdump, сервер все это принимает, но ничего не делает.
    ошибок в логе openvpn тоже нет, все хорошо, на первый взгляд. подскажите чего-нить, м? куда копать
    спасибо

    Поставил на свой VPS (CentOS

    Поставил на свой VPS (CentOS release 5.5, ядро 2.6.18-194)
    Не хочет запускаться хоть тресни. В логах вот это:

    Tue May 10 18:10:42 2011 OpenVPN 2.1.1 i386-redhat-linux-gnu [SSL] [LZO2] [EPOLL] [PKCS11] built on Jan 26 2010
    Tue May 10 18:10:42 2011 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
    Tue May 10 18:10:42 2011 Diffie-Hellman initialized with 1024 bit key
    Tue May 10 18:10:42 2011 Control Channel Authentication: using 'keys/tls.key' as a OpenVPN static key file
    Tue May 10 18:10:42 2011 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
    Tue May 10 18:10:42 2011 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
    Tue May 10 18:10:42 2011 TLS-Auth MTU parms [ L:1560 D:168 EF:68 EB:0 ET:0 EL:0 ]
    Tue May 10 18:10:42 2011 ROUTE default_gateway=192.0.2.1
    Tue May 10 18:10:42 2011 Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
    Tue May 10 18:10:42 2011 Note: Attempting fallback to kernel 2.2 TUN/TAP interface
    Tue May 10 18:10:42 2011 TUN/TAP device /dev/tun0 opened
    Tue May 10 18:10:42 2011 /sbin/ip link set dev tun0 up mtu 1500
    SIOCSIFMTU: No such device
    Tue May 10 18:10:42 2011 Linux ip link set failed: external program exited with error status: 255
    Tue May 10 18:10:42 2011 Exiting

    Как побороть кто-нибудь подскажет?

    пинать владельца ноды, т.е.

    пинать владельца ноды, т.е. хостера в вашем случае на предмет добавления tun

    Начал устанавливать на Cent

    Начал устанавливать на Cent OS 5, сначала такая же ошибка выскочила как и у тебя, установил lzo, затем начал заново ./configure, появилась ошибка Configure:Error:OpenSSL Crypto Headers not found. Залез на сайт openssl, установил, затем опять попробовал - ошибка та же. Не можешь подсказать, в чем проблема?

    в тебе наверное.....сделай

    в тебе наверное.....сделай еще раз все сначала

    Спасибо за мануал, и помощь в

    Спасибо за мануал, и помощь в аське ))) Все заработало!
    Но также хотел поделиться граблями, на которые пришлось понаступать.

    1) На многих дистрибутивах нету предустановленных компиляторов и других нужных вещей (я юзал centos-4-i386-minimal) поэтому сначала надо их установить.
    Сначала устанавливаем YUM, подробнее написано здесь http://www.eomy.net/linux/install-yum/

    Затем инсталим компиляторы и пр.
    yum install gcc gcc-c++ make openssl openssl-devel

    2) Судя по коментариям, многие забывают скопировать файлы ключей и сертификатов, и я, кстати, тоже ))). Для этого юзаю команду
    cp /usr/local/src/openvpn-2.0.7/easy-rsa/keys/* /etc/openvpn/

    3)Если мы не устанавливаем себе на сервер ДНС, то нужно в файле server.conf прописать гугловские ДНС (или любые другие)
    push "dhcp-option DNS 8.8.8.8"

    4)Еще большими граблями было то, что не читал дополнения к статье http://dedicatesupport.com/archives/32, поэтому очень долго провозился с настройкой НАТ, а в дополнении прописана его настройка на виртуальном сервере, где не работает маскарад, ну под семерку надо прописать в конфиге дополнительные команды, которые есть тоже в этом дополнении.

    Вот только небольшие глюки у меня остались. Юзаю клиент под винду семерку и при подключении отображаются какие-то каракули:

    Tue Mar 01 13:52:59 2011 IMPORTANT: OpenVPN's default port number is now 1194, based on an official port number assignment by IANA. OpenVPN 2.0-beta16 and earlier used 5000 as the default port.
    Tue Mar 01 13:52:59 2011 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
    ЋЉ
    ЋЉ
    ЋЉ
    ЋЉ

    Но самое главное, что ВПН работает!!! Просто клиент не отображает, что он подключен (причем пробовал устанавливать разные версии клиентов и на разных осях - дополнительно на ХР виртуальном тестил). Если кто-то знает как пофиксить эту проблему, буду рад услышать решение.

     Да без проблем. Рад что моя

     Да без проблем. Рад что моя писанина смогла помочь :). Стукни мне в аську плиз - есть предложение. 

    Автор! Вот сколько смотрю на

    Автор! Вот сколько смотрю на этот замечательный сайт и не менее замечательные статьи, и никак не могу понять:
    - на кой фиг ты утомляешь читателей своими дурацкими tar zxvf , ./configure , make , make install ??
    Впечатление такое, что ты пишешь статьи НЕ для CentOS, для которого есть готовые пакеты, а для какой-нить ГЕНТЫ.

    Мало того, что эти компиляции запудривают мозги читателей и отнимают понапрасно время - они еще и крайне вредны для системы, потому что засирают ее продуктами компиляции так, что удалить их потом полностью при случае становится практически невозможно.

    Автор, открой для себя богатые репозитарии CentOS с готовыми проверенными пакетами и больше не занимайся этой допотопной хней - она никому не нужна.

    что ты тормОЗИШ ТО А....... в

    что ты тормОЗИШ ТО А....... в Сentos-e нет пакета openvpn
    bla-bla-bla#yum install openvpn
    Loaded plugins: fastestmirror, priorities
    Loading mirror speeds from cached hostfile
    * centosplus: mirror.corbina.net
    Setting up Install Process
    No package openvpn available.
    Nothing to do
    и добавлять дополнительные репозитории не ВСЕГДА ДОСТУПНЫ!

    Андрей! Думаешь ты самый

    Андрей! Думаешь ты самый умный со своими советами? Я могу тебе навскидку сказать не менее десятка ситуаций, когда репозитарии никак не помогут. Так что прежде чем открывать мне глаза на богатые репозитарии центоса, сначала бы сам попробовал например поставить мемкешед на 64 бит платформу центоса, причем чтоб работало, как ни странно, и при этом версия php была 5.2.17 со своего любимого репозитария, я так думаю он у тебя atomic. 

    Сори если что, но холивары меня чутка утомили. Кроме того, статья писалась в те далекие времена, когда ни в одном репозитарии не было openvpn версии 2.0.7.  Естественно, если нет противопоказаний, пакеты НУЖНО ставить из репозитариев. 

    Уважаемый Админ. Статья то

    Уважаемый Админ.
    Статья то хорошая!
    Но, у меня тоже "service openvpn start" выдает ошибку:[FAILED]
    вот что говорит лог
    pitomnik openvpn[8419]: Options error: --server directive network/netmask combination is invalid
    Oct 18 09:14:29 srv openvpn[8419]: Use --help for more information.
    Oct 18 09:14:29 srv openvpn: failed

    А у меня не получается

    А у меня не получается выполнить это "service openvpn start" выдаёт ошибку: [FAILD]

    Что делать подскажите?

    Отличная статья, после

    Отличная статья, после некоторого шаманства установил OpenVPN на CENTOS 5. Единственное остался вопрос, каким образом отключить логи подключения? Я сделал так, (может этого не достаточно) прописав в конфигурацию сервера (server.conf) следующие строки
    log /dev/nullы
    status /dev/null
    log-append /dev/null
    verb 0

    У меня после подключяение

    У меня после подключяение openVPN не открываются никакие сайты, кроме тех которые размещены на самом сервере. Пинг к серверу есть.

    //Такая проблема часто возникает когда на сервера не настроен bind.
    bind поставил, настроил, как описано тут - http://server-tuning.info/bind/setting-up.html не помогло.

    // Если же нет, то проблема скорее всего в маршрутизации.
    Тогда значит маршпутизацию нада настривать? У меня CentOS а клиент WinXP.

    Отличная статья! автору

    Отличная статья!
    автору спасибо. установил с первого раза на старую федору.

    Zakachkin, воспользуйтесь

    Zakachkin, воспользуйтесь
    openssl dhparam -out dh1024.pem 1024
    полеченный файл (dh1024.pem) положите в config

    Вроде всё по инструции делал,

    Вроде всё по инструции делал, но все равно что-то ему не хватает дистр ASPLinux!
    Thu Jan 8 14:23:27 2009 Cannot open dh1024.pem for DH parameters: error:02001002:system library:fopen:No such file or directory: error:2006D080:BIO routines:BIO_new_file:no such file

    Очень хорошая статья, автору

    Очень хорошая статья, автору +1.
    Настроил openvpn сервер на Mandriva 2009, клиенты коннектятся с виндовых машин. Очень пригодились дополнения dr.gopher'а. Правда есть одна небольшая проблема низкая скорость, но это позже...

    Отличная статья, спасибо,

    Отличная статья, спасибо, установил с Вашей помощью ВПН-сервер на WinXP.
    Правда, не могу понять, почему получается в итоге такая низкая скорость между компами - без ВПН скорость минимум 200кб/сек, а через ВПН - не более 40кб/сек(.
    Производительность компов неплохая, на процессорах Core2Duo...

    Салют, хорошая статья, хотя я

    Салют, хорошая статья, хотя я всё сделал сам, но есть одно но! всё красиво коннектится, но когда я проверяю IP, то мне показывают IP моей тачки, а не сервака. Я так понял проблемы где то в NAT настройках, хотя как мог всё настроил. Может есть какие нить мысли по этому поводу?

    Статья удачная ! !! Ставил

    Статья удачная ! !! Ставил на Mandrive и на SUSE все нормально стало, но наткнулся на проблемку: каждый клиент при конекте к серверу получает 1 и тот же IP и либо первого выкидует, либо второй войти неможет.
    Подскажите в какую сторону смотреть
    klient.log
    Thu Jul 31 14:25:17 2008 [rud] Peer Connection Initiated with 111.111.111.111:5190
    Thu Jul 31 14:25:18 2008 SENT CONTROL [rud]: 'PUSH_REQUEST' (status=1)
    Thu Jul 31 14:25:18 2008 PUSH: Received control message: 'PUSH_REPLY,route 10.10.10.0 255.255.255.0,redirect-gateway def1,dhcp-option DNS,route 10.10.10.0 255.255.255.0,ping 10,ping-restart 120,ifconfig 10.10.10.6 172.16.1.5'
    Thu Jul 31 14:25:18 2008 Options error: --dhcp-option: unknown option type 'DNS' or missing parameter
    Thu Jul 31 14:25:18 2008 OPTIONS IMPORT: timers and/or timeouts modified
    Thu Jul 31 14:25:18 2008 OPTIONS IMPORT: --ifconfig/up options modified
    Thu Jul 31 14:25:18 2008 OPTIONS IMPORT: route options modified
    Thu Jul 31 14:25:18 2008 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
    Thu Jul 31 14:25:18 2008 netsh interface ip set address "VPN" static 10.10.10.6 255.255.255.252

    Ставлю все это богатсво на

    Ставлю все это богатсво на дебиане/ статья классная? но наступил я на грабли/ Уже второй раз и на разные/ Первый раз был когда в своем дебиане в следствии своей новичковости я поставил опенвпн как написано в этой статье make install и т/д надо было apt-get юзфть а то ничего не запускается!!! так как ручками не умею чистить а make uninstall не проканало решил переставить систему благо нечего было терять кроме 3-4 часов :) теперь вот така я трабла!
    SERVER5:/etc# iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
    SERVER5:/etc# iptables-save > /etc/sysconfig/iptables
    bash: /etc/sysconfig/iptables: No such file or directory
    Ну нету у меня такой папки::( да и chkconfig --list iptables не канает/+ в начале chkconfig --add openvpn тж не сканало!!! ПРи этом все время пишет что нет такой кманды chkconfig какие будут предложения!!! Буду оч признателен

    А для UNIX-VPS какие

    А для UNIX-VPS какие настройки не подскажите?

    спасибо, всё работает! а

    спасибо, всё работает!

    а вот если я куплю дополнительный IP к своей vps, то можно вся организовать так, чтобы я к впн коннектился на один IP, а на сайтах везде светился второй?

    при генерации ключа

    при генерации ключа ./build-key client получается файл client.crt размером 0 байт
    вроде так не должно быть?
    и при попытке запустить пишет что не может загругить этот сертификат.

    den says: каждый пятый пакет

    den says:

    каждый пятый пакет теряется. что бы это могло быть?

    Возможно надо поиграться с tun-mtu 1500.
    1. Цифра на сервере и на клиенте должна совпадать.
    2. Проконсультируйтесь у провайдера, какой mtu лучше поставить. Как правило они называют рату тройку нужных вариантов.
    Удачи.

    К сожалению на данный момент

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

    Тут кто-то есть вообще?

    Тут кто-то есть вообще?

    Добрый день! Когда следует

    Добрый день!

    Когда следует ожидать решения упомянутого выше подхода?

    > "...как сделать так чтоб вместо копирования клиенту 3 файлов с ключами, обходиться тока одним .p12 файлом?... "

    каждый пятый пакет теряется.

    каждый пятый пакет теряется. что бы это могло быть?

    XP - моя машинка,
    server - openvpn-сервер на Linux,
    host - удаленная тачка за сервером

    ------ ping ------

    1. XP -> host = пакет теряется
    2. XP -> server = все ОК!
    3. server -> host = все ОК!

    ------ tcpdump (при пинге 3) ------

    tap0 - интерфейс на меня
    xxx0 - интерфейс на инет

    XP -1-> tap0 -2-> xxx0 -3-> host

    host -4-> xxx0 -5-> tap0 -6-> XP

    из 10 пакетов 2 (всегда!) не фиксируются в точке 6.
    т.е. уходят ВСЕ пакеты, на обратном пути теряется пакет в точке 5.

    openvpn и свою тачку перегружал, фаервол на себе выключал - ниче не помогает.

    в kern.log при этом появляется:

    kernel: [5113008.397000] Inbound IN=xxx0 OUT=tap0 SRC=host DST=172.10.10.4 LEN=60 TOS=0x00 PREC=0x00 TTL=251 ID=16518 PROTO=ICMP TYPE=0 CODE=0 ID=512 SEQ=46082

    Уважаемый dr.gopher !!! Меня

    Уважаемый dr.gopher !!!
    Меня очень радует что на мой сайт заходят такие люди как Вы!!! Я горд этим! Побольше бы таких посетителей! Спасибо Вам за ценные и совершенно верные дополнения к моей заметке.

    У меня такая проблема, когда

    У меня такая проблема, когда запускаю VPN:
    Sat Jan 19 07:42:38 2008 Note: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)
    Sat Jan 19 07:42:38 2008 Cannot allocate TUN/TAP dev dynamically

    Когда modprobe tun вот что:
    FATAL: Could not load /lib/modules/2.6.9-023stab040.1-smp/modules.dep: No such file or directory

    Что делать??????

    Хорошая статьтья.

    Хорошая статьтья. Спасибо!

    Плохо только, что автор не дотянул статью до инструкции, а написал наполовину обзорную. :-)

    Опишу грабли на которые наступил я. Тем самым отвечу на несколько вопросов которые задавались выше:
    1. Примеры минимальных конфигов:

    1.1 Сервер:
    dev tap
    proto tcp
    server 10.0.3.0 255.255.255.0
    dh /etc/openvpn/dh1024.pem
    ca /etc/openvpn/ca.crt
    cert /etc/openvpn/server.crt
    key /etc/openvpn/server.key
    proto tcp
    port 15000
    user openvpn
    group openvpn
    comp-lzo
    verb 5

    1.2 Клиент:
    dev tap
    proto tcp
    remote 194.44.44.32
    port 15000
    client
    dh "C:\\Program Files\\OpenVPN\\config\\ dh1024.pem "
    ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"
    cert "C:\\Program Files\\OpenVPN\\config\\client2.crt"
    key "C:\\Program Files\\OpenVPN\\config\\client2.key"
    comp-lzo
    verb 3

    2. Грабли 1 !!! - server 10.0.3.0 255.255.255.0 , последняя цифра IP адреса 0.
    Иначе сервер не стартует! Следовательно IP сервера будет 10.0.3.1 клиентов последующие.

    3. Грабли 2!!! - Конфиг в линксе server.conf Если он отсутствует в директории /etc/openvpn, либо случайно назван как на виндовом сервере server.ovpn, сервер при старте (service openvpn start) говорит ОК, но на самом деле он не стартует!
    У меня при рабочем сервере –
    [root@web openvpn]# service openvpn status
    Status written to /var/log/messages

    4. Грабли 3!!! Указание пути в винде вот в таком формате - "C:\\Program Files\\OpenVPN\\config\\client2.key"

    5. Габли 4!!! Скрипты для генерации ключей тут - ./usr/share/openvpn/easy-rsa/2.0/, для вервии openvpn 2.09.

    6. Єто уже для облегчени жизни. Добаляем в авто загрузку -
    /sbin/chkconfig --level 345 openvpn on (Rad Hat, Fedora Core).

    7. Если сервер не стартует. Смотрим tail –f /var/log/messages

    8. Хорошая статья, но найти удалось только в кеш Гугла.
    http://209.85.129.104/search?q=cache:1TqBAdRF7L0J:https://zloy.org/news_n918_desc-Nastroika-VPN-na-osnove-OpenVPN.html+news_n918_desc-Nastroika-VPN-na-osnove-OpenVPN&hl=uk&ct=clnk&cd=1&gl=ru

    Вот пожалуй и все. Всем удачи.

    очень хорошая, доходчивая

    очень хорошая, доходчивая статья. а я вот спросить хотел, мож кто посоветует где можно купить недорого дедик.

    TCP/UDP: Socket bind failed

    TCP/UDP: Socket bind failed on local address 100.100.100.100:1194: Cannot assign requested address

    при запуске выдает такую вот ошибку.
    уже задавали вопрос.. никто так и не объяснит? как это лечить

    У вас не установлен

    У вас не установлен компилятор языка C. Его необходимо поставить командой:
    yum install gcc gcc-c++

    [root@serv src]# cd

    [root@serv src]# cd openvpn-2.0.7
    [root@serv openvpn-2.0.7]# ./configure
    checking for ifconfig... /sbin/ifconfig
    checking for ip... /sbin/ip
    checking for route... /sbin/route
    checking build system type... i686-pc-linuxoldld
    checking host system type... i686-pc-linuxoldld
    checking target system type... i686-pc-linuxoldld
    checking for a BSD-compatible install... /usr/bin/install -c
    checking whether build environment is sane... yes
    checking for gawk... gawk
    checking whether make sets $(MAKE)... no
    checking for gcc... no
    checking for cc... no
    checking for cc... no
    checking for cl... no
    configure: error: no acceptable C compiler found in $PATH
    See `config.log' for more details.
    [root@serv openvpn-2.0.7]# make
    -bash: make: command not found

    в чем у меня может быть проблема?

    Конечно же нет. Я указываю

    Конечно же нет. Я указываю какие ошибки могут возникнуть при инсталляции наиболее часто. И как их решать.

    Не совсем понял описанную

    Не совсем понял описанную хронологию установки:

    > ./configure
    > После чего получаем ошибку такого вида:
    > LZO library available from http://www.oberhumer.com/opensource/lzo/
    > configure: error: Or try ./configure –disable-lzo
    > Это значит что у нас в системе нет библиотеки lzo с помощью которой происходит компрессия и декомпрессия нашего > трафика в реальном режиме времени. лезем на соответствующий сайт, качаем библиотеку и ставим:

    Т.е сначала нужно добиться указаной ошибки, а потом ставить по нормальному, или как?

    К сожалению с Firehol не

    К сожалению с Firehol не разбирался. Поэтому не смогу Вам помочь. :-(

    У меня для настройки IPTables

    У меня для настройки IPTables стоит Firehol, то есть ручные правила для IPTables он игнорирует.
    Достаточно ли одного этого правила
    [b]iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE[/b]
    для того чтобы пакеты от клиентской машины попадая на наш выделенный сервер
    могли уйти в Интренет и соответственно возвращались назад.
    Может кто знает как это правило правильно прописать в FIREHOL?
    А то у меня коннект проходит, IP выдается, а запросы через сервер не идут.

    млин не получается с xp зайти

    млин не получается с xp зайти , на сервере все гуд установилось а вот дома не подключен кабель пишет ))) наверно ip какието неправильно вписал... не получается

    И еще. У меня обратная

    И еще. У меня обратная ситуация. Т.е. серв. надо ставить на Windows, а клиент на Linux. Может поможете чем??? А то здесь все конечно подробно написано, но в моем случае я все таки без помощи обойтись не смогу)))

    А у меня такой вопрос: А если

    А у меня такой вопрос: А если сервер не подключен, то клиент постоянно будет пытаться достучаться до него?? и тратить много трафика?? (клиентов мне надо поставить на машины с gprs модемами)

    на XP

    винды XP-шные. Лан попробую

    винды XP-шные. Лан попробую сёня выкачать CentOS 4.
    А ты на CentOS 5 не пробовал ставить?

    На CentOS 4.x ставиться на

    На CentOS 4.x ставиться на ура без проблем. Людям на debian ставил тоже без проблем. А винды какие? XP или 2000?

    у меня стоят 6 машин

    у меня стоят 6 машин виндовых, на всех пробовал... всё равно пишет 10 мб/с. Ну не может чтобы на всех клиентах одинаково было. А можно каким нить образом изменить скорость tap0 адаптера. Если конектить две машины кабелем на одной скорость 10/100 а на второй 10/100/1000, то сеть будет максимум 100, так что я думаю дело не в виндовых клиентах. В инете находил намёки на это, но видимо это было на старые версии опенвпн. Там повышали скорость до гб.

    З.Ы. sever.conf выучил наизусть, только вот про скорость там ничего нет. openvpn брал 2.0.9 и 2.1_rс4 ставил из rpm пакетов т.к. мандрива упоно не хотела переваривать исходники. Может посоветуешь систему какую нить на которой эта штука работает.