# Сетевые рецепты pfSense - VLAN, прокси, IPv6

> Пошаговые сетевые рецепты pfSense - мультитенантная изоляция VLAN, прокси Squid с SSL, DNS sinkhole pfBlockerNG, зеркалирование трафика, PPPoE, IPv6

Source: https://opennix.org/docs/pfsense/recipes/pfsense-network-recipes/


В этом разделе собраны сетевые рецепты конфигурации pfSense: изоляция сегментов через VLAN, развертывание прокси-серверов, настройка DNS-фильтрации, зеркалирование трафика для систем обнаружения вторжений, конфигурация IPv6 и агрегация каналов.

Перед выполнением рецептов создайте резервную копию: **Diagnostics - Backup & Restore**. Базовые сведения о сетевых интерфейсах описаны в разделе [интерфейсы pfSense](/docs/pfsense/interfaces/).

## Мультитенантная изоляция сети через VLAN

VLAN позволяют разделить физическую сеть на изолированные логические сегменты. Это применяется в офисах с несколькими отделами, коворкингах и средах с арендаторами, которым необходим изолированный доступ к сети.

### Пошаговая настройка

1. Убедитесь, что управляемый коммутатор поддерживает 802.1Q и настроен trunk-порт к pfSense

2. Перейдите в **Interfaces - VLANs** и создайте VLAN для каждого тенанта:
   - **Parent Interface** - физический интерфейс, подключенный к коммутатору (например, igb1)
   - **VLAN Tag** - уникальный идентификатор (например, 100 для Tenant A, 200 для Tenant B)
   - **Description** - Tenant_A, Tenant_B

3. Перейдите в **Interfaces - Assign** и назначьте каждый VLAN как отдельный интерфейс

4. Настройте каждый интерфейс:
   - **IPv4 Configuration Type** - Static IPv4
   - **IPv4 Address** - уникальная подсеть (10.100.0.1/24 для Tenant A, 10.200.0.1/24 для Tenant B)

5. Настройте DHCP для каждого VLAN: **Services - DHCP Server** - выберите интерфейс тенанта

6. Создайте правила изоляции на каждом интерфейсе тенанта:

```
# Блокировка трафика между тенантами
Action: Block
Interface: Tenant_A
Source: Tenant_A net
Destination: Tenant_B net

# Разрешение доступа в интернет
Action: Pass
Interface: Tenant_A
Source: Tenant_A net
Destination: any
```

7. Повторите правила для каждого тенанта, блокируя доступ ко всем остальным сегментам

8. На управляемом коммутаторе настройте access-порты для каждого VLAN

Подробности настройки VLAN описаны в разделе [VLAN pfSense](/docs/pfsense/vlans/).

## Прозрачный прокси Squid с SSL-инспекцией

Squid в прозрачном режиме перехватывает HTTP/HTTPS-трафик без настройки прокси на клиентах. SSL-инспекция позволяет фильтровать зашифрованный трафик, но требует распространения корневого сертификата на клиентские устройства.

### Пошаговая настройка

1. Установите пакет Squid: **System - Package Manager - Available Packages - squid**

2. Создайте внутренний CA для SSL-инспекции:
   - Перейдите в **System - Cert Manager - CAs**
   - Нажмите **Add** и создайте новый CA:
     - **Method** - Create an internal Certificate Authority
     - **Common Name** - Squid Proxy CA
     - **Key type** - RSA, 2048 bit

3. Перейдите в **Services - Squid Proxy Server - General**:
   - **Enable Squid Proxy** - включить
   - **Proxy Interface** - LAN
   - **Proxy Port** - 3128
   - **Transparent HTTP Proxy** - включить
   - **HTTPS/SSL Interception** - включить
   - **SSL/MITM Mode** - Splice All (для минимального вмешательства) или Bump All (для полной инспекции)
   - **CA** - выберите созданный Squid Proxy CA
   - **SSL Proxy Port** - 3129

4. Перейдите в **Services - Squid Proxy Server - ACLs** и настройте списки доступа:
   - **Allowed Subnets** - 192.168.1.0/24
   - **Blacklist** - при необходимости добавьте запрещенные домены

5. Экспортируйте CA-сертификат и распространите на клиентские устройства:
   - **System - Cert Manager - CAs** - экспортируйте сертификат CA
   - Установите в доверенные корневые сертификаты на каждом клиенте (через GPO для Windows-домена)

6. Перейдите в **Services - Squid Proxy Server - Real Time** для мониторинга трафика

> **Предупреждение**: SSL-инспекция является формой MITM-атаки. Необходимо уведомить пользователей и получить согласие (в корпоративной среде - через политику использования). Некоторые приложения с certificate pinning перестанут работать через прокси.

## DNS Sinkhole с pfBlockerNG DNSBL

pfBlockerNG в режиме DNSBL перехватывает DNS-запросы к вредоносным и рекламным доменам, возвращая пустой ответ вместо реального IP. Аналог Pi-hole, встроенный в pfSense.

### Пошаговая настройка

1. Установите пакет: **System - Package Manager - Available Packages - pfBlockerNG-devel**

2. Перейдите в **Firewall - pfBlockerNG - General**:
   - **Enable pfBlockerNG** - включить
   - **Keep Settings** - включить

3. Перейдите в **Firewall - pfBlockerNG - DNSBL**:
   - **Enable DNSBL** - включить
   - **DNSBL Mode** - Unbound python mode (рекомендуется)
   - **DNSBL Virtual IP** - 10.10.10.1 (виртуальный IP для блокировки)
   - **DNSBL Listening Port** - 8081
   - **DNSBL SSL Listening Port** - 8443

4. Перейдите во вкладку **DNSBL Feeds** и добавьте списки блокировки:

| Название | URL | Категория |
|---|---|---|
| EasyList | https://easylist.to/easylist/easylist.txt | Реклама |
| Steven Black Hosts | https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts | Реклама + Вредоносные |
| Malware Domain List | https://www.malwaredomainlist.com/hostslist/hosts.txt | Вредоносные |

5. Для каждого фида настройте:
   - **Action** - Unbound
   - **Update Frequency** - Every 1 hour или Once a day

6. Перейдите в **Firewall - pfBlockerNG - Update** и нажмите **Run** для первоначальной загрузки списков

7. Убедитесь, что [перенаправление DNS](/docs/pfsense/recipes/pfsense-common-recipes/) настроено для предотвращения обхода DNSBL клиентами

8. Мониторинг блокировок: **Firewall - pfBlockerNG - Reports - DNSBL**

## Зеркалирование трафика для IDS

Зеркалирование (port mirroring/SPAN) копирует трафик с одного интерфейса на другой для анализа системами обнаружения вторжений (Suricata, Snort) без влияния на производительность основного трафика.

### Пошаговая настройка

1. Подключите выделенный сетевой интерфейс к pfSense для зеркалирования (например, igb2)

2. Назначьте интерфейс: **Interfaces - Assign** - добавьте igb2 как SPAN

3. Включите интерфейс без IP-адреса:
   - **IPv4 Configuration Type** - None
   - **IPv6 Configuration Type** - None

4. Настройте зеркалирование через оболочку pfSense (SSH или консоль):

```bash
ifconfig igb2 promisc up
```

5. Для постоянной конфигурации добавьте в **System - Advanced - System Tunables** или через shellcmd:

```
/sbin/ifconfig igb2 promisc up
```

6. Настройте мост для зеркалирования:
   - Перейдите в **Interfaces - Bridges**
   - Создайте мост с параметром **SPAN Port** - выберите интерфейс-источник (LAN или WAN)
   - **SPAN Port** будет копировать весь трафик на выбранный интерфейс

7. Альтернативно используйте управляемый коммутатор:
   - Настройте SPAN/mirror session на коммутаторе
   - Направьте зеркальный трафик на порт pfSense с подключенным IDS (например, Suricata)

8. Установите Suricata или Snort на pfSense и привяжите к интерфейсу SPAN для анализа

Дополнительные сведения о безопасности описаны в разделе [рецепты безопасности](/docs/pfsense/recipes/pfsense-security-recipes/).

## PPPoE-сервер для провайдеров и WISP

pfSense может выступать PPPoE-сервером для предоставления интернет-доступа абонентам. Используется интернет-провайдерами и беспроводными провайдерами (WISP).

### Пошаговая настройка

1. Перейдите в **Services - PPPoE Server**

2. Нажмите **Add** и настройте:
   - **Interface** - интерфейс, обращенный к абонентам (например, LAN или выделенный OPT)
   - **Total User Count** - максимальное количество абонентов
   - **User Subnet** - подсеть для абонентских IP (например, 10.10.0.0/16)
   - **Server Address** - IP pfSense в абонентской подсети (10.10.0.1)
   - **Remote Address Range** - начальный IP для абонентов (10.10.0.2)
   - **DNS Servers** - IP DNS-серверов для абонентов
   - **RADIUS** - для учета и аутентификации настройте RADIUS-сервер (FreeRADIUS)

3. Создайте локальных пользователей PPPoE (или используйте RADIUS):
   - **System - User Manager** - добавьте пользователей
   - Или установите пакет FreeRADIUS для централизованного управления

4. Настройте правила файрвола на PPPoE-интерфейсе:

```
Action: Pass
Interface: PPPoE
Source: PPPoE_net
Destination: any
```

5. Настройте [NAT](/docs/pfsense/nat/) для трансляции абонентских адресов в WAN

6. Для ограничения скорости используйте **Firewall - Traffic Shaper** или limiters

## Маршрутизация публичных IP-подсетей

Сценарий: провайдер выделил блок публичных IP, которые необходимо направить на внутренние серверы без NAT (прямая маршрутизация).

### Пошаговая настройка

1. Согласуйте с провайдером маршрутизацию блока IP через WAN-адрес pfSense

2. Перейдите в **Firewall - Virtual IPs** и добавьте адреса блока:
   - **Type** - IP Alias или Other
   - **Interface** - WAN
   - Добавьте каждый IP из блока

3. Если серверы находятся в отдельной подсети (например, DMZ):
   - Назначьте публичные IP непосредственно серверам
   - На интерфейсе DMZ pfSense настройте gateway для публичной подсети

4. Настройте статические маршруты при необходимости: **System - Routing - Static Routes**

5. Создайте правила файрвола для разрешения входящего трафика к публичным IP серверов

6. Если серверы используют приватные IP, настройте NAT 1:1: **Firewall - NAT - 1:1**

Описание работы с NAT приведено в разделе [NAT pfSense](/docs/pfsense/nat/).

## IPv6 Tunnel Broker (Hurricane Electric)

Hurricane Electric предоставляет бесплатные IPv6-туннели для получения IPv6-связности через IPv4-инфраструктуру. pfSense поддерживает настройку GIF-туннелей для подключения к HE.

### Пошаговая настройка

1. Зарегистрируйтесь на tunnelbroker.net и создайте туннель:
   - Укажите публичный IPv4-адрес pfSense WAN
   - Запишите:
     - Server IPv4 Address
     - Server IPv6 Address
     - Client IPv6 Address
     - Routed /48 или /64 prefix

2. На pfSense перейдите в **Interfaces - GIFs** и создайте GIF-туннель:
   - **Parent Interface** - WAN
   - **GIF Remote Address** - Server IPv4 Address от HE
   - **GIF tunnel local address** - Client IPv6 Address
   - **GIF tunnel remote address** - Server IPv6 Address
   - **Route caching** - отключить

3. Перейдите в **Interfaces - Assign** и назначьте GIF-туннель как новый интерфейс (HE_IPv6)

4. Настройте интерфейс:
   - **IPv6 Configuration Type** - Static IPv6
   - **IPv6 Address** - Client IPv6 Address /128 (уже настроено через GIF)

5. Перейдите в **System - Routing - Gateways** и добавьте шлюз IPv6:
   - **Interface** - HE_IPv6
   - **Gateway** - Server IPv6 Address

6. Настройте LAN для раздачи IPv6:
   - Перейдите в **Interfaces - LAN**
   - **IPv6 Configuration Type** - Static IPv6
   - **IPv6 Address** - первый адрес из Routed /64 prefix

7. Включите раздачу IPv6 через Router Advertisements:
   - **Services - Router Advertisements - LAN**
   - **Router Mode** - Assisted или Unmanaged
   - **Router Priority** - Normal

8. Перейдите в **System - Routing** и установите шлюз IPv6 по умолчанию

## Dual-Stack IPv4+IPv6

Dual-stack обеспечивает одновременную работу IPv4 и IPv6 на всех интерфейсах. Клиенты получают адреса обоих стеков и используют предпочтительный протокол для каждого соединения.

### Пошаговая настройка

1. Убедитесь, что провайдер предоставляет IPv6-подключение (native или через DHCPv6-PD)

2. Настройте WAN для получения IPv6:
   - Перейдите в **Interfaces - WAN**
   - **IPv6 Configuration Type** - DHCPv6
   - **DHCPv6 Prefix Delegation Size** - выберите размер делегированного префикса (обычно /56 или /48)
   - **Send IPv6 prefix hint** - включить
   - **Do not wait for a RA** - включить (при необходимости)

3. Настройте LAN для раздачи IPv6:
   - Перейдите в **Interfaces - LAN**
   - **IPv6 Configuration Type** - Track Interface
   - **IPv6 Interface** - WAN
   - **IPv6 Prefix ID** - 0

4. Настройте Router Advertisements: **Services - Router Advertisements - LAN**
   - **Router Mode** - Assisted (SLAAC + DHCPv6)

5. Настройте DHCPv6 при необходимости: **Services - DHCPv6 Server & RA - LAN**

6. Убедитесь, что правила файрвола учитывают IPv6-трафик:
   - Создайте правила на LAN для IPv6 аналогично IPv4
   - По умолчанию pfSense блокирует входящий IPv6-трафик на WAN

7. Протестируйте dual-stack: откройте test-ipv6.com с клиентского устройства

Дополнительные сведения о настройке IPv6 описаны в разделе [IPv6 pfSense](/docs/pfsense/ipv6/).

## LAGG-бондинг для высокодоступных каналов

LAGG (Link Aggregation) объединяет несколько физических интерфейсов в один логический канал для увеличения пропускной способности и обеспечения отказоустойчивости.

### Пошаговая настройка

1. Убедитесь, что коммутатор поддерживает LACP (802.3ad) и настроены соответствующие порты

2. Перейдите в **Interfaces - LAGGs** и нажмите **Add**:
   - **Parent Interfaces** - выберите два или более интерфейса (например, igb0, igb1)
   - **LAGG Protocol**:
     - **LACP** - IEEE 802.3ad, требует поддержки на коммутаторе (рекомендуется)
     - **Failover** - активный/пассивный, не требует поддержки на коммутаторе
     - **Loadbalance** - балансировка нагрузки
     - **Roundrobin** - циклический
   - **Description** - LAGG_WAN или LAGG_LAN

3. Перейдите в **Interfaces - Assign** и назначьте LAGG как интерфейс (вместо отдельных физических)

4. Настройте IP-адрес на LAGG-интерфейсе

5. Удалите назначения с исходных физических интерфейсов (они теперь члены LAGG)

6. На коммутаторе настройте LACP port-channel на соответствующих портах

7. Проверьте состояние LAGG: **Status - Interfaces** или через консоль:

```bash
ifconfig lagg0
```

8. Протестируйте отказоустойчивость: отключите один кабель и убедитесь, что связность сохраняется

> **Важно**: при использовании LACP оба конца (pfSense и коммутатор) должны быть настроены на LACP. Несогласованный протокол приведет к потере связности. В режиме Failover коммутатор не требует специальной настройки.

