top
logo


PfSense + DSR ( openvpn и два офиса ) PDF Печать E-mail
19.09.14 10:26

PfSense + DSR

 

Необходимость написания этой статьи была продиктована реальной задачей объединить несколько распределенных филиалов с центральным офисом в одну VPN сеть. В качестве типа VPN соединения был выбранOpenVPN. Во многом такой выбор был сделан в силу того, что в центральном офисе в качестве роутера в свое время был установлен pfSense на базе FreeBSD. Идеальным вариантом было бы установить в удаленных филиалах также pfSense, однако для сетевого оборудования в филиалах отведено очень мало места и надо было найти оптимальный вариант машрутизатора, который мог справится со следующими задачами: быть достаточно компактным, поддерживать OpenVPN, а также, что немаловажно при местных не очень качественных операторах связи, иметь как минимум 2 канала для подключения к внешней сети интернет. В итоге был выбран D-link DSR-500. Дальнейшее рассуждение также справедливо и для DSR-250(N) и для DSR-1000(N). На pfSense настроен по методу OpenVPN PKI: Site-to-Site. Для начала необходимо создать сертификаты. Для этого воспользуемся статьей с сайта 3cx.com.ua немного измененной под наши нужды.

Создание сертификатов

1. Загрузите OpenVPN сервер отсюда. Я использовал файл Windows Installer.

2. Установите приложение. Все опции установки оставьте по умолчанию. На этапе установки появится запрос установки TAP адаптера. Соглашайтесь.

PfSense+dsr1.png

3. Поскольку OpenVPN использует SSL сертификаты для взаимной аутентификации узлов, следует создать ряд сертификатов

• Сертификат Certificate Authority, т.е. корневой сертификат — он загружается в роутер pfSense

• Сертификат Server, т.е. сертификат сервера — он загружается в роутер pfSense

• Сертификат Client, т.е. сертификат клиента — он загружается в роутер DSR

Внимание! Сертификаты создаются из командной строки Windows.

4. Создадим корневой сертификат Certificate Authority (CA). Перейдите в папку C:\program files\OpenVPN\easy-rsa\ и в командной строке введите init-config.

PfSense+dsr2.png


5. Отредактируйте переменные в файле vars.bat, который тоже находится в папке C:\program files\OpenVPN\easy-rsa\. Для редактирования рекомендую использовать Notepad++.

PfSense+dsr3.png

Редактировать переменные не обязательно, но желательно. Я установил значения, соответствующие нашей компании, а вы должны установить ваши. После этого сохраните файл. 6. Откройте файл openssl.cnf и закомментируйте в нем строки, связанные с пакетным режимом.

PfSense+dsr4.png

и сертификатами PKCS#11.

PfSense+dsr5.png

Это особенность версии OpenVPN (v. 2.2.0), которую я использовал. 7. В командной строке последовательно введите vars и clean-all (См. процедуру создания сертификатов в файле Readme.txt в папке C:\program files\OpenVPN\easy-rsa\).

PfSense+dsr6.png

8. Введите build-ca. Эта команда создаст корневой сертификат CA в папке c:\Program Files\OpenVPN\easy-rsa\keys\, используя значения из файла vars.bat. На все вопросы отвечайте нажатием клавиши Enter. В качестве Common Name укажите имя сервера (хоста) OpenVPN или любое подходящее название. Я указал просто server.

PfSense+dsr7.png

9. Создайте параметры Diffie-Hellman. Введите build-dh.

PfSense+dsr8.png

10. Создав сертификат CA, нужно создать сертификат сервера OpenVPN, то есть, роутера DSR. Этот сертификат будет подписан корневым сертификатом CA. Введите build-key-server server. На вопросы о подписании сертификата и на загрузке его в базу сертификатов ответьте y. Common Name также укажите server для простоты решения.

PfSense+dsr9.png

11. Теперь сгенерируйте сертификат клиента. Введите build-key client. Common Name также укажите client.

PfSense+dsr10.png

12. После этого в папке keys должны присутствовать все необходимые сертификаты.

PfSense+dsr11.png

 

Настройка сервера pfSense

Также воспользуемся уже написанной статьей с форума psSense и также немного переработанной.

На сервере (pfSense) переходим в меню System -> Cert Manager на вкладку CAs

Pfsense+dsr16.png

Импортируем и сохранеем сертификат нового центра сертификации

Pfsense+dsr17.png

Переходим на вкладку Certificates и сохраняем сертификаты сервера и клиента/ов

Pfsense+dsr18.png

Переходим в меню VPN -> OpenVPN на вкладку Server и добавляем новый сервер кнопкой “+”:

Pfsense+dsr19.png

Переходим на вкладку Client Specific Overrides и кнопкой “+” добавляем настройки специфичные для нашего клиента:

Pfsense+dsr20.png

Обратите внимание на поле Advanced, в нем необходимо указать команду: iroute 192.168.101.0 255.255.255.0 для указания подсети данного клиента, а также в случае необходимости команду push "route 192.168.102.0 255.255.255.0" для доступа данного филиала к другому филиалу и соответственно их свзяи между собой. Все комманды прописываются черех ";" .

Переходим в меню Firewall – Rules и на вкладке WAN добавляем правило для доступа извне к созданному OpenVPN серверу:

Pfsense+dsr21.png

Переходим на вкладку OpenVPN и добавляем правило:

Pfsense+dsr22.png

Настройка клиента D-Link DSR500

В первую очередь особо хочу отметить, что OpenVPN реализован только на WW прошивках. На прошивках RU этого функционала нет. WW прошивка ничем кроме расширенного функционала не отличается. В любом случае интерфейс будет на английском языке.

1. Откройте web интерфейс роутера. У меня испытательный роутер имеет IP адрес 192.168.101.10. Перейдите в раздел Setup – VPN Settings – OpenVPN – OpenVPN Authentication.

Pfsense+dsr12.png

2. Загрузите в роутер созданные файлы сертификатов в соответствии с таблицей. Trusted Certificate (CA Certificate) ca.crt Server/Client Certificate client.crt Server/Client Key client.key DH Key dh1024.pem

Убедитесь, что файлы загружены успешно.

Pfsense+dsr13.png

3. Перейдите в раздел Setup – VPN Settings – OpenVPN – OpenVPN Configuration.

Установите галочку Enable Openvpn.

Выберите режим Client. Server IP – это адрес вашего VPN сервера.

Port рекомендуется оставить по умолчанию.

Encryption Algorithm — в данном примере я установил AES-256 (как на сервере).

Hash Algorithm – SHA-1, по умолчанию.

Далее я отметил галочкой используемые сертификаты.

Enable TLS Authentication Key включается, если предполагается шифрование сертификатов, иначе сертификаты будут передаваться в открытом виде. В IP телефонах Yealink режим шифрования сертификатов не поддерживается.

Pfsense+dsr14.png

4. Перейдите в раздел Setup – VPN Settings – OpenVPN – OpenVPN Remote Networks (Split Tunneling). Здесь следует добавить удаленную сеть сервера, к которой OpenVPN клиент будет иметь доступ. Я добавил свою локальную сеть 192.168.100.0.

Pfsense+dsr15.png

5. Доступ к сетям других филиалов, если это необходимо настраивается на сервере.

Соединение, дополнительные настройки

Через несколько секунд в меню Status – OpenVPN видим успешно подключившийся клиент:

Pfsense+dsr23.png

Таблица маршрутов сервера (pfSense1 головного офиса):

Pfsense+dsr24.png

Таблица маршрутов клиента

Pfsense+dsr25.png

Сети головного офиса и филиала доступны друг другу через созданный туннель.

Как видите, какие либо настройки маршрутизации на OpenVPN клиенте полностью отсутствуют. Заполнив поле Remote Network на клиенте, мы передали маршрут в сеть головного офиса клиенту. Напомню, это действие абсолютно аналогично тому, что на сервере в поле Advanced мы написали бы: push “route 192.168.10.0 255.255.255.0” или тому, что на клиенте в Remote Network написали: 192.168.10.0/24, или на клиенте в поле Advanced: route 192.168.10.0 255.255.255.0. Но и это не все. Мы могли бы написать: push “route 192.168.10.0 255.255.255.0” в Client Specific Overrides для ovpnc на сервере и это привело бы к тому же результату. OpenVPN в режиме PKI позволяет централизованно и гибко управлять клиентами. Все можно сделать на сервере, не прописывая route или Remote Network на каждом клиенте. Все можно настроить индивидуально в Client Specific Overrides. Для сравнения, push “route 192.168.10.0 255.255.255.0” в поле Advanced сервера действует глобально на всех клиентов.

 

источник:http://it-pedia.com/index.php?title=PfSense_%2B_DSR

{jcomments on}

Последнее обновление 19.09.14 11:09
 
Интересная статья? Поделись ей с другими:

bottom

 

Unreal Commander PfSense по русски Яндекс.Метрика