Пятница, 03-Апреля-2020, 07.28.51
Service Comp
Приветствую Вас Гость | RSS
Главная Регистрация Вход
Меню сайта

Форма входа

Календарь
«  Июнь 2013  »
ПнВтСрЧтПтСбВс
     12
3456789
10111213141516
17181920212223
24252627282930

IP адрес

Главная » 2013 » Июнь » 27 » Debian. OpenVPN. Установка и настройка VPN (Сеть, шлюз, проброс портов)
18.42.25
Debian. OpenVPN. Установка и настройка VPN (Сеть, шлюз, проброс портов)

Debian. OpenVPN. Установка и настройка VPN (Сеть, шлюз, проброс портов)

VPN (Virtual Private Network) — виртуальная частная сеть. Обобщенное название технологии, позволяющей обеспечить логические сети (одно или более сетевых соединений) поверх другой сети (например Интернет). Есть возможность сжатия и шифрования данных, что обеспечивает некоторую безопасность передачи данных.
Можно много рассказывать о технологии VPN, описывая классификацию, структуру и многое другое, но сегодня я хочу рассказать о OpenVPN.

OpenVPN - свободная реализация технологии виртуальной частной сети (VPN) с открытым кодом. OpenVPN использует библиотеку OpenSSL, что позволяет использовать полный набор шифров из этой библиотеки для увеличения безопасности и сохранности данных. OpenVPN - одна из самых молодых реализаций VPN, но тем не менее является одной из самых популярных и функциональных. OpenVPN используется в настоящее время во всех популярных операционных системах.

Примеры использования OpenVPN (VPN)


Корпоративная виртуальная частная сеть (VPN) Есть у нас офис, но сотрудники офиса желают иметь доступ к внутренней сети везде где есть доступ к сети интернет, при этом невозможно каждому участнику сети получить выделенный IP адресс, более того все IP адресса, постоянно меняются, как и провайдеры. Но нашей целью является организовать сеть и она должна быть безопасной, корпоративная тайна и все такое - Вы понимаете. Вот нам и понадобится OpenVPN (VPN).

Личная виртуальная частная сеть (VPN) У меня несколько компьютеров, они могут регулярно подключаться к разным провайдерам, с разных точек планеты, тем более что для разных задач я с собой беру разное устройство. Получить выделенный IP тут не возможно. Хранить все свои данные на сервере в интернет нет желания. Но несмотря на все я хочу с любого устройства иметь доступ к другим своим компьютерам (мало ли что).

VPN туннель для подключения к интернету Представьте, что большая часть сети заблокирована провайдером (шлюзом), т.е. мы не можем получить доступ к нужным ресурсам. Тут можно настроить VPN туннель и подключаться к интернету через сервер VPN (туннель).

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


Настройка сервера OpenVPN (VPN) в Debian


Перед установкой OpenVPN необходимо озаботится поддержкой системой псевдо-устройства "tun".
Для Debian проверить его наличие и поддержку можно следующим образом:
bash:
  1. ls -l /dev/net/tun

Для работы с интерфейсом "tun" нам понадобится модуль ядра "tun". Проверяем, загружен ли он:
bash:
  1. lsmod | grep tun

На самом деле проверку можно опустить, если конечно Вы не пересобрали сами ядро без это поддержки tun.
Далее переходим к установке пакетов OpenVPN, OpenSSL и библиотеку сжатия трафика LZO:
bash:
  1. aptitude install openvpn openssl liblzo2-2

Копируем директорию для работы с утилитами для создания ключей и сертификатов и переходим в директорию:
bash:
  1. cp -r /usr/share/doc/openvpn/examples/easy-rsa/2.0 /etc/openvpn/easy-rsa
  2. cd /etc/openvpn/easy-rsa

В файле vars редактируем строки под себя, достаточно поправить:
bash:
  1. export KEY_COUNTRY="US"
  2. export KEY_PROVINCE="CA"
  3. export KEY_CITY="SanFrancisco"
  4. export KEY_ORG="Fort-Funston"
  5. export KEY_EMAIL="me@myhost.mydomain"

Затем создайте новые ключи и сертификаты:
bash:
  1. . ./vars
  2. ./clean-all
  3. ./build-ca

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

Далее создадим ключ сервера:
bash:
  1. ./build-key-server server
Нужно будет опять ответить на много вопросов, в результате появятся файлы server.key и server.crt.

Так же сделаем ключ клиента. В примере используется имя client1 (можете называть как угодно, ключи Вам понадобится передавать клиентам для подключения к OpenVPN - VPN):
bash:
  1. ./build-key-server client1

Затем создадим ключ Diffie Hellman:
bash:
  1. ./build-dh
В результате будет создан файл dh1024.pem. Для OpenVPN будем использовать TLS аутентификацию.

В папке ./keys появляется созданные ключи, нужные ключи нужно скопировать в директорию /etc/openvpn/:
bash:
  1. cp ./keys/ca.crt /etc/openvpn
  2. cp ./keys/server.crt /etc/openvpn
  3. cp ./keys/server.key /etc/openvpn
  4. cp ./keys/dh1024.pem /etc/openvpn

Только что мы создали ключи, теперь нужно настроить OpenVPN. Мой рабочий server.conf:
bash:
  1. port 1194
  2. proto tcp
  3. dev tun # используем тип тунеля для интернет, tap для eternet
  4. ca ca.crt # наши сертификаты
  5. cert server.crt
  6. key server.key
  7. dh dh1024.pem
  8. server 10.8.0.0 255.255.255.0 # собственно наша виртуальная сеть
  9. ifconfig-pool-persist ipp.txt
  10. keepalive 10 120 # пинг каждые 10 секунд для поддержания канала связи
  11. comp-lzo # сжатие трафика
  12. persist-key
  13. persist-tun
  14. status openvpn-status.log #лог
  15. client-to-client
  16. push "redirect-gateway" # Перенаправлять default gateway на vpn-сервер. Если не нужно - закомментировать.
  17. client-config-dir ccd
  18. client-to-client
  19. ;route 10.8.0.0 255.255.255.0
  20. verb 3 # уровень болтливости записей в логи
  21. push "dhcp-option 8.8.8.8"


Добавляем директорию для настройки route для клиентов
bash:
  1. mkdir /etc/openvpn/ccd

Добавляем настройки route для клиента client1
bash:
  1. echo "iroute 10.8.0.0 255.255.255.0" > /etc/openvpn/ccd/client1

Сервер OpenVPN готов - перезапускам его:
bash:
  1. /etc/init.d/openvpn restart

Примерно вот так должно быть:
bash:
  1. server:~# /etc/init.d/openvpn restart
  2. Stopping virtual private network daemon: server.
  3. Starting virtual private network daemon: server.
  4. server:~#

Если так, то поздравлю сервер OpenVPN настроен.



Настройка клиента OpenVPN (VPN) в Debian


Переходим к установке пакетов OpenVPN, OpenSSL и библиотеку сжатия трафика LZO:
bash:
  1. aptitude install openvpn openssl liblzo2-2

С сервера, клиенту нужно передать ключи, которые мы генерировали, а конкретней:
  • ca.crt
  • client1.crt
  • client1.key

Скопировать ключи клиента, необходимо в директорию /etc/openvpn/ на клиенте.

Теперь сделаем файл настроек клиента, для подключения к серверу:
bash:
  1. remote 11.11.11.11 1194 # ip и порт нашего сервера
  2. client
  3. dev tun
  4. ping 10
  5. comp-lzo
  6. proto tcp
  7. tls-client
  8. ca /etc/openvpn/ca.crt
  9. cert /etc/openvpn/client1.crt
  10. key /etc/openvpn/client1.key
  11. ns-cert-type server
  12. push "dhcp-option DNS 8.8.8.8"
  13. route 10.8.0.0 255.255.255.0
  14. verb 3
  15. pull

Сохраняем файл настроек клиента OpenVPN и перезапускам клиента vpn:
bash:
  1. /etc/init.d/openvpn restart

В результате имеем примерно такую картинку:
bash:
  1. root@valualit:~# /etc/init.d/openvpn restart
  2. Stopping virtual private network daemon: client.
  3. Starting virtual private network daemon: client.
  4. root@valualit:~#


Маршруты пакетов в виртуальной частной сети (VPN)


Для обеспечения правильного передвижения пакетов внутри сети, необходимо настраивать маршрутизацию на сервере, для этого можно воспользоваться например iptables.

В моем случае я хотел реализовать проброс порта 48888 с сервера VPN, на клиента VPN 10.8.0.6, общий список используемых мною правил:

bash:
  1. echo 1 > /proc/sys/net/ipv4/ip_forward
  2. iptables -t nat -A PREROUTING -d 11.11.11.11 -p tcp -m tcp --dport 48888 -j DNAT --to-destination 10.8.0.6:22
  3. iptables -A FORWARD -d 10.8.0.6 -p tcp -m tcp --dport 22 -j ACCEPT
  4. iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
  5. iptables -A FORWARD -s 10.8.0.0/24 -j ACCEPT
  6. iptables -A FORWARD -j REJECT
  7. iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE



Вывод:
  1. Мы создали частную виртуальную сеть VPN над интернетом с помощью OpenVPN, объединив нужные компьютеры в локальную сеть.
  2. Клиенты виртуальной частной сети VPN используют в нашем случае сервер, как шлюз для выхода в интернет.
  3. С помощью iptables и NAT мы указали правила движения пакетов и конечно проброс порта на нужный. В результате я могу подключится из любой точки мира к своему компьютеру, который не имеет выделенного ip адреса.



Надеюсь у Вас не возникнет проблем с настройкой, но если это не так - обращайтесь!
Просмотров: 750 | Добавил: mudri | Теги: OpenVPN, Debian, шлюз, проброс портов), Установка и настройка VPN (Сеть | Рейтинг: 5.0/1
Всего комментариев: 0
Добавлять комментарии могут только зарегистрированные пользователи.
[ Регистрация | Вход ]
Архив записей

Наш опрос
Оцените мой сайт
1. Отлично
2. Ужасно
3. Хорошо
4. Неплохо
5. Плохо
Всего ответов: 110

Друзья сайта
Ежедневные курсы валют в Республике Казахстан

Поиск

Статистика
Яндекс.Метрика

Онлайн всего: 1
Гостей: 1
Пользователей: 0

Copyright Service Comp © 2020