Настройка роутера pfSense в качестве OpenVPN клиента.
pfSense OpenVPN Client:
В этом примере локальная сеть "192.168.1.0/24" разбита на подсети:
LAN - "192.168.1.0/25" - ( 192.168.1.1 - 192.168.1.126 )
WLAN - "192.168.1.128/25" - ( 192.168.1.129 - 192.168.1.254 )
OVPN - "10.8.0.0/24" - ( 10.8.0.1 - 10.8.0.254 )
Разновидности настройки:
- Маршрутизируем через тунель:
- Весь трафик;
- Определенную подсеть;
- Конкретного клиента;
- Конкретный сайт;
Подготовка:
Чтобы у pfSense была возможность выбирать, через какой шлюз маршрутизировать трафик, отключим на стороне OpenVPN сервера "redirect-gateway" и "dhcp-option". С этими настройками, весь трафик будет проходить через OpenVPN сервер. А нам это не нужно!
# /etc/openvpn/server.conf
- Комментируем строчки;
;push "redirect-gateway def1 bypass-dhcp"
;push "dhcp-option DNS 77.88.8.88"
;push "dhcp-option DNS 77.88.8.2"
- Перезапускаем демон;
# /etc/init.d/openvpn restart
Теперь перейдем к настройке роутера:
Она будет состоять из следующих шагов:
- Импорт клиентских ключей и сертификатов;
- Добавление клиента;
- Cоздание OpenVPN интерфейса;
- Выбор шлюза по умолчанию;
- Настройка правил для NAT и Firewall.
Certificate Manager:
Добавим клиентские сертификат - "MTv.crt", ключ - "MTv.key", корневой сертификат "ca.crt".
Ключ для TLS аутентификации - "ta.key" понадобится на следующем шаге.
System -> Certificate Manager -> CAs
# - Create / Edit CA
Descriptive name - unix.center
Method - Import an existing Certificate Autohrity
# - Existing Certificate Authority
Certificate data - содержимое ca.crt
System -> Certificate Manager -> Certificates
# - Add a New Certificate
Method - Import an existing Certificate
Descriptive name - MTv
# - Import Certificate
Certificate data - содержимое MTv.crt
Private key data - содержимое MTv.key
С этим шагом готово.
OpenVPN:
Добавляем клиента для нашего OpenVPN сервера.
VPN -> OpenVPN -> Clients
# - General Information
Server mode - Peer to Peer (SSL/TLS)
Protocol - UDP
Device mode - tun
Interface - WAN
Server host or address - IP-адрес сервера
Server port - 1194
Description - OVPN
# - User Authentication Settings
Для подключения по паролю. В нашем случае он не используется;
# - Cryptographic Settings
TLS authentication - + Enable authentication of TLS packets.
- Automatically generate a shared TLS authentication key.
Key - содержимое ta.key
Peer Certificate Authority - unix.center
Client Certificate - MTv (CA: unix.center, In use)
Encryption Algorithm - AES-256-CBC
- Если в конфиге сервера не указана опция auth SHA256, то по умолчанию используется SHA1 (160-bit)
Auth digest algorithm - SHA256
Hardware Crypto - BSD cryptodev engine - RSA, DSA, DH
- Если в конфиге сервера включена адаптивная компрессия, то
Compression - Enabled with Adaptive Compression
Topology - Subnet - One IP address per client a common subnet
# - Advanced Configuration
Verbosity level - 3
Далее проверяем статус клиента. Переходим в "Status" -> "OpenVPN" и если соединение установлено, то в Status будет написано "up". Также там можно узнать "Virtual Addres" и "Remote Host". Если соединение по каким-то причинам не установилось, то идем в "Status" -> "System Logs" -> "OpenVPN" и смотрим логи.
Interfaces:
Добавляем OpenVPN интерфейс.
Interfaces -> Interface Assignments
# - Available network ports:
Выбираем ovpnc1 (OVPN) и жмем +Add, Нажимаем на OPT и начинаем настраивать;
Enable - +
Description - OVPN
IPv4 Configuration Type - DHCP
- Save
Routing-Gateways:
Тут задается шлюз по умолчанию. С помощью этих настроек мы сможем перенаправить весь трафик через OpenVPN сервер в подсетях "LAN" и "WLAN".
Задаем шлюз по умолчанию:
Переходим в "System" -> "Routing" -> "Gateways".
В моем случае создалось два шлюза, "OVPN_DHCP" и "OVPN_VPNV6". Последний я отключил. Для отключения в "Actions" выбираем "Edit gateway" (изображение в виде карандаша), и ставим галочку напротив "Disable this gateway".
System -> Routing -> Gateways
# - Edit Gateway
Default Gateway - +
- Save
- Перезапустим сервис openvpn;
Status -> OpenVPN
Готово.
NAT и Firewall Rules:
NAT:
Теперь, чтобы pfSense мог транслировать ниши подсети во вне, займемся настройкой NAT. Скопируем необходимые правила и поменяем интерфейс на OVPN.
Firewall -> NAT -> Outbound
# - Outbound NAT Mode
Manual Outbound NAT rule generation.
(AON - Advanced Outbound NAT)
- Save
Копируем нижние правила.
- В Actions значек в виде x2-Квадратиков. Также прописываем новый Description;
# - Mappings
Auto created rule for ISAKMP - LAN to WAN
Auto created rule - LAN to WAN
- Тоже самое и для WLAN to WAN;
Auto created rule for ISAKMP - WLAN to WAN
Auto created rule - WLAN to WAN
- Применяем настройки;
Показать изображение:
Когда все настроено, можем смело переходить на любой сайт для проверки текущего IP-адреса.
Firewall Rules:
Теперь давайте сделаем, чтобы клиенты из подсети "LAN", выходили в интернет через провайдера, а клиенты из "WLAN", через OpenVPN.
System -> Routing -> Gateways -> OVPN_DHCP
# - Edit Gateway
И снимаем галочку с Default Gateway;
- Save
- Далее перезапустим OpenVPN сервис;
Status -> OpenVPN
Теперь редактируем правило, разрешающее прохождение трафика из WLAN в любую сеть.
Firewall -> Rules -> WLAN
# - Edit Firewall Rule
Action - Pass
Interface - WLAN
Address Family - IPv4
Protocol - Any
# - Source
Source - WLAN net
# - Destination
Destination - Any
# - Extra Options
Advanced Options - Display Advanced
- Указываем какой использовать шлюз;
Gateway - OVPN_DHCP
- Save
Для безопасности можем запретить клиентам из подсети "WLAN":
Ходить: в подсети "LAN" и "OVPN".
Firewall -> Rules -> WLAN
# - Edit Firewall Rule
Action - Block
Interface - WLAN
Address Family - IPv4
Protocol - Any
# - Source
Source - WLAN net
# - Destination
Source - LAN net
- Создаем такое же правило, но в Destination ставим OVPN net.
Перенаправим клиента из подсети "WLAN" c IP-адресом "192.168.1.130" через шлюз OpenVPN сервера.
Firewall -> Rules -> WLAN
# - Edit Firewall Rule
Action - Pass
Interface - WLAN
Address Family - IPv4
Protocol - Any
# - Source
Source - Single host or alias - 192.168.1.130
# - Destination
Destination - Any
# - Extra Options
Advanced Options - Display Advanced
Gateway - OVPN_DHCP
- Save
В подсети "LAN" на сайты из списка ходим через OpenVPN тунель, а на все остальные через провайдера. Для этого переходим настройки фаервола и добавляем алис.
Firewall -> Aliases -> IP
# - Properties
Name - ON_VPN
Description - Site to OVPN
Type - Host(s)
# - Host(s)
IP or FQDN - whoer.net
- 2ip.ru
- Save
И создаем правило для нашего алиса.
Firewall -> Rules -> LAN
# - Edit Firewall Rule
Action - Pass
Interface - LAN
Address Family - IPv4
Protocol - Any
# - Source
Source - LAN net
# - Destination
Destination - Single host or alias - ON_VPN
# - Extra Options - Advanced Options
Gateway - OVPN_DHCP
Готово.