Установка и настройка OpenVPN в CentOS 4
Я не знаю кому как, а лично мне очень не нравится когда мою болтовню по асе, мою почту, да и вообще весь мой трафик может перехватить мой провайдер и еще куча всяческих очень любопытных граждан :-). Кроме того, иногда просто необходимо иметь ip адрес не свой родной, а иностранный.
Выходом из такого положения может служить такая технология как Virtual Private Network. Реализаций под linux есть масса: это и Poptop и решения на базе IPsec и OpenVPN и многие другие.
Не буду обсуждать то или иное решение, скажу только, что я остановился на OpenVPN. Причин несколько:
Итак, сегодня мы рассмотрим установку и настройку очень полезного пакета 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
0×0000: 4500 003c 5024 0000 f501 8342 40e9 a763 E..
0×0010: 0a08 0006 0000 825b 0400 cf00 6162 6364 …….[….abcd
0×0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst
0×0030: 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
0×0000: 4500 003c 502d 0000 8001 f839 0a08 0006 E.. 0×0010: 40e9 a763 0800 795b 0400 d000 6162 6364 @..c..y[….abcd
0×0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst
0×0030: 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
0×0000: 4500 003c 502d 0000 f501 8339 40e9 a763 E.. 0×0010: 0a08 0006 0000 815b 0400 d000 6162 6364 …….[….abcd
0×0020: 6566 6768 696a 6b6c 6d6e 6f70 7172 7374 efghijklmnopqrst
0×0030: 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 (0×0800),
length 143: IP ss.ss.ss.ss.1194 > cc.cc.cc.cc.4286: UDP, length 101
0×0000: 4500 0081 acc4 4000 4011 2e6d 5995 c3a1 E…..@.@..mY…
0×0010: 52d1 ef32 0bd6 10be 006d 2773 3022 cd46 R..2…..m’s0″.F
0×0020: fdbe bd8e eb73 1d90 ff19 14a3 f2a6 a484 …..s……….
0×0030: b34d 227c 0dc8 3115 f6bd 9f68 04b4 5b6d .M”|..1….h..[m
0×0040: 9f9e 5ff1 f8a0 e8de 5963 f8de 41fc 66ac .._…..Yc..A.f.
0×0050: f652
07:49:28.647961 00:13:8f:a3:3c:bf > 00:0c:db:b6:21:00, ethertype IPv4 (0×0800),
length 143: IP ss.ss.ss.ss.1194 > cc.cc.cc.cc.4286: UDP, length 101
0×0000: 4500 0081 acc5 4000 4011 2e6c 5995 c3a1 E…..@.@..lY…
0×0010: 52d1 ef32 0bd6 10be 006d 3ee2 3001 88d0 R..2…..m>.0…
0×0020: 19de 5eb9 6ece ee5f 4088 16a0 7ccb fed4 ..^.n.._@…|…
0×0030: c097 7c7e c546 9cd5 3c88 960e d87d dfdf ..|~.F..< ….}..
0×0040: 931f d1b5 b620 9fd1 6e70 898e 9753 aaeb ……..np…S..
0×0050: 2337
где ss.ss.ss.ss адрес нашего сервера, а cc.cc.cc.cc адрес нашего клиента.
Как видно из дампа наш канал зашифрован.
А почему бы просто не поставить openvpn из rpm пакета?
↓ Quote | Posted September 1, 2006, 1:08 pmА потому что его во первых я стараюсь писать вещи подходящие для наибольшего количества версий linux, а во вторых потому что в стандартной поставке CentOS 4 его нет.
↓ Quote | Posted September 1, 2006, 1:40 pmОткрой для себя DAG репозитарий, узнаешь много нового
↓ Quote | Posted September 2, 2006, 12:12 pmОгромное спасибо Вам за упоминание о репозитарии DAG. Должен признаться, что о нем до сегодняшнего дня ничего не слышал, в основном пользовался Freshrpms и Livna. Действительно, в DAG есть пакеты, которых нет в Freshrpms и Livna. Еще раз спасибо.
↓ Quote | Posted September 4, 2006, 8:08 amОтличная статья получилась.
↓ Quote | Posted September 10, 2006, 1:40 amСтавил на Дебиан. Все работает.
как бы самого себя посниффить чтобы убедиться в шифровке данных?
Спасибо за положительный отзыв к моей статье! А насчет снифинга - если в логе openvpn нет никаких ошибок - то канал точно шифруется :-). А вообще можно воспользоваться утилитой tcpdump для перехвата трафика по порту 1194, и последующего его анализа.
↓ Quote | Posted September 11, 2006, 9:14 am[root@server easy-rsa]# ./vars
NOTE: when you run ./clean-all, I will be doing a rm -rf on /usr/local/src/openvpn-2.0.7/easy-rsa/keys
[root@server easy-rsa]# ./clean-all
you must defne KEY_DIR
[root@server easy-rsa]# ./build-ca
you must define KEY_DIR
что-то я запутался
создаю директорию keys результат тотже
↓ Quote | Posted October 8, 2006, 3:53 pmПробовал еще, не получается, что-то гдето упустилось
помогите советом.
↓ Quote | Posted October 16, 2006, 3:31 pmAndrey!
↓ Quote | Posted October 17, 2006, 8:27 amне ./vars
а
. ./vars
Попробуй так.
the article is good, in fact i’ve installed it by myself using a doc from the openvpn site. but if i had found it before i would have use it. one comment:
↓ Quote | Posted October 22, 2006, 6:19 amit’s better to use openvpn-2.0.9-gui-1.0.3-install.exe from http://openvpn.se/download.html because this client is free from old vulnerabilitys.
Спасибо, получилось
↓ Quote | Posted October 30, 2006, 7:16 pmУвы, у меня не выходит
↓ Quote | Posted December 9, 2006, 11:23 pm# ../vars
../vars: Команда не найдена.
оболочка - tcsh
в чем проблемма? Подскажите пожалуйста.
А ты просто в первой строке измени на тот шелл,который у тебя в наличии, а то там по умолчанию стоит #!/bin/bash
↓ Quote | Posted December 25, 2006, 2:48 pmВсё откомпилировал, создал все ключи, настроил конфиг. При попытке запустить — FAILED.
↓ Quote | Posted January 25, 2007, 5:16 pmЗаметил такую странную вещь: когда файл конфига удаляю из /etc/openvpn , то запускается OK (как при этом работает не проверял, т. к. очевидно что запустить надо всё же с конфигом). Думал может ошибка в конфиге, закомментил его весь — всё равно не запускается. Удалил из него всё (сделал файл нулевого размера) — такая же хрень. Стоит удалить его вообще — опять запускается OK. Чтобы это всё могло означать?
To Lexx:
↓ Quote | Posted January 27, 2007, 10:16 amВероятнее всего команда ./configure выдала ошибку и поэтому сам конфиг и не создался. Соответственно команда make и имеет такой вывод. Посмотри внимательно что тебе выдает ./configure и исправь ошибки.
To Anton:
↓ Quote | Posted January 27, 2007, 10:21 amВ этом случае сложно что-то сказать наверняка. Надо смотреть логи, конфиг сам и так далее. Так что tail /var/log/messages для начала.
Cannot open dh1024.pem
↓ Quote | Posted January 27, 2007, 12:25 pmПосмотри у тебя такой файл dh1024.pem есть? Правильно ли прописан путь до него.
Все прекрасно, осталось толко TLS подключить
↓ Quote | Posted February 2, 2007, 3:42 pmвот статья получше
http://www.zloy.org/news_n918_desc-Nastroika-VPN-na-osnove-OpenVPN.html
Долго я искал такую статью!
↓ Quote | Posted February 6, 2007, 4:42 pmВсе понятно расписано афтару спасибо!
аналогично:
[root@122 easy-rsa]# ../vars
-bash: ../vars: is a directory
в чем проблема? =(
↓ Quote | Posted March 22, 2007, 6:20 pmполучилось сгенерировать ключи, а вот стартануть процесс не получается =(
↓ Quote | Posted March 23, 2007, 10:46 amservice openvpn start
Starting openvpn: [FAILED]
Обнаружил причину:
↓ Quote | Posted March 23, 2007, 4:05 pmFri Mar 23 05:04:59 2007 Cannot load certificate file server.crt: error:0906D06C:PEM routines:PEM_read_bio:no start line: error:140AD009:SSL routines:SSL_CTX_use_certificate_file:PEM lib
Заново генерить серты чтоль?
Я думаю что проблема либо в сертификатах, либо в их местоположении.
↓ Quote | Posted March 23, 2007, 5:45 pmИменно, сгенерировал заново сертификаты, теперь вот такое выдает при старте: TCP/UDP: Socket bind failed on local address 100.100.100.100:1194: Cannot assign requested address
↓ Quote | Posted March 24, 2007, 1:00 pm[…] Vpn - это хорошо. Но частенько пользователям не хочется заморачиваться с настройками клиентской части, ин необходимо просто посерфить по сети или, к примеру, подключить свою аську скрыв свой реальный ip. Для анонимной работы в сети и предназначен socks сервер. В своем браузере, в настройках подключения, Вы указываете адрес socks сервера, его порт, и все. Весь трафик от Вашего браузера проходит через socks сервер, посещение страниц таким образом идет от ip адреса сервера. Таким образом можно скривать свой ip адрес от других, а также посещать ресурсы, которые закрыты к посещению для руссих, белорусов, украинцев и так далее. Например участвовать в американских опросах общественного мнения. Что-то вступление затянулось, приступим к установке socks сервера dante. […]
↓ Quote | Posted June 14, 2007, 2:49 pmстатья получилась универсальная.
↓ Quote | Posted June 16, 2007, 3:41 pmставил себе на Debian Sarge.
особо в детали не вникал, но все сразу заработала.
автору +1
Спасибо Вам olege за положительный отзыв о моей статье. Вашими отзывами в общем-то и живу. Частенько руки опускаются и кажется что моя писанина совершенно никому не нужна. Но после таких отзывов просто становится приятно и вновь появляются силы, чтобы написать еще что-нибудь необходимое.
↓ Quote | Posted June 16, 2007, 4:29 pmПривет, Admin.
↓ Quote | Posted June 28, 2007, 5:34 pmЯ так и не понял, что такое “def1″ в строке push “redirect-gateway def1″ ?
+1
↓ Quote | Posted July 6, 2007, 10:48 amЧувак респект и уважуха тебе. Поднял на Slack 11
Все прекрасно работает
еШо раз респект!!!
Да пожалуйста! Заходи почаще
↓ Quote | Posted July 6, 2007, 10:54 amстатья конечно очень поездатая =)
но есть вопрос: как сделать так чтоб вместо копирования клиенту 3 файлов с ключами, обходиться тока одним .p12 файлом ???
—————————————————————–
↓ Quote | Posted July 31, 2007, 9:34 pmсервис vpnservice.ru высылает юзерам тока один файл
и конфиг для openVPN GUI выглядит так
—————————————————————–
remote vpnservice.ru 1194
client
dev tap
ping 10
proto tcp-client
tls-client
pkcs12 X:\\progra~1\\openvpn\\config\\d7645464546.p12
verb 5
pull
—————————————————————–
Хороший вопрос. Надо будет посмотреть. Как то не рыл в ту сторону.
↓ Quote | Posted August 12, 2007, 9:12 pm[…] В одной из предыдущих заметок я описал простую установку OpenVPV. Судя по количеству комментарие…тут […]
↓ Quote | Posted August 19, 2007, 10:13 pmнахожусь в директории easy-rsa, запускаю . ./vars или ./vars или ../vars не один вариант не работает, bash находится в /bin/bash
иногда пишет bash: no such file or directory, а также bash: access denied, иногда
NOTE: when you run ./clean-all, i will be doing a rm -rf on
/usr/local/src/openvpn-2.0.7/easy-rsa/keys
потому что потом при запуске ./clean-all
↓ Quote | Posted August 21, 2007, 4:06 pmyou must define KEY_DIR
все равно
что делать?
правишь ./vars
↓ Quote | Posted August 22, 2007, 10:17 amделаешь ’source ./vars’ - тада из ./vars в переменные окружения возмутся дефолтные значения
потом ‘build-ca’ и тд
Да там проблема в другом была. Там надо было во первых выйти с Midnight Commander а во вторых запускать правильно в смысле набирать “точка пробел точка слеш vars”
↓ Quote | Posted August 22, 2007, 10:25 amОтличные статьи, есть одно замечание и одна просьба…
Замечание: В форме ответа (где я сейчас пишу) в поле ввода ника буквы преобразуются в верхний регистр. Фтопку! Чуть капс не сломал
Просьба: как то же самое сделать для проброса одного из реальных айпи с сервера на клиента? Т.е. чтобы запустив на клиентской машине скажем фтп сервер - он был виден из инета без проброса портов. Спасибо
↓ Quote | Posted September 6, 2007, 6:42 pmЗдравствуйте! По поводу того чтобы выставить порт наружу. Мне кажется что смысла использовать для этих целей OpenVPN нет. Чем Вам так не угодил iptables не знаю. Там это делается двумя командами. В теории такое сделать конечно можно, но вопрос зачем ТАК извращаться. но все равно без iptables не обойтись.
По поводу больших букв. Спасибо. Подумаю. Может шаблон сменю. Может в коде поправлю.
↓ Quote | Posted September 7, 2007, 10:11 amМмм… вы меня наверное неправильно поняли… я хочу на клиентскую машину “притащить” одну (несколько) реальных айпи с дедика. Т.е. чтобы клиент был не за маскарадом (нат), а имел реальный адрес. Мне делали подобную фичу при помощи линуксовой машины (через одну сетевушку она соединялась с инетом, впн клиент “забирал” небольшую подсеть и “вешал” её на вторую сетевушку, к которой в свою очередь были присоединены ещё несколько компов, причем у каждого был реальный айпи. Такую конфигурацию я скорее всего даже сумею настроить… интересует как сделать подобное без промежуточного рутера. Т.е. чтобы сетевушка впн-клиента сразу получала реальный адрес… и по этому адресу пинговался уже не дедик, а именно клиент (снаружи).
↓ Quote | Posted September 7, 2007, 2:53 pmПонял. Вопрос хороший на самом деле.
К сожалению такого никогда не делал. Думаю что если указать ип адрес не из сети 10.0.0.0 а реальный выделенный для этого сервера но не привязанный к сетевой карте, то такой механизм возможно реализовать. Но точно сказать не могу. Надо экспериментировать, а времени к сожалению нет.
↓ Quote | Posted September 7, 2007, 3:01 pmДелал всё по инструкции, проблемы с ключами:
Tue Sep 18 15:29:34 2007 Cannot load certificate file с:\vpn\client1.crt: error:02001003:system library:fopen:No such process: error:20074002:BIO routines:FILE_CTRL:system lib: error:140AD002:SSL routines:SSL_CTX_use_certificate_file:system lib
Tue Sep 18 15:29:34 2007 Exiting
Я даже конфигурил и полностью собирал опять, генерил 2 раза уже ключи, и всё равно опять тоже самое. Что может быть? ):
↓ Quote | Posted September 18, 2007, 3:37 pmСкорее всего неверно прописан путь до ключей.
↓ Quote | Posted September 18, 2007, 3:44 pmВ Вашем случае скорее всего писать надо в конфиге
ca с:\\vpn\\client.crt
То есть я не опечатался когда писал две косых а не одну в пути. Так надо.
Я сделал проще, просто закинул в папку configs. Не указывал путь всё запустилось лог из клиента:
Tue Sep 18 20:45:54 2007 TLS Error: TLS key negotiation failed to occur within 60 seconds (check your network connectivity)
Tue Sep 18 20:45:54 2007 TLS Error: TLS handshake failed
Tue Sep 18 20:45:54 2007 TCP/UDP: Closing socket
Tue Sep 18 20:45:54 2007 SIGUSR1[soft,tls-error] received, process restarting
Tue Sep 18 20:45:54 2007 Restart pause, 2 second(s)
Tue Sep 18 20:45:56 2007 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 Sep 18 20:45:56 2007 WARNING: No server certificate verification method has been enabled. See http://openvpn.net/howto.html#mitm for more info.
Tue Sep 18 20:45:56 2007 Re-using SSL/TLS context
Tue Sep 18 20:45:56 2007 LZO compression initialized
Tue Sep 18 20:45:56 2007 Control Channel MTU parms [ L:1542 D:138 EF:38 EB:0 ET:0 EL:0 ]
Tue Sep 18 20:45:56 2007 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Tue Sep 18 20:45:56 2007 Local Options hash (VER=V4): ‘41690919′
Tue Sep 18 20:45:56 2007 Expected Remote Options hash (VER=V4): ‘530fdded’
Tue Sep 18 20:45:56 2007 UDPv4 link local: [undef]
Tue Sep 18 20:45:56 2007 UDPv4 link remote: 195.222.70.230:1194
Только мне не совсем ясно, почему мне не выдался IP и какой IP будет внутри сети у моего сервера?
ipconfig /all
{5758962B-3975-4CE8-9211-E5E7B4B316BE} - Ethernet адаптер:
Состояние сети . . . . . . . . . : сеть отключена
↓ Quote | Posted September 18, 2007, 8:47 pmОписание . . . . . . . . . . . . : TAP-Win32 Adapter V8 - Минипорт план
ировщика пакетов
Физический адрес. . . . . . . . . : 00-FF-57-58-96-2B
Хорошая статья:) Вопрос у меня такой:
↓ Quote | Posted September 27, 2007, 3:12 pmДостался мне в наследство уже настроеный openvpn. Кинулся я делать ключи для клиентов и обнаружил, что ca.crt у меня есть, а вот ca.key нет……
Он вообще участие при подключении пользователей принимает или только в создании сертификатов?
Можно ли как-то сформировать новый сa.key так что бы старые клиентские ключи продолжали действовать?
ca.key не требуется для клиентов, он нужен только для сервера, но без него сгенерировать новые ключи никак не получится. А если сгенерировать новый ca.key, то опять же сгенерится новый ca.crt, который нужен всем. Вот такой замкнутый круг.
Поэтому, если клиентов немного, то лучше все сгенерировать по новой.
↓ Quote | Posted September 28, 2007, 8:50 amДействительно “замкнутый круг”:) Придется генерить заново. Спасибо за ответ!
↓ Quote | Posted September 28, 2007, 1:26 pmВсегда пожалуйста!
↓ Quote | Posted September 28, 2007, 1:28 pm[…] одной из предыдущих заметок я описал простую установку OpenVPV. Судя по количеству комментариев - заметка реально […]
↓ Quote | Posted October 12, 2007, 3:36 pmВозможно, не совсем в тему, но у меня в ходе выполнения установки по этому сценарию возникла проблема: сервер не стартует. Система centos. В чем может быть проблема?
dmesg |grep -i openvpn
ничего не выдает
пробовал ставить socks-сервер, но он при инсталяции ругается на отсутствие libsocket в системе. Может ли в этом быть причина проблемы с openvpn?
↓ Quote | Posted October 17, 2007, 9:25 pmЧто то страное. Вроде все поставилось, служба в линухе запускается, опенвпн-гуи присоединяется к серверу, но ни один сайт не грузится.
↓ Quote | Posted October 21, 2007, 3:09 pmТакая проблема часто возникает когда на сервера не настроен bind. Попробуйте после установки соединения пропинговать сначала собственный сервер а потом к примеру google.com по одному из его ip адресов. Например:
↓ Quote | Posted October 21, 2007, 8:13 pmping 72.14.207.99
Если пинги проходят, то проблема явно в настройке bind на сервере. Если же нет, то проблема скорее всего в маршрутизации.
Поставил OpenVPN на Linux Mandriva соединение есть, файлики передаёт. только одна проблема, скорость подключения показывает 10Мб/с, при этом скорость скачивания файлов 94 кб/с. При такой скорости 1С вообще отказывается работать. Подскажите как увеличить скорость!
↓ Quote | Posted October 25, 2007, 10:48 amСложно судить почему скорость маловата. Вариантов много. Например слабый компьютер.
↓ Quote | Posted October 25, 2007, 12:33 pmДля примерной оценки скорости работы openvpn можно сделать следующее:
на сервере где установлен openvpn сервер выполняем команду:
openssl speed bf-cbc
где bf-cbc - это метод шифрования. По умолчанию шифрование производится с помощью blowfish алгоритма.
По результатам теста можно оценить максимальную скорость.
Это один из вариантов.
причём скорость 10 мб/с показывает на виндовых машинах у TAP-WIN32 virtual ethernet adapter-a, на linuxe сетевая реалтек 8139 встроенная
↓ Quote | Posted October 25, 2007, 3:44 pmСмотрите тогда клиентские машины. С других машин не пробовали подключаться? Возможно на клиентской стороне проблема.
↓ Quote | Posted October 25, 2007, 3:53 pmу меня стоят 6 машин виндовых, на всех пробовал… всё равно пишет 10 мб/с. Ну не может чтобы на всех клиентах одинаково было. А можно каким нить образом изменить скорость tap0 адаптера. Если конектить две машины кабелем на одной скорость 10/100 а на второй 10/100/1000, то сеть будет максимум 100, так что я думаю дело не в виндовых клиентах. В инете находил намёки на это, но видимо это было на старые версии опенвпн. Там повышали скорость до гб.
З.Ы. sever.conf выучил наизусть, только вот про скорость там ничего нет. openvpn брал 2.0.9 и 2.1_rс4 ставил из rpm пакетов т.к. мандрива упоно не хотела переваривать исходники. Может посоветуешь систему какую нить на которой эта штука работает.
↓ Quote | Posted October 25, 2007, 4:32 pmНа CentOS 4.x ставиться на ура без проблем. Людям на debian ставил тоже без проблем. А винды какие? XP или 2000?
↓ Quote | Posted October 25, 2007, 4:39 pmвинды XP-шные. Лан попробую сёня выкачать CentOS 4.
↓ Quote | Posted October 25, 2007, 4:49 pmА ты на CentOS 5 не пробовал ставить?
на XP
↓ Quote | Posted October 26, 2007, 7:54 amА у меня такой вопрос: А если сервер не подключен, то клиент постоянно будет пытаться достучаться до него?? и тратить много трафика?? (клиентов мне надо поставить на машины с gprs модемами)
↓ Quote | Posted November 5, 2007, 9:32 pmИ еще. У меня обратная ситуация. Т.е. серв. надо ставить на Windows, а клиент на Linux. Может поможете чем??? А то здесь все конечно подробно написано, но в моем случае я все таки без помощи обойтись не смогу)))
↓ Quote | Posted November 5, 2007, 9:38 pmмлин не получается с xp зайти , на сервере все гуд установилось а вот дома не подключен кабель пишет ))) наверно ip какието неправильно вписал… не получается
↓ Quote | Posted December 18, 2007, 3:42 pmУ меня для настройки IPTables стоит Firehol, то есть ручные правила для IPTables он игнорирует.
↓ Quote | Posted December 21, 2007, 5:54 amДостаточно ли одного этого правила
[b]iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE[/b]
для того чтобы пакеты от клиентской машины попадая на наш выделенный сервер
могли уйти в Интренет и соответственно возвращались назад.
Может кто знает как это правило правильно прописать в FIREHOL?
А то у меня коннект проходит, IP выдается, а запросы через сервер не идут.
К сожалению с Firehol не разбирался. Поэтому не смогу Вам помочь.
↓ Quote | Posted December 28, 2007, 1:50 pmНе совсем понял описанную хронологию установки:
> ./configure
> После чего получаем ошибку такого вида:
> LZO library available from http://www.oberhumer.com/opensource/lzo/
> configure: error: Or try ./configure –disable-lzo
> Это значит что у нас в системе нет библиотеки lzo с помощью которой происходит компрессия и декомпрессия нашего > трафика в реальном режиме времени. лезем на соответствующий сайт, качаем библиотеку и ставим:
Т.е сначала нужно добиться указаной ошибки, а потом ставить по нормальному, или как?
↓ Quote | Posted January 1, 2008, 4:44 amКонечно же нет. Я указываю какие ошибки могут возникнуть при инсталляции наиболее часто. И как их решать.
↓ Quote | Posted January 1, 2008, 9:44 pm[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
в чем у меня может быть проблема?
↓ Quote | Posted January 3, 2008, 2:33 amУ вас не установлен компилятор языка C. Его необходимо поставить командой:
↓ Quote | Posted January 3, 2008, 9:20 pmyum install gcc gcc-c++
TCP/UDP: Socket bind failed on local address 100.100.100.100:1194: Cannot assign requested address
при запуске выдает такую вот ошибку.
↓ Quote | Posted January 4, 2008, 4:20 pmуже задавали вопрос.. никто так и не объяснит? как это лечить
очень хорошая, доходчивая статья. а я вот спросить хотел, мож кто посоветует где можно купить недорого дедик.
↓ Quote | Posted January 8, 2008, 1:15 pmХорошая статьтья. Спасибо!
Плохо только, что автор не дотянул статью до инструкции, а написал наполовину обзорную.
Опишу грабли на которые наступил я. Тем самым отвечу на несколько вопросов которые задавались выше:
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
Вот пожалуй и все. Всем удачи.
↓ Quote | Posted January 9, 2008, 6:46 pmУ меня такая проблема, когда запускаю 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
Что делать??????
↓ Quote | Posted January 19, 2008, 4:15 pmУважаемый dr.gopher !!!
↓ Quote | Posted January 22, 2008, 9:33 pmМеня очень радует что на мой сайт заходят такие люди как Вы!!! Я горд этим! Побольше бы таких посетителей! Спасибо Вам за ценные и совершенно верные дополнения к моей заметке.
каждый пятый пакет теряется. что бы это могло быть?
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=0×00 PREC=0×00 TTL=251 ID=16518 PROTO=ICMP TYPE=0 CODE=0 ID=512 SEQ=46082
↓ Quote | Posted March 13, 2008, 8:29 pmДобрый день!
Когда следует ожидать решения упомянутого выше подхода?
> “…как сделать так чтоб вместо копирования клиенту 3 файлов с ключами, обходиться тока одним .p12 файлом?… “
↓ Quote | Posted April 13, 2008, 12:24 pmТут кто-то есть вообще?
↓ Quote | Posted April 16, 2008, 9:42 pmК сожалению на данный момент не располагаю достаточным количеством времени, для того чтобы написать несколько заметок. Как только появится время, с удовольствием их продолжу.
↓ Quote | Posted April 18, 2008, 7:55 amden says:
каждый пятый пакет теряется. что бы это могло быть?
Возможно надо поиграться с tun-mtu 1500.
↓ Quote | Posted May 12, 2008, 1:16 pm1. Цифра на сервере и на клиенте должна совпадать.
2. Проконсультируйтесь у провайдера, какой mtu лучше поставить. Как правило они называют рату тройку нужных вариантов.
Удачи.
при генерации ключа ./build-key client получается файл client.crt размером 0 байт
↓ Quote | Posted July 3, 2008, 4:47 pmвроде так не должно быть?
и при попытке запустить пишет что не может загругить этот сертификат.
спасибо, всё работает!
а вот если я куплю дополнительный IP к своей vps, то можно вся организовать так, чтобы я к впн коннектился на один IP, а на сайтах везде светился второй?
↓ Quote | Posted July 13, 2008, 11:34 pmА для UNIX-VPS какие настройки не подскажите?
↓ Quote | Posted July 14, 2008, 9:08 amСтавлю все это богатсво на дебиане/ статья классная? но наступил я на грабли/ Уже второй раз и на разные/ Первый раз был когда в своем дебиане в следствии своей новичковости я поставил опенвпн как написано в этой статье make install и т/д надо было apt-get юзфть а то ничего не запускается!!! так как ручками не умею чистить а make uninstall не проканало решил переставить систему благо нечего было терять кроме 3-4 часов
теперь вот така я трабла!
↓ Quote | Posted July 21, 2008, 8:44 amSERVER5:/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 какие будут предложения!!! Буду оч признателен
Статья удачная ! !! Ставил на Mandrive и на SUSE все нормально стало, но наткнулся на проблемку: каждый клиент при конекте к серверу получает 1 и тот же IP и либо первого выкидует, либо второй войти неможет.
↓ Quote | Posted July 31, 2008, 2:55 pmПодскажите в какую сторону смотреть
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
Салют, хорошая статья, хотя я всё сделал сам, но есть одно но! всё красиво коннектится, но когда я проверяю IP, то мне показывают IP моей тачки, а не сервака. Я так понял проблемы где то в NAT настройках, хотя как мог всё настроил. Может есть какие нить мысли по этому поводу?
↓ Quote | Posted August 10, 2008, 11:47 amОтличная статья, спасибо, установил с Вашей помощью ВПН-сервер на WinXP.
↓ Quote | Posted October 14, 2008, 12:19 pmПравда, не могу понять, почему получается в итоге такая низкая скорость между компами - без ВПН скорость минимум 200кб/сек, а через ВПН - не более 40кб/сек(.
Производительность компов неплохая, на процессорах Core2Duo…
Очень хорошая статья, автору +1.
↓ Quote | Posted November 9, 2008, 1:51 amНастроил openvpn сервер на Mandriva 2009, клиенты коннектятся с виндовых машин. Очень пригодились дополнения dr.gopher’а. Правда есть одна небольшая проблема низкая скорость, но это позже…