OpenVPN сервер на FreeBSD 8.2


На работе есть машина, с которой захотелось видеть свою домашнюю локальную сеть и так, чтобы вся информация надежно шифровалась. Удаленная машина на работе находится за NAT-ом, поэтому было принято решение реализовать все с помощью OpenVPN.

Настраиваем OpenVPN сервер под FreeBSD.

Итак, приступим...

mx# cd /usr/ports/security/openvpn
mx# make config

Опции оставляем стандартными

┌────────────────────────────────────────────────────────────────────┐
│                    Options for openvpn 2.1.4                       │
│ ┌────────────────────────────────────────────────────────────────┐ │
│ │   [ ] PW_SAVE  Interactive passwords may be read from a file   │ │
│ │   [ ] PKCS11   Use security/pkcs11-helper                      │ │
│ │                                                                │ │
├─└────────────────────────────────────────────────────────────────┘─┤
│                       [  OK  ]       Cancel                        │
└────────────────────────────────────────────────────────────────────┘
mx# make install clean
mx# rehash

Меняем права

mx# cd /usr/local/share/doc/openvpn/easy-rsa/
mx# chmod -R 544 2.0
mx# chmod 755 2.0

Идем в

mx# cd /usr/local/share/doc/openvpn/easy-rsa/2.0/

Меняем оболочку на sh

mx# sh

Загружаем переменные в оболочку

# . ./vars
NOTE: If you run ./clean-all, I will be doing a rm -rf on /usr/local/share/doc/openvpn/easy-rsa/2.0/keys

Очищаем от старых сертификатов и ключей папку keys и создаем серийный и индексные файлы для новых ключей

# ./clean-all

Создаём сертификат. При создании сертификата вводим необходимую информацию. Привожу пример:

# ./build-ca
Generating a 1024 bit RSA private key
........++++++
.....................++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:RU
State or Province Name (full name) [CA]:RU
Locality Name (eg, city) [SanFrancisco]:Moscow
Organization Name (eg, company) [Fort-Funston]:Cisco Systems
Organizational Unit Name (eg, section) []:Cisco Systems MSK Office
Common Name (eg, your name or your server's hostname) [Fort-Funston CA]:server
Name []:Ivan Ivanov
Email Address [me@myhost.mydomain]:admin@cisco.co.com

Создаем сертификат X.509 для сервера. Всё аналогично заполняем (точно так же) + cтроки в которых указываем пароль и имя организации

# ./build-key-server server
Generating a 1024 bit RSA private key
.........++++++
.................++++++
writing new private key to 'server.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:RU
State or Province Name (full name) [CA]:RU
Locality Name (eg, city) [SanFrancisco]:Moscow
Organization Name (eg, company) [Fort-Funston]:Cisco Systems
Organizational Unit Name (eg, section) []:Cisco Systems MSK Office
Common Name (eg, your name or your server's hostname) [server]:server
Name []:Ivan Ivanov
Email Address [me@myhost.mydomain]:admin@cisco.co.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:vash_parol
An optional company name []:ASY
Using configuration from /usr/local/share/doc/openvpn/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'RU'
stateOrProvinceName   :PRINTABLE:'RU'
localityName          :PRINTABLE:'Moscow'
organizationName      :PRINTABLE:'Cisco System'
organizationalUnitName:PRINTABLE:'Cisco Systems MSK Office'
commonName            :PRINTABLE:'server'
name                  :PRINTABLE:'Ivan Ivanov'
emailAddress          :IA5STRING:'admin@cisco.co.com'
Certificate is to be certified until Apr 27 07:22:01 2021 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Создаём ключ для клиента

# ./build-key client
Generating a 1024 bit RSA private key
........++++++
.........................................++++++
writing new private key to 'client.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [US]:RU
State or Province Name (full name) [CA]:RU
Locality Name (eg, city) [SanFrancisco]:Moscow
Organization Name (eg, company) [Fort-Funston]:Cisco System
Organizational Unit Name (eg, section) []:Cisco Systems MSK Office
Common Name (eg, your name or your server's hostname) [client]:client
Name []:Ivan Ivanov
Email Address [me@myhost.mydomain]:admin@cisco.co.com

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:vash_parol
An optional company name []:Cisco Systems Office Work
Using configuration from /usr/local/share/doc/openvpn/easy-rsa/2.0/openssl.cnf
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
countryName           :PRINTABLE:'RU'
stateOrProvinceName   :PRINTABLE:'RU'
localityName          :PRINTABLE:'Moscow'
organizationName      :PRINTABLE:'Cisco System'
organizationalUnitName:PRINTABLE:'Cisco Systems MSK Office'
commonName            :PRINTABLE:'client'
name                  :PRINTABLE:'Ivan Ivanov'
emailAddress          :IA5STRING:'admin@cisco.co.com'
Certificate is to be certified until Apr 27 07:24:24 2021 GMT (3650 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated

Будьте внимательны при заполнени данных сертификатов, поле Common Name обязательно к заполнению, причем для сервера оно должно быть одно, а для клиента другое. Например в поле Common Name при генерации сертификата X.509 для сервера можно написать server, а для клиента соотвественно client.

Создаем ключ Диффи Хельман, после чего выходим из sh

# ./build-dh
Generating DH parameters, 1024 bit long safe prime, generator 2
This is going to take a long time
....................+.......................................+.................
............+.............................................+...................
# exit

Создаем ключ для tls-аутификации

mx# openvpn --genkey --secret keys/ta.key

Создаем 3 директории

mx# mkdir /usr/local/etc/openvpn/
mx# mkdir /usr/local/etc/openvpn/keys/
mx# mkdir /usr/local/etc/openvpn/ccd/

Копируем ключи в /usr/local/etc/openvpn/keys/

mx# cd /usr/local/share/doc/openvpn/easy-rsa/2.0/keys/
mx# cp ca.crt /usr/local/etc/openvpn/keys/
mx# cp dh1024.pem /usr/local/etc/openvpn/keys/
mx# cp server.crt /usr/local/etc/openvpn/keys/
mx# cp server.key /usr/local/etc/openvpn/keys/
mx# cp ta.key /usr/local/etc/openvpn/keys/

Создаем файл конфигурации

mx# touch /usr/local/etc/openvpn/server.conf

Редактируем его

#порт на котором работает сервер
port 2000
# протокол
proto tcp
# - используемый тип устройства и номер
dev tun0
#указываем файл CA
ca /usr/local/etc/openvpn/keys/ca.crt
#указываем файл с сертификатом сервера
cert /usr/local/etc/openvpn/keys/server.crt
#указываем файл с ключем сервера
key /usr/local/etc/openvpn/keys/server.key
#указываем файл Диффи Хельман
dh /usr/local/etc/openvpn/keys/dh1024.pem
#задаем IP-адрес сервера и маску подсети
# (виртуальной сети) - можно произвольную, (я выбрал такую)
server 172.16.200.0 255.255.255.0
#задаем МАРШРУТ который передаём клиентту
# и маску подсети для того чтобы он "видел"
# сеть за опенвпн сервером (сеть 172.16.100.0/8)
push "route 172.16.100.0 255.255.255.0"
# указываем где хранятся файлы с
# настройками IP-адресов клиентов
client-config-dir ccd
# добавляем маршрут сервер-клиент
route 172.16.200.0 255.255.255.252
# включаем TLS аутификацию
tls-server
# указываем tls-ключ, и указываем 0 для сервера, а 1 для клиента
tls-auth keys/ta.key 0
# таймаут до реконекта
tls-timeout 120
auth MD5 #
# включаем шифрацию пакетов
cipher BF-CBC
keepalive 10 120
# сжатие трафика
comp-lzo
# максимум клиентов
max-clients 100
user nobody
group nobody
# Не перечитывать ключи после получения
# SIGUSR1 или ping-restart
persist-key
# Не закрывать и переоткрывать TUN\TAP
# устройство, после получения
# SIGUSR1 или ping-restart
persist-tun
# логгирование
status /var/log/openvpn-status.log
log /var/log/openvpn.log
# Уровень информации для отладки
verb 3

Не забываем открыть указанный порт в IPFW и разрешить трафик по интерфейсу tun0!!!
Пример открытия порта и разрешение всего трафика по интерфейсу приведены в статье Настройка Kernel (IPFW) NAT
В дирректории /usr/local/etc/openvpn/ccd создаем файл client

mx# touch /usr/local/etc/openvpn/ccd/client

Приводим его к такому виду

ifconfig-push 172.16.200.2 172.16.200.1

Для автостарта OpenVPN добавляем в rc.conf

openvpn_enable="YES"
openvpn_if="tun"
openvpn_configfile="/usr/local/etc/openvpn/server.conf"
openvpn_dir="/usr/local/etc/openvpn"

Настройка серевера завершена.


Настраиваем клиент под Windows.

Качаем клиент. Создадим конфигурационный файл openvpn.ovpn в папке config (Например, C:\Program Files\OpenVPN\config).

Скопируем туда же все необходимые ключи для работы (ca.crt, dh1024.pem, client.crt, client.key, ta.key)
из /usr/local/share/doc/openvpn/easy-rsa/2.0/keys/.

Файл openvpn.ovpn приводим к такому виду, указав IP вашего сервера с FreeBSD

dev tun
proto tcp
remote 109.87.94.120
port 2000
client
resolv-retry infinite
ca ca.crt
cert client.crt
key client.key
tls-client
tls-auth ta.key 1
auth MD5
cipher BF-CBC
ns-cert-type server
comp-lzo
persist-key
persist-tun
verb 3

В Windows, в службах ставим тип запуска "Авто" для службы OpenVPN. После этого ребутим сервер с FreeBSD и винду.
Можно и не перегружаться, а стартануть openvpn сервер и перезапустить службу OpenVPN в винде.

mx# /usr/local/etc/rc.d/openvpn start
Starting openvpn.

На этом настройка клиента завершена. Можно проверять работоспособность!!!

一步一步地会到目的

I do not smoke or drink



Search for Extra-Terrestrial Intelligence at Home
Search for Extra-Terrestrial Intelligence at Home

User signature graphic BOINC Stars

Power by BOINC


International Space Station
Прямая трансляция переговоров космонавтов МКС с ЦУП.
Только голос | Голос и Видео
Говорят они не всегда, только по необходимости, так что не удивляйтесь, если на канале будет тишина.

Ubuntu 14.04 (Trusty Tahr) Daily Build

>>> Старые релизы Ubuntu <<<

Оглавление

Cisco Systems

Связь через консольный кабель
Сброс пароля на Catalyst 2950
Создание VLAN на Catalyst 2950
Создание и управление стеками коммутаторов

FreeBSD 8.2 - Сервер с "нуля"

Установка
Начальная настройка
Сборка ядра (c Kernel NAT)
Named
OpenVPN

Ubuntu Server

Настраиваем WEB-сервер
Apache2 + PHP5 + MySQL + phpMyAdmin
Пример для виртуальных хостов

VSFTPd + SSL Не закончено!
Установка TFTP сервера (tftpd)
Установка Midnight Commander
Установка Deluge с Web-интерфейсом
Бэкапим MySQL базы
MySQL шпаргалки
Резервное копирование - м1
Простой шлюз на Ubuntu Server
Сетевое радио на Icecast2
Объединение HDD дисков
Управление автозагрузкой
Настройка сети вручную
Защита от брутфорса
ssh, ftp, http: fail2ban

OpenVPN Installation Ubuntu

Ubuntu Desktop

Настройка Ubuntu Desktop 10.10
Раскукоживаем Менеждер обновлений
Раскладка - флажки вместо текста
QutIM - клиент ICQ, Jabber, MAgent, IRC
Температура железа на панеле

Горячие клавиши в Ubuntu Unity

Драйвера NVIDIA в Ubuntu
Радио лоток в области уведомлений
SSHFS - Монтируем удаленную FS
Резервное копирование Ubuntu Desk
Загрузочная флешка Ubuntu Server
Загрузочная USB из под Windows
Как найти нужный PPA-репозиторий
Видеонаблюдение под Ubuntu 10.04 для "чайников"
Видеонаблюдение легально!

Linux

Полезные команды Linux
Конфиг железа в Ubuntu
Мониторинг хостов в сети
Разное на одном листе
inotify - это подсистема ядра Linux, которая позволяет получать уведомления об изменениях в файловой системе.

Полезное под Windows

FTPS - защищённое соединение
PuTTY - Как сохранить настройки
VirtualBox - Клонирование виртуальных машин.

Скриптовые языки

AWK - Язык обработки структурированных текстов

Чит-листы или Шпаргалки

pdf css_cheat-sheet ver.1
pdf css_cheat-sheet ver.2
pdf php_cheat-sheet ver.1
pdf php_cheat-sheet ver.2
pdf javascript_cheat-sheet ver.1
pdf mysql_cheat-sheet ver.1
pdf html_cheat-sheet ver.1
pdf regular_expressions ver.1
pdf regular_expressions ver.2
pdf mod_rewrite_cheat-sheet ver.1
pdf mod_rewrite_cheat-sheet ver.2
pdf sql_server_cheat-sheet ver.1
pdf microformats_cheat-sheet ver.1
pdf seo_cheat-sheet ver.0.4
pdf wordpress_designer ver.1

Последовательное соединение проводников
Последовательное соединение проводников

Параллельное соединение проводников
Параллельное соединение проводников


Gedit style schemes

xml darktango.xml
xml emacs-darkslategrey.xml

HTML заметки

Разные валидные фичи
10 преступлений с HTML тегами
Заметки по установке
MaxSite CMS версия 0.42

Горизонтальное CSS Меню
.htacces паролим сайт
Противоугонный пакет

Коллекция jQuery plagins

Quovolver [?]
Custom Animation Banner [?]
Style my tooltips [?]


ipv6.nic.ru

QR Coder.ru
Генератор QR-кодов


2:5020/1209.12@FidoNet

Logo WebMoney
WMIDwmid 358066815673
pursewmzZ452007172362
wmrR568219491953
wmeE770110075404

Logo Yandex.Money
 Yndex purse4100178599238



Мои телефоны:
  1. Билайн AMPS/DAMPS - модели ERICSSON DH318,
    ERICSSON DH618
  2. Билайн GSM - Siemens C25 корпус "Хамелион" (тариф "Серебрянный")
  3. Мегафон GSM - SAMSUNG SGH-T400
  4. Мегафон GSM / AIS GSM Thailand - Qtek s100
  5. Мегафон GSM - SAMSUNG SGH-i900 WiTu 8Gb
  6. Мегафон GSM - HTC Wildfire S
  7. Мегафон GSM - HTC One S
  8. Мегафон GSM / Теле2 GSM - ASUS Zenfone 2 ZE550ML
  9. Мегафон GSM - Xiaomi Redmi Note 4 4Gb 64Gb
  10. Мегафон GSM - Xiaomi Redmi Note 8 6Gb 64Gb