Freebsd vpn сервер настройка

Установка VPN-сервера PPTP для FreeBSD, Linux

Установка VPN-сервера PPTP для FreeBSD

Инсталляция проводилась на чистый сервер на шаблоне программного обеспечения KVM-FreeBSD-8.2-i386-minimal. На него был установлен сервер mpd5 (Multi-link PPP daemon), выход в интернет будет осуществляться через этот сервер используя трансляцию адресов (NAT) с компьютера под управлением Windows Vista.
Работать MPD будет только на виртуальном сервере с виртуализацией KVM или на выделенном сервере.
Преимущество использвания MPD перед сервером OpenVPN в том, что не требуется установка дополнительного ПО на клиентские компьютеры и их настройках гораздо проще — требуется ввести в настройках подключения только адрес сервера и логин и пароль.

Содержание

VPN-сервер MPD5 на FreeBSD 9.2-RELEASE

Установка MPD5

Подключитесь к серверу по протоколу SSH и установите дерево портов
После того как порты будут установлены необходимо произвести установку mpd5
Опции на стадии configure (вернуться к ним можно потом можно используя команду make config) оставьте по-умолчанию (все галочки сняты)
После успешной компиляции следует его настроить
Скопируйте файл примера конфигурации в реальный конфиг
и отредактируйте его в текстовом редакторе
В самом начала есть секция которая начинается с параметра default:
Изменим load dialup на load pptp_server
Затем отредактируем секцию pptp_server в этом же файле:
Здесь задаются адреса, выдаваемые VPN-клиентам (тут можно указать внешние IP) в виде
Например так:
пул адресов который назначается клиентам (тут можно указать внешние IP). У меня используются уже адреса из сети 192.168.1.0/24 так как я подключен к интернет через ADSL-модем и он выдает такой адрес (большинство использует эту сеть по-умолчанию). Меняем на другую сеть для частных IP-адресов (из RFC 1918)
Далее внесите также правки изменив на свои адреса адрес который будет являться шлюзом и DNS-сервером
Строку
просто удалите или закомментируйте
Укажите также адрес на котором будем принимать подключения — реальный IP-адрес вашего VDS-сервера

Изменения в файле конфигурации в diff-формате (diff mpd.conf.sample mpd.conf):
Теперь отредактируйте файл паролей и добавьте пользователей:
Можно также указывать статический внешний адрес добавив его 3м параметром в строке так:
Также поправьте права на файлы для большей безопасности c 644 на 600 (владелец файлов root:wheel)
Добавьте mpd в автозапуск в файл /etc/rc.conf
и пропишите туда же необходимые опции:
Запустите VPN-сервер:

Настройка DNS-сервера

Первоначальная проверка работоспособности

В принципе можно уже пробовать подключаться со своего компьютера к VPN-серверу — создайте подключение к удаленному рабочему месту со всеми настройками по-умолчанию и подключитесь.
С вашего компьютера должны работать команды ping 172.17.0.1, nslookup yandex.ru, вы сможете подключится по ssh к адресу 172.17.0.1

И на самом сервере будет видно командой ifconfig поднятный тунель.
Все пакеты будут отправляться в туннель (так как в настройках TCP/IP-протокола в windows в свойствах VPN-подключения по-умолчанию стоит флажок Использовать основной шлюз в удаленной сети и пропадать оставаться там, так как нет трансляции адресов.

Настройка NAT

Теперь следует настроить NAT для трансляции IP-адресов чтобы можно выходить в интернет через VPN-сервер
Используйте для этого штатный ipfw nat. Добавьте в /etc/rc.conf следующие строки
И, собственно, сам firewall — отредактируйте /etc/firewall.conf чтобы он содержал строки
Теперь включите forward между интерфейсами и перечитайте правила firewall
Внимание. Если вы где-либо ошиблись в firewall, то будет правило по-умолчанию deny from any и вам придется подключаться к локальной консоли VDS-сервера через VNC-протокол чтобы исправить это.
Поэтому можно воспользоваться скриптом change_rules.sh для установки правил
где в окне редактора vi который будет запущен через данный скрипт установить нужные правила и применить их. При этом если в течение 30 секунд не будет нажато y (отключился терминал), то правила не будут установлены и будут восстановлена предыдущая конфигурация.
Если все успешно, то подключившись по VPN к серверу вы увидете что пакеты в интернет отправляются через него

Посмотреть также работу ipfw nat можно командой
На этом установка и настройка закончена.

Установка VPN-сервера PopTop на Debian-6-i386-minimal

Источник

MPD 5.7 настройка VPN-сервера в FreeBSD

Настраиваем MPD5 в качестве VPN-сервера для подключений Windows-клиентов к офисной сети по протоколу PPTP.

MPD5 также может использоваться в качестве VPN-клиента для доступа к удаленной сети, или подключения к интернет провайдеру.

Для объединения нескольких сетей через интернет обратите внимание на OpenVPN. Ключевые отличия OpenVPN: туннель по UDP или TCP протоколу, TLS-шифрование, возможность задать клиенту маршруты к обслуживаемым сетям.

Содержание

Установка MPD5

Для установки из коллекции портов, обновляем коллекцию:

Затем, устанавливаем порт:

Настройка MPD5

Переходим в папку с файлами конфигурации:

В папке имеются следующие файлы:

  • mpd.conf.sample — шаблон файла конфигурации,
  • mpd.script.sample — скрипты для модемов,
  • mpd.secret.sample — пример списка пользователей и паролей.

Копируем файл конфигурации из шаблона:

Открываем в редакторе:

Идентификаторы секций в файле конфигурации задаются с начала строки и заканчиваются двоеточием. Значения параметров в начале строки обязательно отделяются табуляцией, пробелы также допустимы.

Удаляем все секции кроме startup, default и pptp_server. Для удаления строк в ee используем Ctrl+K. Также конфиг можно создать копипастом приведенного ниже листинга.

Задаем параметры. Строки, требующие корректировки, выделены жирным шрифтом:

Задаем список пользователей нашего VPN-сервера в файле mpd.secret:

Задаем имена пользователей, пароли, при необходимости, присваиваем фиксированные IP-адреса. Имя пользователя и пароль чувствительны к регистру.

Ограничиваем доступ к файлу:

Включение маршрутизации

Проверяем, включена ли маршрутизация, командой:

Если в результате видим: » net.inet.ip.forwarding: 1 «, значит маршрутизация включена, переходим к следующему разделу.

Если видим: » net.inet.ip.forwarding: «, значит в /etc/rc.conf необходимо добавить параметр: gateway_enable=»YES» :

Проверяем, включена ли маршрутизация:

В результате получаем:

Настройка брандмауэра

Для приема PPTP-подключений необходимо открыть входящие TCP-соединения на порт 1723 и разрешить GRE-трафик.
Для IPFW правила будут примерно следующие:

Подключенным клиентам также необходимо открыть доступ к локальной сети. В простейшем варианте, для пула 192.168.1.50 — 192.168.1.99, открываем полный доступ для всех локальных подключений, независимо от интерфейсов:

Настройка логов MPD5

Для записи логов MPD5 использует syslog. Идентификатор источника сообщений задается ключом командной строки «—syslog-ident», значение по умолчанию — «mpd».

Добавляем следующие строки в конец файла:

Таким образом, все сообщения от источника «mpd» будут направлены в mpd.log.

Задаем параметры ротации логов:

Ежедневная ротация в полночь с сохранением 7-ми логов в сжатом формате:

Альтернативный вариант, с ежемесячной ротацией и хранением логов за последние три месяца:

Подробнее о файле конфигурации читаем в справке: man newsyslog.conf.

Перезагружаем конфигурацию syslog:

Запуск MPD5

Разрешаем запуск MPD, добавляем в /etc/rc.conf параметр: mpd_enable=»YES» :

Проверяем, запущена ли служба и параметры запуска:

В результате получаем:

Проверяем, слушается ли порт:

Результат должен быть следующим:

Проверяем сообщения в лог-файле:

В случае успешного старта видим следующий текст:

Заходим браузером в веб-админку: http:/адрес.сервера:5006, проверяем параметры соединений.

Создаем подключение в Windows, либо настраиваем на удаленной стороне MPD-клиент и пробуем подключиться. При настройке клиентского подключения в Windows, чтобы предотвратить туннелирование всего интернет трафика в удаленную сеть, в дополнительных настройках протокола TCP/IP, необходимо отключить флажок «Использовать основной шлюз в удаленной сети». В этом случае будет туннелироваться только трафик удаленной подсети в соответствии с ее классом.

В случае проблем используем tcpdump.

Мониторим физический канал:

Возможные проблемы

Ошибка: «Can’t create socket node: No such file or directory. Netgraph initialization failed», может возникнуть после установки новой версии системы. Проблема возникает из-за линковки программы со старыми системными библиотеками. В этом случае необходимо переустановить или пересобрать MPD.

Анализ логов MPD5

Чтобы быть в курсе как используется наш VPN-сервер, организуем ежедневную отправку на почту отчета по сессиям. Для получения административных почтовых уведомлений по протоколу POP3 потребуется установить Dovecot или Qpopper.

Готового решения на все случаи жизни мне найти не удалось. Рассмотрим примеры скриптов, которые можно взять за основу для построения своего анализатора.

Простейший отчет по сессиям

Сканируем лог за прошедший день командой grep, выбираем сообщения о подключении, отключении клиентов и имена пользователей. Ротация логов должна быть ежедневной.

Результат работы выдает следующий:

Добавим в /usr/local/etc/periodic/daily скрипт с именем 800.mpd:

Со следующим содержимым:

Задаем права доступа:

Mpdstat

Единственный готовый скрипт, который мне удалось накопать на просторах интернета.

Perl-скрипт интегрируется в periodic, выдает следующий результат:

Создаем папку для загрузки в пользовательском профиле:

Переходим в папку с программой:

В случае ошибки установки, переименовываем файл 900.mpdstatus в 900.mpdstat и запускаем установку повторно:

Открываем /etc/periodic.conf, если файл отсутствует в вашей системе, создаем его:

Разрешаем исполнения скрипта и задаем путь к лог файлам:

Выполняем тестовый запуск:

Скрипт ищет лог за прошедший день, если он не найден, обрабатывает mpd.log.

Парсер на PHP

Я использую свой парсер на PHP, генерирующий следующий вывод:

Скрипт отображает IP-адреса, с которых устанавливаются соединения, и выполняет реверсные DNS-запросы. Параметр «log +PHYS2» должен быть включен в mpd.conf.

Создаем папку программы в профиле пользователя и переходим в нее:

Переходим в папку с программой:

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

Выполняем пробный запуск, лог-файл, заданный в конфиге (mpd.log.0.bz2) должен существовать, автопоиск не предусмотрен:

Добавим в /usr/local/etc/periodic/daily скрипт с именем 800.mpd:

Со следующим содержимым:

Задаем права доступа:

Выполняем тестовый запуск:

Вывод команды будет отправлен на почту пользователя root.

Ссылки

Смотрите также

Комментарии:

Добрый день! Перешёл на FreeBSD 9.3 и у меня с mpd такая проблема случилась:

uname:
9.3-RELEASE-p2 FreeBSD 9.3-RELEASE-p2 #0: Mon Sep 15 16:44:27 UTC 2014 root@amd64-builder.daemonology.net:/usr/obj/usr/src/sys/GENERIC amd64 GENERIC

messages:
Sep 20 20:49:06 router kernel: pf: state key linking mismatch! dir=OUT, if=sis0, stored af=2, a0: 80.253.237.5, a1
: 80.100.154.56, proto=47, found af=2, a0: 93.88.162.194:443, a1: 172.16.2.5:52134, proto=6.
Sep 20 20:49:06 router kernel: pf: state key linking mismatch! dir=OUT, if=sis0, stored af=2, a0: 80.253.237.5, a1
: 80.100.154.56, proto=47, found af=2, a0: 93.88.162.194:443, a1: 172.16.2.5:52134, proto=6.
Sep 20 20:49:06 router kernel: pf: state key linking mismatch! dir=OUT, if=sis0, stored af=2, a0: 80.253.237.5, a1
: 80.100.154.56, proto=47, found af=2, a0: 93.88.162.194:443, a1: 172.16.2.5:52134, proto=6.
Sep 20 20:49:06 router kernel: pf: state key linking mismatch! dir=OUT, if=sis0, stored af=2, a0: 80.253.237.5, a1
: 80.100.154.56, proto=47, found af=2, a0: 93.88.162.194:443, a1: 172.16.2.5:52134, proto=6.

Если я подключаюсь из дома к офису, то в лог валятся такие сообщения. Да и вообще всё тормозить начинает.

Если впн подключение делается из локальной сети офиса для выхода в интернет, то всё работает, ошибок нет.

pkg info mpd5
mpd5-5.7_1
Name : mpd5
Version : 5.7_1

pptp_server:
set ippool add poolsat 172.16.2.5 172.16.2.20
create bundle template B
set iface enable proxy-arp
set iface idle 0
set iface enable tcpmssfix
set ipcp yes vjcomp
set ipcp ranges 172.16.2.1/32 ippool poolsat
set ipcp dns 77.88.8.88
set bundle enable compression
set ccp yes mppc
set mppc yes e128
set mppc yes stateless
create link template L pptp
set link enable multilink
set link yes acfcomp protocomp
set link action bundle B
set link no pap chap
set link enable chap
set link enable chap-msv1
set link enable chap-msv2
set link mtu 1460
set pptp self 0.0.0.0
set link enable incoming

table const <10>
table <1.1.1.1>
table persist
table persist file «/etc/pf.badhost»
set block-policy drop
set skip on lo
scrub in all
nat on $ext_if from $local_net to !$local_net -> $ext_if:0
nat on $ext_if from $vpn_net to !$local_net -> $ext_if:0
antispoof quick for $ext_if
block inet6
block in quick on <$ext_if>from to any label «Ssh bruteforce»
block quick from label «Block badhost»
block in on <$ext_if>
block out on <$ext_if>from to any label «Block out private addr»
pass in on <$ext_if>from label «Trust hosts»
pass in on <$ext_if>proto tcp to port ssh
pass in on <$ext_if>inet proto icmp from any to any icmp-type $icmp_types label «Allow ICMP»
pass out on

Поделитесь мыслями по этому поводу. В интернете не нашёл ответов. За ранее спасибо!

Источник

Развертывание собственного OpenVPN

Инструкция описывает процесс установки и настройки серверной и клиентской частей OpenVPN. Решение предназначено для подключения удаленных клиентов к сети предприятия. После подключения у клиента сохраняется собственный шлюз по-молчанию и не блокируется выход в интернет. Решение показало простоту в настройке клиентской части, было опробовано (и используется в настоящее время) на Windows-XP, Windows-7, Andriod 3.x, Archlinux, Ububnu. Есть информация об успешном подключении и iPad.

Установка OpenVPN сервера (FreeBSD).

Устанавливаем пакет из портов. Опции можно оставить по умолчанию. Главное, не отключайте ‘easy-rsa’, так как он потребуется для настройки и генерации сертификатов:

Создаем каталоги для конфигов:

Копируем каталог easy-rsa в каталог конфигов OpenVPN:

Переходим в скопированный каталог:

Переходим в оболочку sh:

Выполняем команду для генерации собственного сертификата:

Данные для сертификата заполните в соотвествии с вопросами.

‘Common name’ должно соответствовать DNS имени вашего VPN-сервера, например: ‘vpn0.example.com’. На последние вопросы отвечаем ‘Y’.

Теперь делаем сертификат для клиента с именем ‘client’. Тут также на последние вопросы отвечаем ‘Y’

Выходим из sh оболочки:

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

Создаем файл server.conf (ниже под спойлером). Не забудьте в нем указать адрес внутреннего DNS-сервера, которых знает имена ваших локальных хостов.

Для каждого клиента надо будет создавать на сервере файл-конфиг пользователя, где указывается назначаемый клиенту IP адрес и шлюз. Например, для клиента с именем ‘client’:

Для запуска даймона OpenVPN при загрузке операционной системы добавим в ‘/etc/rc.conf’ строки:

Если стоит задача предоставлять пользователям через OpenVPN Интернет, то потребуется наличие NAT. Можно включить его поддержку через загружаемые модули, для этого в файл ‘/boot/loader.conf’ надо добавить строки:

Пример настройки NAT IPFW:

Все, сервер OpenVPN установлен, настроен и запущен. Теперь можно заняться клиентами.

Создание клиентского сертификата OpenVPN

Описание приведено для сервера на операционной системе FreeBSD с установленным и настроеным, как описано выше, сервисом OpenVPN.

Сертификат генерируется из системной консоли сервера с правами суперпользователя из каталога easy-rsa:

В результате будут сгенерированы клиентские файлы сертификатов для подключения. Далее, необходимо создать файл `/usr/local/etc/openvpn/ccd/ЛОГИН_ПОЛЬЗОВАТЕЛЯ` с одной строкой вида:

Каждая пара адресов в ifconfig-push соответствует виртуальным IP-адресам конечных точек (клиента и сервера) — каждому клиенту в момент подключения назначается своя подсеть. Сюда-же можно добавить дополнительные маршруты, если клиенты подключаются к разным подсетям (филиалы, технические специалисты)

Чтобы сохранить совместимость с Windows-клиентами и драйвером TAP-Win32 эти адреса должны быть взяты из следующих друг за другом подсетей с маской /30. Например, для диапазона `172.17.0.1-172.17.0.254` последний октет IP-адреса каждой пары клиент-сервер следует назначать из набора:

Для удобства работы я создал текстовый файл «/usr/local/etc/openvpn/not_use_ip.txt» в котором перечислены свободные пары адресов, удаляемые по мере раздачи клиентам. Обратите внимание, что в конфигурационном фале первым задается назначаемый клиенту IP адрес (старший), вторым — адрес сервера (на единицу меньше).

После добавления клиента желательно перезапустить сервис OpenVPN:

Клиенту необходимо передать пять файлов (ca.crt, vpn0.crt, vpn0.key, ta.key, vpn0.example.com.ovpn):

  • /usr/local/share/doc/openvpn/easy-rsa/keys/ca.crt
  • /usr/local/share/doc/openvpn/easy-rsa/keys/ЛОГИН_ПОЛЬЗОВАТЕЛЯ.crt → vpn0.crt
  • /usr/local/share/doc/openvpn/easy-rsa/keys/ЛОГИН_ПОЛЬЗОВАТЕЛЯ.key → vpn0.key
  • /usr/local/etc/openvpn/easy-rsa/keys/ta.key
  • /usr/local/etc/openvpn/vpn0.example.com.ovpn

Перечисленные файлы копируются в отдельную (временную) папку с именем «config», файлы вида «ЛОГИН_ПОЛЬЗОВАТЕЛЯ.*» в ней переименовываются в «vpn0.*», папка упаковывается в архив и высылается пользователю электронной почтой со ссылкой на инструкцию по настройке клиентского подключения OpenVPN (см. ниже).

Инструкция по настройка клиентского подключения OpenVPN

(Для пользователей не имеющих технической подготовки)

Для установки и настройки OpenVPN соединения необходимо вначале определить разрядность своей операционной системы. Для 32-разрядных систем установочный файл клиента OpenVPN оканчивается на «-i686.exe». Если же у Вас 64-разрядная MS-Windows, то Вам нужен файл, в названии которого есть «-x86_64.exe». Кроме того, для VPN подключения к сети Вам потребуются клиентские сертификаты и файл настройки, которые можно получить у системного администратора.

Для MS-Windows cкачайте и установите соответствующую клиентскую программу OpenVPN (для Android и iOS есть пакеты в собственных репозиториях market/store). Перейдите в каталог программы OpenVPN (C:Program Files\OpenVPN) и скопируте в него папку config со всем содержимым, полученную у системного администратора. В этой папке расположены ваши клиентские сертификаты и настройки подключения к серверу VPN.

Названия файлов в папке config у Вас могут незначительно отличаться. Запустите OpenVPN клиент от имени Администратора или измените свойства ярлыка на Рабочем столе (установить галочку “выполнять от имени администратора”).

Подключение к локальной сети предприятия через Интернет производися через контекстное меню или двойным кликом на иконке OpenVPN в системной области панели задач. Подключиться можно только находясь за пределами сети предприятия. Соединения изнутри сети сервер OpenVPN не принимает.

После успешного завершения процедуры подключения иконка OpenVPN в панели задач изменит цвет на зеленый и появится всплывающая подсказка с назначенным VPN-клиенту IP адресом. Адрес «привязыватся» к сертификату, поэтому с одним и тем-же сертификатом одновременно с двух и более рабочих мест работать не получится из-за конфликта адресов.

Источник

Читайте также:  Драйвер вайфай для леново v580c
Adblock
detector