Пошаговое руководство (http://www.sergeysl.ru/freebsd-openvpn-x509/) по созданию кроссплатформенной виртуальной частной сети на базе OpenVPN, реализующей топологию Point-To-Multi-Point и использующей для шифрования трафика средства OpenSSL.URL: http://www.sergeysl.ru/freebsd-openvpn-x509/
Новость: http://www.opennet.me/opennews/art.shtml?num=11737[сообщение отредактировано модератором]
Не очень внятная статья, не понятен смысл использование TCP вместо UDP, не понятны установки tun-mtu, tun-mtu-extra, mssfix и чем обусловлен выбор именно этих значений. И почему не используются готовые скрипты идущие к комплекте для создания сертификатов?
TCP вместо UDP выбран по соображениям надежности связи. Насчет tun-mtu, tun-mtu-extra и mssfix - они были скопированы из статьи, по которой все делалось (ссылка в самом начале). Не было ни времени, ни желания добиваться оптимальных значений, т.к. и с данными ключами все работает вполне нормально. Ну а насчет готовых скриптов, кто запрещает?
> TCP вместо UDP выбран по соображениям надежности связи.хм, я бы на линках с потерями использовал как раз udp - он более предсказуемо ведет себя.
те протоколы, которые требуют надежной доставки (http, ftp, ...), и так внутри туннеля будут бегать по tcp.
протоколы же, которым важнее задержки (например voip) плохо перенесут нестабильный rtt, который будет наблюдаться при использовании tcp на линках с потерями.
Ужас какой, срочно курить теорию. Запрос в гугль "tcp over tcp" сразу же выдаст кучу линков, чем это плохо.
Сергей, спасибо за такой труд и публикацию, но коллеги правы как минимум в одном - TCP over TCP плохо кончается
>Сергей, спасибо за такой труд и публикацию, но коллеги правы как минимум
>в одном - TCP over TCP плохо кончаетсяЯ просто написал отчет, о том, что делал. Это не профессиональное руководство. Обычно приходится собирать все по кусочкам из разных статей, а я попробовал собрать все в одну более-менее последовательную кучу :)
1. в статье кое-где юникодные символы "-" в командах, поэтому не все команды срабатывают при copy/paste.
2. команда для подписи сертификата сервера срабатывает только при другом порядке аргументов:
openssl ca -batch -config openssl.cnf -extensions server -out certs/CServer.pem -infiles req/RServer.pem
> 2. команда для подписи сертификата сервера срабатывает только при другом порядке аргументов: openssl ca -batch -config openssl.cnf -extensions server -out certs/CServer.pem -infiles req/RServer.pemСпасибо. Проверил и исправил.
openssl ca -config openssl.cnf -extensions server -out certs/server.pem -infiles req/server.pemUsing configuration from openssl.cnf
Error Loading extension section server
32203:error:2207C082:X509 V3 routines:DO_EXT_CONF:unknown extension name:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/x509v3/v3_conf.c:121:
32203:error:2206B080:X509 V3 routines:X509V3_EXT_conf:error in extension:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/x509v3/v3_conf.c:91:name=basincConstraints, value=CA:FALSE
>openssl ca -config openssl.cnf -extensions server -out certs/server.pem -infiles req/server.pem
>
>Using configuration from openssl.cnf
>Error Loading extension section server
>32203:error:2207C082:X509 V3 routines:DO_EXT_CONF:unknown extension name:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/x509v3/v3_conf.c:121:
>32203:error:2206B080:X509 V3 routines:X509V3_EXT_conf:error in extension:/usr/src/secure/lib/libcrypto/../../../crypto/openssl/crypto/x509v3/v3_conf.c:91:name=basincConstraints, value=CA:FALSEА openssl.cnf не забыли новый создать?
Не забыл.
Наверно, что-то не так с openssl. Я его из портов устанавливал.
>1. в статье кое-где юникодные символы "-" в командах, поэтому не все
>команды срабатывают при copy/paste.Заменил все юникодные пробелы обычными. Копируйте и вставляйте...
Уважаемые local, edo и nuclight! Спасибо за важное замечание. Делал все еще на старой работе (около 1,5 лет назад), чтобы подключаться к новой. Там UDP был заблокирован. Но все же до этого http://sites.inka.de/sites/bigred/devel/tcp-tcp.html руки не доходили. Поправил настройки, сейчас и писанину свою поправлю.
Он реально создает один Point-to-MultiPoint туннель или все же несколько Point-to-Point ?
Мне почему-то кажется что второе :)
Реально создает. Трафик меджу клиентами идет через 1 сервер.
Зря вы так про TCP over TCP, вот здесь -> http://www.barabanov.ru/arts/tcp/Tcp_over_tcp_is_not_so_bad-...
человек опровергает этот предрассудок, основываясь на тестах и теории.
>Зря вы так про TCP over TCP, вот здесь -> http://www.barabanov.ru/arts/tcp/Tcp_over_tcp_is_not_so_bad-...
>человек опровергает этот предрассудок, основываясь на тестах и теории.Я тоже наткнулся на этот документ. Но с UDP первое впечатление - 1Cv8 ворочается побыстрее. Хотя может быть это от того, что я не совсем выспался :) В man'е OpenVPN тоже рекомендуется использовать UDP, а подержка TCP добавлена якобы только для совместимости или случаев, когда невозможно использовать UDP.
Забавно. Но для выводов данных мало (всего одна tcp-сессия внутри туннеля, не сравнивается время передачи этого файла в разных туннелях). Особенно порадовало "А если в такой туннель завернуть ICMP, то и мониторинг внешних ресурсов также будет стабильнее." -- другими словами, если будут проблемы с каналом в интернет, ваш мониторинг этого даже не заметит! :-)
ipfw не лучший выбор.
ipf + ipnat работают на порядок устойчивее. тем более можно разруливать натинг на нужные сервера маскируя пользователя и пробрасывая пакеты в сети отличные от локалки, например к соседям.
В данной статье идет речь про OpenVPN ;) Хотя претензий к ipfw+natd не имею. На сегодняшний дени они меня полностью устраивают :)
easy-rsa и build-key-pkcs12 в руки
просто и со вкусомОн реально создает один Point-to-MultiPoint туннель или все же несколько Point-to-Point ?
Мне почему-то кажется что второе :)
- реально со 2-ой версии openvpn
используется в продакшен, все до писец стабильно...
Point to Multipoint. работает уже 2 года без нареканий.
гкм, это не Point to Multipoint, это обычный сервер удаленного доступа (VPN).
Point to Multipoint - это было бы, если клиент или сервер имел доступ ко всем остальным по одному каналу сразу.
В данном случае будет подниматься необходимое количество каналов к каждому клиенту.
Зы никак немогу осилить поднять это на pocketPC Как ?
>Зы никак немогу осилить поднять это на pocketPC Как ?вполне спокойно поднимается. тока процессор жрёт мама не горюй
проверял на HTC Herald.
У меня не хочет получать адрес почему то...
Буду пытаться.
Вообще не понял зачем это? 8-) на openvpn.net вроде всё написано, что и куда крутить.
На любом официальном сайте написано, что и куда крутить. Только не всегда с первого раза все быстренько прикручивается. Да и вообще, зачем форумы и сайты подобные этому? Все ведь итак написано. Если не сложно, можно ссылочку про настройку OpenVPN от и до на русском?
Название --"Настройка OpenVPN с шифрованием трафика средствами OpenSSL" -- не совсем корректное. OpenVPN по умолчанию использует OpenSSL для шифрования трафика, потому что
изначально так был спроектирован и написан.
В данном случае имеется ввиду использование СЕРТИФИКАТОВ вместо СТАТИЧЕСКИХ КЛЮЧЕЙ, о чем я упоминал в статье.
>В данном случае имеется ввиду использование СЕРТИФИКАТОВ вместо СТАТИЧЕСКИХ КЛЮЧЕЙ, о чем
>я упоминал в статье.Ну и назови её "Настройка OpenVPN c использованием сертификатов x509".
>Ну и назови её "Настройка OpenVPN c использованием сертификатов x509".Ок :)
Спасибо за вашу статью!
Позорно спрашивать но не как немогу понять как передавать клиенту маршрут если IP он получает по DHCP через PPPoE интерфейс, точнее мой клиент в одной сети ISP с openvpn сервером и хотелось бы гонять внешний трафик через удаленную сеть openvpn сервера, так как внутренний трафик не тарифицируется. Грубо говоря хочу через клиента опенвпн юзать инет офиса.
>Спасибо за вашу статью!
>Позорно спрашивать но не как немогу понять как передавать клиенту маршрут если
>IP он получает по DHCP через PPPoE интерфейс, точнее мой клиент
>в одной сети ISP с openvpn сервером и хотелось бы гонять
>внешний трафик через удаленную сеть openvpn сервера, так как внутренний трафик
>не тарифицируется. Грубо говоря хочу через клиента опенвпн юзать инет офиса.
>Нормальное желание :) В данном случае имеются ввиду маршруты к внутренним сетям сервера и клиента. Главное, чтобы сервер имел фиксированный внешний адрес. Внешний адрес клиента не имеет значения. Подключаетесь к серверу и работаете через офисный прокси ;)
>Нормальное желание :) В данном случае имеются ввиду маршруты к внутренним сетям
>сервера и клиента. Главное, чтобы сервер имел фиксированный внешний адрес. Внешний
>адрес клиента не имеет значения. Подключаетесь к серверу и работаете через
>офисный прокси ;)Дело в том что Прокси нет и подымать его тоже нет нужды. Я имел в виду что после того как я попадаю в сеть провайдера на win-клиенте (pppoe) основным гейтом win-клиента является pppoe интерфейс а это не есть хорошо. По ленивому я его перебиваю на адрес гейта OPENVPN сервера. Но через какое то время по какой то причине основным гейтом на клиенте становится опять pppoe(). Как передать маршруты на сторону клиента я себе представляю но я не знаю как оставить в таблице маршрутов например запись route add ip(pppoe динамический) ip(белый адрес впн сервера). Или более точнее выражаясь как исключить перебивку: маршрут pppoe >гейт провайдера и pppoe>гейт openvpn(белый адрес), так как pppoe динамический.
>Дело в том что Прокси нет и подымать его тоже нет нужды.Поднимать минимальную конфигурацию squid полчаса, если не торопиться.
>Я имел в виду что после того как я попадаю в сеть провайдера на win-клиенте (pppoe) основным гейтом win-клиента является pppoe интерфейс а это не есть хорошо.А разьве есть другие варианты? PPPoE-соединение для этого и создавалось. Это единственный путь к провайдеру и, соответственно, в инет.
>По ленивому я его перебиваю на адрес гейта OPENVPN сервера.Если при этом все работает, то провайдер просто не успел закончить настройку оборудования.
>Но через какое то время по какой то причине основным гейтом на клиенте становится опять pppoe().Возможно это последствия работы DHCP?
>Как передать маршруты на сторону клиента я себе представляю но я не знаю как оставить в таблице маршрутов например запись route add ip(pppoe динамический) ip(белый адрес впн сервера). Или более точнее выражаясь как исключить перебивку: маршрут pppoe >гейт провайдера и pppoe>гейт openvpn(белый адрес), так как pppoe динамический.Если с клиента видны адреса внутренней сети сервера, то маршрутизация настроена верно, все остальное, связанное с дальнейшей настройкой маршрутизации, - алхимия...
а чем плох вариант.. gif0...gif1...gifN + racoon + ipfw ? :)
у меня так щас сделано.. всё вроде хорошо работает!
>Пошаговое руководство (http://sergeysl.pnz.ru/notes/freebsdopenvpntlsssl.php) по созданию кроссплатформенной виртуальной частной сети на базе OpenVPN,
>реализующей топологию Point-To-Multi-Point и использующей для шифрования трафика средства OpenSSL.
>
>URL: http://sergeysl.pnz.ru/notes/freebsdopenvpntlsssl.php
>Новость: http://www.opennet.me/opennews/art.shtml?num=11737Сначала хочу поблагодаить автора за труд, было намного проще устанавливать OpenVPN с такими инструкциями.
Но я пошел немного дальше.
Взял FreeBSD 7.0 и настроил OpenVPN в режиме моста (dev=tap).Всё заработало с первого раза :-))
>Сначала хочу поблагодаить автора за труд, было намного проще устанавливать OpenVPN с
>такими инструкциями.Большое спасибо :)
>Но я пошел немного дальше.
>Взял FreeBSD 7.0 и настроил OpenVPN в режиме моста (dev=tap).Я сам сейчас перешел на семерку. А насчет мостов - в первую очередь
экономия трафика, поэтому не пробовал.