tun
(для туннелей уровня IP) и tap
(для туннелей уровня Ethernet). На практике tun
используется чаще, за исключением необходимости интеграции VPN клиентов в локальную сеть сервера через Ethernet мост.
keys/ca.crt
) надо разместить на всех машинах (на сервере и на клиентах) как /etc/ssl/certs/Falcot_CA.crt
. Сертификат сервера устанавливают только на сервере: (keys/vpn.falcot.com.crt
копируется в /etc/ssl/vpn.falcot.com.crt
, и keys/vpn.falcot.com.key
копируется в /etc/ssl/private/vpn.falcot.com.key
устанавливая ограничения чтобы только администратор мог их читать), с соответствующими параметрами Диффи-Хелмана (keys/dh2048.pem
) устанавливаемыми в /etc/openvpn/dh2048.pem
. Сертификат клиента устанавливается соответственно на клиент VPN аналогичным способом.
/etc/openvpn/*.conf
. Поэтому важно, настраивая VPN сервер, располагать соответствующие файлы конфигурации в этом каталоге. Хорошей отправной точкой может быть /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz
, в котором приведён довольно стандартный сервер. Конечно, некоторые опции нуждаются в уточнении: ca
, cert
, key
и dh
нужны для описания выбранного местоположения (соответственно, /etc/ssl/certs/Falcot_CA.crt
, /etc/ssl/vpn.falcot.com.crt
, /etc/ssl/private/vpn.falcot.com.key
и /etc/openvpn/dh2048.pem
). Директива server 10.8.0.0 255.255.255.0
определяет подсеть, которая будет использоваться для VPN; сервер использует первый IP адрес в этом диапазоне (10.8.0.1
), а остальные адреса распределяются клиентам.
tun0
. Однако, брандмауэры часто настраиваются одновременно с настройкой реальных сетевых интерфейсов, и это обычно происходит до старта OpenVPN. Поэтому лучшие практики использования связки OpenVPN+брандмауэр рекомендуют создать постоянный виртуальный сетевой интерфейс, и настроив OpenVPN, использовать уже существующий интерфейс. Это также позволяет выбрать имя для этого интерфейса. С этой целью, openvpn --mktun --dev vpn --dev-type tun
создаст виртуальный сетевой интерфейс, назвав его vpn
с типом tun
. Эта команда может быть быстро включена в сценарий настройки брандмауэра, или в директиву up
файла /etc/network/interfaces
или с этой целью можно добавить правилоudev. Конфигурационный файл OpenVPN должен быть также обновлён с директивами dev vpn
и dev-type tun
.
10.8.0.1
. Для предоставления клиентам доступа в локальную сеть (192.168.0.0/24), необходимо добавить директиву push route 192.168.0.0 255.255.255.0
в конфигурацию OpenVPN, тогда клиенты VPN автоматически получат уведомление о том, что сетевая маршрутизация к этой сети осуществляется через VPN. Кроме того, машины в локальной сети также должны быть проинформированы о том, что маршрутизация пакетов VPN должна осуществляться через сервер VPN (в случае установки сервера VPN на шлюз это происходит автоматически). Альтернативно сервер VPN можно настроить с возможностью использования IP masquerading (трансляция - замена одних IP на другие) таким образом, что соединения, приходящие от клиентов VPN будут появляться так, как будто они пришли с сервера VPN (см. Раздел 10.1, «Шлюз»).
/etc/openvpn/
. Стандартная конфигурация, которую можно принять за основу, расположена в примерах по адресу /usr/share/doc/openvpn/examples/sample-config-files/client.conf
. Директива remote vpn.falcot.com 1194
описывает адрес и порт сервера OpenVPN; ca
, cert
и key
также нуждаются в редактировании описаний с уточнением месторасположения файлов ключей.
AUTOSTART
опцию none
в файле /etc/default/openvpn
. Запуск и остановку данного соединения VPN всегда можно выполнить вручную командами service openvpn@name start
и service openvpn@name stop
(где название соединения name совпадает с одним из имён, определённых в файле /etc/openvpn/name.conf
).
tun*
) на обеих сторонах соединения SSH, и эти виртуальные интерфейсы можно настраивать так, как будто они являются физическими интерфейсами. Первоначально необходимо разрешить создание тунельной системы путём установки для PermitTunnel
опции “yes” в конфигурационном файле сервера SSH(/etc/ssh/sshd_config
). При устанавлении соединения SSH, необходимо ясно выразить желание создать тунель с опцией -w any:any
(any
может быть заменено на уже имеющееся в системе устройство с желаемым номером tun
). Такое решение требует наличия на обеих сторонах соединения SSH у пользователя прав администратора, так как необходимо создавать сетевые устройства (другими словами, соединение должно устанавливаться администратором).
/etc/ipsec.conf
содержит параметры для IPsec tunnels (или Security Associations, в терминологии IPsec), с которыми связан хост. Примеры конфигурации в /usr/share/doc/libreswan/
, но в онлайн-документации Libreswan есть больше примеров с пояснениями:
systemctl
; например systemctl start ipsec
запустит службу IPsec.
/etc/ppp/options.pptp
, /etc/ppp/peers/falcot
, /etc/ppp/ip-up.d/falcot
, и /etc/ppp/ip-down.d/falcot
.
Пример 10.2. Файл /etc/ppp/options.pptp
# Параметры PPP, используемые для PPTP соединения lock noauth nobsdcomp nodeflate
Пример 10.3. Файл /etc/ppp/peers/falcot
# vpn.falcot.com -это сам сервер pty "pptp vpn.falcot.com --nolaunchpppd" # соединение идентифицирует пользователя "vpn" user vpn remotename pptp # применение шифрования необходимо require-mppe-128 file /etc/ppp/options.pptp ipparam falcot
pptpd
. Её главный файл настройки /etc/pptpd.conf
нуждается совсем в небольших изменениях: localip (локальный IP адрес) и remoteip (удалённый IP адрес). В нижеприведённом примере, сервер PPTP всегда использует адрес 192.168.0.199
, а клиент PPTP получает адрес динамически из диапазона адресов от 192.168.0.200
до 192.168.0.250
.
Пример 10.6. Файл /etc/pptpd.conf
[..] # TAG: localip # TAG: remoteip # Указывает диапазоны локальных и удаленных IP-адресов. # # Эти параметры игнорируются, если установлена опция делегирования. # # Любые адреса работают, пока локальная машина заботится о маршрутизации. # Но если вы хотите использовать сеть MS-Windows, вам следует # использовать IP-адреса из адресного пространства локальной сети и использовать proxyarp # в файле опций pppd или запустить bcrelay. # # Вы можете указать отдельные IP-адреса, разделенные запятыми, или # укажите диапазоны или и то, и другое. Например: # # 192.168.0.234,192.168.0.245-249,192.168.0.254 # # ВАЖНЫЕ ОГРАНИЧЕНИЯ: # # 1. Пробелы между запятыми и внутри адресов не допускаются.. # # 2. Если вы дадите больше IP-адресов, чем количество подключений, # подключение начнётся с начала списка и будет продолжаться до тех пор, пока оно # получает IP-адреса соединений. Остальные будут игнорироваться. # # 3. Без сокращений в диапазонах! Например. 234-8 не значит от 234 до 238, # должно быть указано 234-238. # # 4. Если вы укажете один локальный IP-адрес, это нормально — все локальные IP-адреса будут # быть установлен на заданный. Вы ДОЛЖНЫ предоставить хотя бы один удалённый # IP для каждого одновременного клиента. # # (Рекомендовано) #localip 192.168.0.1 #remoteip 192.168.0.234-238,192.168.0.245 # or #localip 192.168.0.234-238,192.168.0.245 #remoteip 192.168.1.234-238,192.168.1.245 localip 192.168.0.199 remoteip 192.168.0.200-250
/etc/ppp/pptpd-options
. Важными параметрами являются: имя сервера (pptp
), доменное имя (falcot.com
), и IP адрес для DNS и WINS серверов.
Пример 10.7. Файл /etc/ppp/pptpd-options
# Включить средства отладки соединений. # (см. конфигурацию syslog куда pppd шлёт) #debug # Имя локальной системы для целей аутентификации # (должно соответствовать второму полю в записях /etc/ppp/chap-secrets) name pptpd # Необязательно: имя домена, которое будет использоваться для аутентификации. ## измените имя домена на свой локальный домен domain falcot.com # Аутентификация ## это разумные значения по умолчанию для клиентов WinXXXX ## для настроек безопасности auth refuse-pap refuse-chap refuse-mschap # Требовать от узла аутентифицировать себя с помощью MS-CHAPv2 [Microsoft # Challenge Handshake Authentication Protocol, Version 2] аутентификации. require-mschap-v2 # Необходимо MPPE 128-bit шифрование # (обратите внимание, что MPPE требует использования MSCHAP-V2 при аутентификации) require-mppe-128 # Сеть и маршрутизация ## Укажите свои адреса ms-dns 192.168.0.1 ms-wins 192.168.0.1 ## Заполните своей маской сети (netmask) netmask 255.255.255.0 ## some defaults nodefaultroute proxyarp lock
vpn
(и соответствующий ему пароль) в файле /etc/ppp/chap-secrets
. В отличие от других случаев применения символа звёздочка (*
) в текстовых файлах настроек, в данном конкретном случае, в этом файле, необходимо ввести напрямую имя сервера. Кроме того, имя клиентов Windows PPTP определяется в следующем виде DOMAIN\\USER
, в противовес обычному простому указанию только имя пользователя. Это объясняет почему файл также упоминает пользователей FALCOT\\vpn
. Можно также определить здесь индивидуальные IP адреса для пользователей; а применение звездочки в этом поле говорит о том, что будет использоваться динамическая адресация.