Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:руководство_по_ubuntu_server:частные_сети:openvpn [2012/10/31 06:23] [Расширенные настройки] |
wiki:руководство_по_ubuntu_server:частные_сети:openvpn [2014/04/11 14:47] (текущий) [Установка сервера] |
||
---|---|---|---|
Строка 13: | Строка 13: | ||
Для установки **openvpn** наберите в терминале: | Для установки **openvpn** наберите в терминале: | ||
- | <code>sudo apt-get install openvpn</code> | + | <code>sudo apt-get install openssl openvpn</code> |
====Установка структуры открытых ключей (PKI)==== | ====Установка структуры открытых ключей (PKI)==== | ||
Строка 196: | Строка 196: | ||
Выше рассмотрена очень простая работающая VPN. Клиент имеет доступ к сервисам на машине VPN сервера через зашифрованный канал. Если вы хотите получить доступ к большему количеству серверов или к чему-то в других сетях, добавьте несколько маршрутов на клиенте. Например, если сеть вашей компании в целом может быть описана как 192.168.0.0/16, вы можете добавить этот маршрут на клиенте. Но вам придется также изменить маршрут для обратного направления - ваши сервера должны знать как проложить маршрут до сети VPN клиента. | Выше рассмотрена очень простая работающая VPN. Клиент имеет доступ к сервисам на машине VPN сервера через зашифрованный канал. Если вы хотите получить доступ к большему количеству серверов или к чему-то в других сетях, добавьте несколько маршрутов на клиенте. Например, если сеть вашей компании в целом может быть описана как 192.168.0.0/16, вы можете добавить этот маршрут на клиенте. Но вам придется также изменить маршрут для обратного направления - ваши сервера должны знать как проложить маршрут до сети VPN клиента. | ||
- | Или вы можете добавить шлюз по умолчанию для всех клиентов чтобы посылать весь их трафик сначала на VPN сервер, а от него через защитный сервер (firewall) компании в интернет. В этом разделе вы увидите некоторые возможные варианты. | + | Или вы можете указать шлюз по умолчанию для всех клиентов чтобы посылать весь их трафик сначала на VPN сервер, а от него через защитный сервер (firewall) компании в интернет. В этом разделе вы увидите некоторые возможные варианты настроек. |
Передать маршрут клиенту чтобы разрешить ему доступ к другим частным подсетям за сервером. Помните, что эти частные сети также должны знать как построить маршрут до диапазона адресов клиента OpenVPN, находящегося за OpenVPN сервером: | Передать маршрут клиенту чтобы разрешить ему доступ к другим частным подсетям за сервером. Помните, что эти частные сети также должны знать как построить маршрут до диапазона адресов клиента OpenVPN, находящегося за OpenVPN сервером: | ||
<code>push "route 10.0.0.0 255.0.0.0"</code> | <code>push "route 10.0.0.0 255.0.0.0"</code> | ||
- | Если разрешено, эта директива настроит все клиенты на перенаправление их сетевых шлюзов по умолчанию через VPN, что заставит весь трафик, такой как просмотр страниц интернет-сайтов или DNS запросы, проходить через VPN (машине OpenVPN сервера или вашему центральному firewall может потребоваться маскировать с помощью NAT TUN/TAP интерфейсы в сторону интернета, чтобы они работали правильно): | + | Если указана, то такая директива настроит всех клиентов на перенаправление их сетевых шлюзов по умолчанию через VPN, что заставит весь трафик, такой как просмотр страниц интернет-сайтов или DNS запросы, проходить через VPN (машине OpenVPN сервера или вашему центральному firewall может потребоваться маскировать с помощью NAT интерфейсы TUN/TAP в сторону интернета, чтобы они работали правильно): |
<code>push "redirect-gateway def1 bypass-dhcp"</code> | <code>push "redirect-gateway def1 bypass-dhcp"</code> | ||
- | Настройка режима сервера и предоставление VPN подсети для OpenVPN откуда брать клиентские адреса. Сервер заберет себе адрес 10.8.0.1, а остальные могут использоваться для предоставления клиентам. Каждый клиент будет иметь возможность подключиться к серверу по адресу 10.8.0.1. Закомментируйте эту строку, если используете сетевой мост. | + | Настройка режима сервера и предоставление VPN подсети для OpenVPN откуда брать клиентские адреса. Сервер заберет себе адрес 10.8.0.1, а остальные могут использоваться для предоставления клиентам. Каждый клиент будет иметь возможность подключиться к серверу по адресу 10.8.0.1. Поставьте комментарий на этой строке, если используете режим сетевого моста: |
<code>server 10.8.0.0 255.255.255.0</code> | <code>server 10.8.0.0 255.255.255.0</code> | ||
- | Сохранять записи соответствий клиента с их виртуальными IP адресами в указанном файле. Если OpenVPN выключается или перегружается, повторно подключившиеся клиенты получат те же виртуальные IP адреса, что и в прошлый раз. | + | Сохранять записи соответствий клиента с их виртуальными IP адресами в указанном файле. Если OpenVPN выключается или перегружается, повторно подключившиеся клиенты получат те же виртуальные IP адреса, что и в прошлый раз: |
<code>ifconfig-pool-persist ipp.txt</code> | <code>ifconfig-pool-persist ipp.txt</code> | ||
- | Передать DNS сервера клиенту. | + | Передать настройки на DNS сервера клиенту: |
<code> | <code> | ||
push "dhcp-option DNS 10.0.0.2" | push "dhcp-option DNS 10.0.0.2" | ||
Строка 216: | Строка 216: | ||
</code> | </code> | ||
- | Разрешить соединения между клиентами. | + | Разрешить соединения между клиентами: |
<code>client-to-client</code> | <code>client-to-client</code> | ||
- | Разрешить сжатие на соединении VPN. | + | Разрешить сжатие на VPN соединении: |
<code>comp-lzo</code> | <code>comp-lzo</code> | ||
- | Директива **keepalive** обеспечивает отправку сообщений типа ping вперед и назад через соединение для того, чтобы каждая сторона знала, когда другая сторона становится недоступна. Проверка каждую секунду, решение, что удаленная точка не отвечает, если ответ не принят в течение 3 секунд. | + | Директива **keepalive** обеспечивает отправку сообщений типа ping вперед и назад через соединение для того, чтобы каждая сторона знала, когда другая сторона становится недоступна. Проверка раз в секунду и решение, что удаленная точка не отвечает, если ответ не принят в течение 3 секунд: |
<code>keepalive 1 3</code> | <code>keepalive 1 3</code> | ||
- | Хорошей идеей является снижение привилегий для сервиса OpenVPN после установки. | + | Хорошей идеей является снижение привилегий для сервиса OpenVPN после установки: |
<code> | <code> | ||
user nobody | user nobody | ||
Строка 251: | Строка 251: | ||
<code>sudo apt-get install bridge-utils</code> | <code>sudo apt-get install bridge-utils</code> | ||
- | Before you setup OpenVPN in bridged mode you need to change your interface configuration. Let's assume your server has an interface eth0 connected to the internet and an interface eth1 connected to the LAN you want to bridge. Your /etc/network/interfaces would like this: | + | Перед настройкой **OpenVPN** в режиме сетевого моста вам потребуется изменить настройки вашего интерфейса. Давайте предположим, что ваш сервер подключен через eth0 к интернету, а интерфейс eth1 соединен с вашей локальной сетью для которой вы хотите установить сетевой мост. Ваш файл /etc/network/interfaces должен выглядеть как-то так: |
+ | <code> | ||
auto eth0 | auto eth0 | ||
iface eth0 inet static | iface eth0 inet static | ||
Строка 263: | Строка 263: | ||
address 10.0.0.4 | address 10.0.0.4 | ||
netmask 255.255.255.0 | netmask 255.255.255.0 | ||
+ | </code> | ||
- | This straight forward interface config needs to be changed into a bridged mode like where the config of interface eth1 moves to the new br0 interface. Plus we configure that br0 should bridge interface eth1. We also need to make sure that interface eth1 is always in promiscuous mode - this tells the interface to forward all ethernet frames to the IP stack. | + | Такая настройка прямого перенаправления интерфейсов должна быть исправлена для режима моста, где настройка интерфейса eth1 перемещается на новый интерфейс br0. Плюс мы укажем, что br0 будет интерфейсом моста для eth1. Нам также стоит убедиться, что интерфейс eth1 всегда находится в смешанном (promiscuous) режиме - это скажет интерфейсу пересылать все ethernet пакеты в стек IP. |
+ | <code> | ||
auto eth0 | auto eth0 | ||
iface eth0 inet static | iface eth0 inet static | ||
Строка 281: | Строка 282: | ||
netmask 255.255.255.0 | netmask 255.255.255.0 | ||
bridge_ports eth1 | bridge_ports eth1 | ||
+ | </code> | ||
- | At this point you need to restart networking. Be prepared that this might not work as expected and that you will lose remote connectivity. Make sure you can solve problems having local access. | + | На этом этапе вам потребуется перезагрузка сети. Будьте готовы, что это не сработает так, как задумывалось, и вы потеряете удаленный доступ. Убедитесь, что сможете решить проблемы, используя локальный доступ. |
- | + | <code>sudo /etc/init.d/network restart</code> | |
- | sudo /etc/init.d/network restart | + | |
==Подготовка настроек сервера для сетевого моста== | ==Подготовка настроек сервера для сетевого моста== | ||
- | Edit /etc/openvpn/server.conf changing the following options to: | + | Отредактируйте /etc/openvpn/server.conf, изменив следующие настройки: |
+ | <code> | ||
;dev tun | ;dev tun | ||
dev tap | dev tap | ||
Строка 295: | Строка 296: | ||
;server 10.8.0.0 255.255.255.0 | ;server 10.8.0.0 255.255.255.0 | ||
server-bridge 10.0.0.4 255.255.255.0 10.0.0.128 10.0.0.254 | server-bridge 10.0.0.4 255.255.255.0 10.0.0.128 10.0.0.254 | ||
+ | </code> | ||
- | Next, create a helper script to add the tap interface to the bridge and to ensure that eth1 is promiscuous mode. Create /etc/openvpn/up.sh: | + | Далее создайте вспомогательный сценарий для добавления **tap** интерфейса для моста и для проверки, что **eth1** находится в смешанном режиме. Создайте /etc/openvpn/up.sh: |
+ | <code> | ||
#!/bin/sh | #!/bin/sh | ||
Строка 307: | Строка 309: | ||
/sbin/ip link set "$ETHDEV" promisc on | /sbin/ip link set "$ETHDEV" promisc on | ||
/sbin/brctl addif $BR $TAPDEV | /sbin/brctl addif $BR $TAPDEV | ||
+ | </code> | ||
- | Then make it executable: | + | Сделайте файл исполняемым: |
+ | <code>sudo chmod 755 /etc/openvpn/up.sh</code> | ||
- | sudo chmod 755 /etc/openvpn/up.sh | + | После настройки сервера перезапустите **openvpn**, введя: |
- | + | <code>sudo /etc/init.d/openvpn restart</code> | |
- | After configuring the server, restart openvpn by entering: | + | |
- | + | ||
- | sudo /etc/init.d/openvpn restart | + | |
==Настройка клиента== | ==Настройка клиента== | ||
- | First, install openvpn on the client: | + | Сначала установите **openvpn** на клиенте: |
+ | <code>sudo apt-get install openvpn</code> | ||
- | sudo apt-get install openvpn | + | Затем с настроенным сервером и скопированными сертификатами клиентов в каталог /etc/openvpn/, создайте файл конфигурации клиента, скопировав пример. В терминале на клиентской машине введите: |
- | + | <code>sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn</code> | |
- | Then with the server configured and the client certificates copied to the /etc/openvpn/ directory, create a client configuration file by copying the example. In a terminal on the client machine enter: | + | |
- | + | ||
- | sudo cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf /etc/openvpn | + | |
- | + | ||
- | Now edit /etc/openvpn/client.conf changing the following options: | + | |
+ | Теперь отредактируйте /etc/openvpn/client.conf, изменив следующие опции: | ||
+ | <code> | ||
dev tap | dev tap | ||
;dev tun | ;dev tun | ||
+ | </code> | ||
- | Finally, restart openvpn: | + | Наконец перезапустите **openvpn**: |
- | + | <code>sudo /etc/init.d/openvpn restart</code> | |
- | sudo /etc/init.d/openvpn restart | + | |
- | You should now be able to connect to the remote LAN through the VPN. | + | Теперь у вас есть возможность соединиться с удаленной сетью через VPN. |
====Реализации клиентского программного обеспечения==== | ====Реализации клиентского программного обеспечения==== | ||
Строка 341: | Строка 340: | ||
===Графический интерфейс сетевого менеджера Linux для OpenVPN=== | ===Графический интерфейс сетевого менеджера Linux для OpenVPN=== | ||
- | Many Linux distributions including Ubuntu desktop variants come with Network Manager, a nice GUI to configure your network settings. It also can manage your VPN connections. Make sure you have package network-manager-openvpn installed. Here you see that the installation installs all other required packages as well: | + | Множество дистрибутивов Linux, включая варианты Ubuntu desktop, поставляются с программой **Network Manager**, прекрасным графическим интерфейсом для настройки вашей сети. Он также позволяет управлять вашими VPN соединениями. Убедитесь, что пакет **network-manager-openvpn** установлен. Здесь вы можете также увидеть установку всех остальных необходимых пакетов: |
+ | <code> | ||
root@client:~# apt-get install network-manager-openvpn | root@client:~# apt-get install network-manager-openvpn | ||
Reading package lists... Done | Reading package lists... Done | ||
Строка 358: | Строка 357: | ||
After this operation, 3,031 kB of additional disk space will be used. | After this operation, 3,031 kB of additional disk space will be used. | ||
Do you want to continue [Y/n]? | Do you want to continue [Y/n]? | ||
+ | </code> | ||
- | To inform network-manager about the new installed packages you will have to restart it: | + | Для информирования **network-manager** о новых установленных пакетах вам придется его перезагрузить: |
+ | <code> | ||
root@client:~# restart network-manager | root@client:~# restart network-manager | ||
network-manager start/running, process 3078 | network-manager start/running, process 3078 | ||
+ | </code> | ||
- | Open the Network Manager GUI, select the VPN tab and then the 'Add' button. Select OpenVPN as the VPN type in the opening requester and press 'Create'. In the next window add the OpenVPN's server name as the 'Gateway', set 'Type' to 'Certificates (TLS)', point 'User Certificate' to your user certificate, 'CA Certificate' to your CA certificate and 'Private Key' to your private key file. Use the advanced button to enable compression or other special settings you set on the server. Now try to establish your VPN. | + | Откройте интерфейс **Network Manager**, выберите закладку **VPN** и затем нажмите кнопку %%'Add'%% (Добавить). Выберите **OpenVPN** в качестве типа VPN в открывшемся запросе и нажмите %%'Create'%% (Создать). В следующем окне добавьте имя сервера OpenVPN в качестве шлюза, установите тип в %%'Certificates (TLS)'%%, укажите в %%'User Certificate'%% ваш пользовательский сертификат, в %%'CA Certificate'%% сертификат вашего Центра Сертификатов и в %%'Private Key'%% файл вашего секретного ключа. Используйте кнопку %%'Дополнительно'%% для разрешения сжатия и других специальных настроек, которые вы устанавливали на сервере. Теперь попробуйте установить ваш VPN. |
===OpenVPN с графическим интерфейсом под Mac OS X: Tunnelblick=== | ===OpenVPN с графическим интерфейсом под Mac OS X: Tunnelblick=== | ||
- | Tunnelblick is an excellent free, open source implementation of a GUI for OpenVPN for OS X. The project's homepage is at http://code.google.com/p/tunnelblick/. Download the latest OS X installer from there and install it. Then put your client.ovpn config file together with the certificates and keys in /Users/username/Library/Application Support/Tunnelblick/Configurations/ and lauch Tunnelblick from your Application folder. | + | **Tunnelblick** является великолепной свободной реализацией графического интерфейса для **OpenVPN** с открытым кодом под **OS X**. Домашняя страница проекта находится по адресу [[http://code.google.com/p/tunnelblick/]]. Загрузите оттуда последний **OS X** установщик и запустите его. Далее положите ваш файл настроек **client.ovpn** вместе с сертификатами и секретным ключом в **//%%/Users/username/Library/Application Support/Tunnelblick/Configurations/%%//** и загрузите **Tunnelblick** из каталога приложений. |
+ | <code> | ||
# sample client.ovpn for Tunnelblick | # sample client.ovpn for Tunnelblick | ||
client | client | ||
Строка 387: | Строка 388: | ||
cert client.crt | cert client.crt | ||
key client.key | key client.key | ||
+ | </code> | ||
===OpenVPN с графическим интерфейсом под Windows 7=== | ===OpenVPN с графическим интерфейсом под Windows 7=== | ||
- | First download and install the latest OpenVPN Windows Installer. OpenVPN 2.2.1 was the latest when this was written. Additionally download an alternative Open VPN Windows GUI. The OpenVPN MI GUI from http://openvpn-mi-gui.inside-security.de seems to be a nice one for Windows 7. Download the latest version. 20110624 was the latest version when this was written. | + | Для начала загрузите и установите последний [[http://www.openvpn.net/index.php/open-source/downloads.html|OpenVPN Windows Installer]]. На момент написания последней версией был OpenVPN 2.2.2. Дополнительно загрузите альтернативный графический интерфейс Open VPN Windows GUI. [[http://openvpn-mi-gui.inside-security.de|OpenVPN MI GUI]] представляется более удачным интерфейсом для Windows 7. Загружайте последнюю версию. На момент написания это 20120316. |
- | You need to start the OpenVPN service. Goto Start > Computer > Manage > Services and Applications > Services. Find the OpenVPN service and start it. Set it's startup type to automatic. When you start the OpenVPN MI GUI the first time you need to run it as an administrator. You have to right click on it and you will see that option. | + | Вам потребуется запустить сервис **OpenVPN**. Выберите в стартовом меню **//Start > Computer > Manage > Services and Applications > Services//**. Найдите сервис **OpenVPN** и запустите его. Установите тип загрузки в **автоматический**. Когда вы загружаете **OpenVPN MI GUI** в первый раз, вам надо сделать это в режиме администратора. Для этого надо нажать правую кнопку мыши на значке программы и вы увидите такую настройку. |
- | + | ||
- | You will have to write your OpenVPN config in a textfile and place it in C:\Program Files\OpenVPN\config\client.ovpn along with the CA certificate. You could put the user certificate in the user's home directory like in the follwing example. | + | |
+ | Вам потребуется записать вашу конфигурацию **OpenVPN** в текстовый файл и поместить его в каталог **//C:\Program Files\OpenVPN\config\client.ovpn//** вместе с сертификатом центра сертификатов. Вы можете положить сертификат пользователя в домашний каталог, как указано в данном примере: | ||
+ | <code> | ||
# C:\Program Files\OpenVPN\config\client.ovpn | # C:\Program Files\OpenVPN\config\client.ovpn | ||
client | client | ||
Строка 416: | Строка 418: | ||
management-query-passwords | management-query-passwords | ||
auth-retry interact | auth-retry interact | ||
+ | </code> | ||
===OpenVPN для OpenWRT=== | ===OpenVPN для OpenWRT=== | ||
- | OpenWRT is described as a Linux distribution for embedded devices like WLAN router. There are certain types of WLAN routers who can be flashed to run OpenWRT. Depending on the available memory on your OpenWRT router you can run software like OpenVPN and you could for example build a small inexpensive branch office router with VPN connectivity to the central office. More info on OpenVPN on OpenWRT is here. And here is the OpenWRT project's homepage: http://openwrt.org | + | **OpenWRT** описывается как Linux дистрибутив для встраивания в устройства типа WLAN маршрутизаторов. Существует определенный набор маршрутизаторов, в которые может быть прописан **OpenWRT**. В зависимости от доступной памяти ваш OpenWRT маршрутизатор может запускать программы, такие как **OpenVPN** и вы можете, например, построить небольшой недорогой внешний офис с маршрутизатором, соединенным через VPN с центральным офисом. [[http://wiki.openwrt.org/doc/howto/vpn.overview|Здесь]] можно найти больше информации по OpenVPN под OpenWRT. А [[http://openwrt.org/|здесь]] находится домашняя страница проекта **OpenWRT**. |
- | + | ||
- | Log into your OpenWRT router and install OpenVPN: | + | |
+ | Подключитесь к вашему **OpenWRT** маршрутизатору и установите **OpenVPN**: | ||
+ | <code> | ||
opkg update | opkg update | ||
opkg install openvpn | opkg install openvpn | ||
+ | </code> | ||
- | Check out /etc/config/openvpn and put you client config in there. Copy certificated and keys to /etc/openvpn/ | + | Найдите **/etc/config/openvpn** и поместите в него ваши настройки клиента. Скопируйте сертификаты и ключи в /etc/openvpn/. |
+ | <code> | ||
config openvpn client1 | config openvpn client1 | ||
option enable 1 | option enable 1 | ||
Строка 438: | Строка 442: | ||
option key /etc/openvpn/client.key | option key /etc/openvpn/client.key | ||
option comp_lzo 1 | option comp_lzo 1 | ||
+ | </code> | ||
- | Restart OpenVPN: | + | Перезапустите OpenVPN: |
+ | <code>/etc/init.d/openvpn restart</code> | ||
- | /etc/init.d/openvpn restart | + | Вам нужно будет посмотреть не требуется ли изменить в маршрутизаторе маршрутизацию и правила firewall. |
- | + | ||
- | You will have to see if you need to adjust your router's routing and firewall rules. | + | |
====Ссылки==== | ====Ссылки==== | ||
- | See the OpenVPN website for additional information. | + | -- Посетите [[http://openvpn.net/|сайт OpenVPN]] для дополнительной информации. |
- | + | -- [[http://openvpn.net/index.php/open-source/documentation/howto.html#security|Руководство по укреплению безопасности OpenVPN]]. | |
- | OpenVPN hardening security guide | + | -- Также хороший источник информации: книга [[http://www.packtpub.com/openvpn/book|Building and Integrating Virtual Private Networks]] от Pakt. |
- | + | ||
- | Also, Pakt's OpenVPN: Building and Integrating Virtual Private Networks is a good resource. | + | |
---- | ---- |