# Алиасы pfSense - группировка адресов, сетей и портов

> Алиасы в pfSense - создание и использование групп хостов, сетей, портов и URL-таблиц для упрощения правил файрвола и NAT

Source: https://opennix.org/docs/pfsense/firewall/pfsense-firewall-aliases/


Алиасы в pfSense представляют собой именованные группы IP-адресов, сетей, портов или URL-адресов, которые используются в правилах файрвола, NAT и других компонентах системы вместо указания каждого значения по отдельности. Применение алиасов устраняет дублирование данных в правилах (принцип DRY - Don't Repeat Yourself): при изменении списка адресов достаточно обновить алиас, а не каждое правило, в котором он используется. Это существенно упрощает администрирование, снижает вероятность ошибок и делает набор правил самодокументируемым.

## Типы алиасов

pfSense поддерживает несколько типов алиасов, каждый из которых предназначен для определённой категории данных. Управление алиасами выполняется через меню **Firewall > Aliases**.

### Host

Алиас типа Host содержит отдельные IP-адреса или полные доменные имена (FQDN). При сохранении алиаса pfSense разрешает FQDN-записи через DNS и добавляет полученные IP-адреса в таблицу. Диапазоны адресов и подсети автоматически конвертируются в список отдельных IP-адресов.

**Типичное применение:** группировка серверов мониторинга, почтовых серверов провайдера или IP-адресов администраторов для создания единого правила доступа.

**Пример записей:**

| Запись | Описание |
|---|---|
| `10.0.1.10` | Сервер мониторинга |
| `10.0.1.11` | Резервный сервер мониторинга |
| `monitor.example.com` | FQDN сервера мониторинга |

> **Внимание**:
>
> При использовании FQDN в алиасе типа Host pfSense выполняет DNS-запрос при сохранении и периодически обновляет результат. Если DNS-сервер недоступен или возвращает устаревшие записи, алиас будет содержать некорректные адреса. Для критически важных правил рекомендуется использовать статические IP-адреса.

### Network

Алиас типа Network содержит подсети в нотации CIDR. Этот тип подходит для указания целых сетей или диапазонов адресов. pfSense автоматически конвертирует произвольные диапазоны IPv4 в эквивалентные CIDR-сети.

**Типичное применение:** определение внутренних подсетей организации, списков доверенных сетей партнёров или блокировка географических диапазонов.

**Пример записей:**

| Запись | Маска | Описание |
|---|---|---|
| `192.168.10.0` | `/24` | Подсеть отдела разработки |
| `192.168.20.0` | `/24` | Подсеть бухгалтерии |
| `10.0.0.0` | `/8` | Все внутренние сети |

Для указания одиночного хоста в алиасе типа Network используется маска `/32` (IPv4) или `/128` (IPv6).

### Port

Алиас типа Port содержит номера портов или диапазоны портов. Допустимые значения - целые числа от 1 до 65535. Диапазоны указываются через двоеточие (например, `1194:1199`).

**Типичное применение:** группировка портов веб-сервисов (80, 443, 8080), портов управления (22, 3389, 5900) или портов баз данных (3306, 5432, 27017).

**Пример записей:**

| Запись | Описание |
|---|---|
| `80` | HTTP |
| `443` | HTTPS |
| `8080:8089` | Альтернативные HTTP-порты |

> **Внимание**:
>
> Алиасы портов не привязаны к конкретному протоколу. Один алиас может использоваться как в правилах TCP, так и в правилах UDP. Протокол определяется в самом правиле файрвола, а не в алиасе.

### URL

Алиас типа URL загружает список записей с одного или нескольких URL-адресов **однократно** - в момент создания или сохранения алиаса. После загрузки данные сохраняются локально и не обновляются автоматически. Каждый URL может содержать до 3000 записей.

Существуют два подтипа:

- **URL (IPs)** - URL содержит IP-адреса, сети в CIDR-нотации или FQDN; создаётся алиас сетевого типа
- **URL (Ports)** - URL содержит номера портов или диапазоны; создаётся алиас портового типа

**Типичное применение:** разовая загрузка списка адресов из корпоративной системы управления или из файла на внутреннем веб-сервере.

### URL Table

Алиас типа URL Table аналогичен URL, но поддерживает автоматическое периодическое обновление и предназначен для работы с большими списками (тысячи и десятки тысяч записей). Данные хранятся в файловых таблицах pf, что обеспечивает эффективную работу с объёмными наборами данных.

Существуют два подтипа:

- **URL Table (IPs)** - загружает IP-адреса, сети и FQDN
- **URL Table (Ports)** - загружает номера портов и диапазоны

**Типичное применение:** подключение внешних списков блокировки (Spamhaus DROP, DSHIELD, Emerging Threats), списков Tor-узлов или географических списков IP-адресов.

## Создание алиаса

Процесс создания алиаса выполняется через веб-интерфейс pfSense.

### Пошаговая процедура

1. Перейти в меню **Firewall > Aliases**

![Список алиасов pfSense](/img/pfsense/pfsense-aliases-list.webp)

<p style="text-align: center;">Рис. 1. Главный экран Firewall > Aliases со списком существующих алиасов</p>

2. Выбрать соответствующую вкладку: **IP** (для алиасов типа Host и Network), **Ports** (для портовых алиасов) или **URLs** (для URL и URL Table)

3. Нажать кнопку **Add** для создания нового алиаса

4. Заполнить обязательные поля:

| Поле | Описание |
|---|---|
| **Name** | Имя алиаса. Допустимые символы: `a-z`, `A-Z`, `0-9`, `_`. Имя не должно совпадать с зарезервированными именами (имена интерфейсов, шлюзов) |
| **Description** | Описание назначения алиаса (необязательно, но настоятельно рекомендуется) |
| **Type** | Тип алиаса: Host, Network, Port, URL (IPs), URL (Ports), URL Table (IPs), URL Table (Ports) |

5. Добавить записи. Для каждой записи доступно поле значения и поле описания. Кнопка **Add** добавляет новую строку, кнопка **Delete** удаляет строку

![Редактирование алиаса типа Host](/img/pfsense/pfsense-alias-edit-host.webp)

<p style="text-align: center;">Рис. 2. Редактирование алиаса типа Host с указанием IP-адресов и описаний</p>

6. Нажать **Save** для сохранения алиаса

7. Нажать **Apply Changes** на странице списка алиасов для применения изменений

### Требования к именам алиасов

Имя алиаса должно соответствовать следующим правилам:

- Содержать только латинские буквы, цифры и символ подчёркивания
- Не начинаться с цифры
- Не совпадать с именами интерфейсов (WAN, LAN, OPT1 и т. д.)
- Не совпадать с именами шлюзов
- Не совпадать с зарезервированными словами pf

Рекомендуется использовать информативные имена, отражающие назначение алиаса: `Web_Servers`, `Management_Ports`, `Blocked_Countries`, `RFC1918_Networks`.

### Массовый импорт

Для добавления большого количества записей предусмотрена функция массового импорта:

1. Перейти в **Firewall > Aliases**
2. Выбрать вкладку **IP** или **Ports**
3. Нажать кнопку **Import**
4. Указать имя и описание алиаса
5. Вставить записи в текстовое поле (по одной записи на строку)
6. Нажать **Save**

Ограничение: алиасы, созданные вручную (включая массовый импорт), поддерживают до 5000 записей. Для более объёмных списков следует использовать алиасы типа URL Table.

## Вложенные алиасы

pfSense поддерживает вложенные алиасы - алиасы, которые ссылаются на другие алиасы. Эта функция позволяет строить иерархические структуры группировки.

**Пример:** алиас `All_Servers` может содержать ссылки на алиасы `Web_Servers`, `DB_Servers` и `Mail_Servers`. При изменении состава любого из вложенных алиасов родительский алиас автоматически отражает изменения.

Для создания вложенного алиаса достаточно указать имя существующего алиаса в поле записи. pfSense распознает вложенность автоматически и подставит содержимое дочернего алиаса.

**Практический сценарий:**

```
Alias: Web_Servers
  - 10.0.1.10  (Frontend)
  - 10.0.1.11  (Backend API)

Alias: DB_Servers
  - 10.0.2.10  (PostgreSQL primary)
  - 10.0.2.11  (PostgreSQL replica)

Alias: All_Application_Servers
  - Web_Servers    (nested alias)
  - DB_Servers     (nested alias)
```

В правиле файрвола, ссылающемся на `All_Application_Servers`, будут учтены все четыре IP-адреса из обоих вложенных алиасов.

> **Внимание**:
>
> Вложенные алиасы должны быть одного типа. Нельзя вложить алиас портов в алиас хостов. Циклические ссылки (алиас A ссылается на B, а B ссылается на A) недопустимы и приведут к ошибке при сохранении.

## URL-таблицы

URL-таблицы (URL Table) - наиболее мощный тип алиаса для интеграции с внешними источниками данных об угрозах. Они позволяют автоматически загружать и обновлять большие списки IP-адресов или портов из внешних источников.

### Настройка URL-таблицы

1. Перейти в **Firewall > Aliases**, вкладка **URLs**
2. Нажать **Add**
3. Установить тип **URL Table (IPs)**
4. В поле записи указать URL источника данных
5. Установить интервал обновления в днях (поле **Update Freq.**)
6. Нажать **Save**, затем **Apply Changes**

![Настройка алиаса URL Table](/img/pfsense/pfsense-alias-edit-url.webp)

<p style="text-align: center;">Рис. 3. Настройка алиаса типа URL Table с указанием внешнего URL и интервала обновления</p>

### Популярные источники блокировок

| Источник | URL | Описание |
|---|---|---|
| Spamhaus DROP | `https://www.spamhaus.org/drop/drop.txt` | Hijacked IP-пространства, не используемые легитимными организациями |
| Spamhaus EDROP | `https://www.spamhaus.org/drop/edrop.txt` | Расширенный список DROP |
| DSHIELD | `https://feeds.dshield.org/block.txt` | Наиболее активные атакующие подсети за последние 3 дня |
| Emerging Threats | `https://rules.emergingthreats.net/fwrules/emerging-Block-IPs.txt` | Агрегированный список вредоносных IP-адресов |
| Abuse.ch Feodo Tracker | `https://feodotracker.abuse.ch/downloads/ipblocklist.txt` | C2-серверы банковских троянов |

### Интервал обновления

Интервал обновления задаётся в днях. Значение `1` означает ежедневное обновление. Для большинства списков блокировки рекомендуется интервал от 1 до 7 дней в зависимости от частоты обновления источника.

pfSense проверяет и загружает обновления в фоновом режиме. Обновление не влияет на работу файрвола - новые данные загружаются во временный файл и подменяются атомарно.

### Формат файла источника

Файл, доступный по указанному URL, должен содержать записи в текстовом формате - по одной записи на строку. Допустимые форматы строк:

- IP-адрес: `192.168.1.1`
- Подсеть в CIDR: `192.168.1.0/24`
- Строки, начинающиеся с `#` или `;`, игнорируются как комментарии

## Использование алиасов в правилах

Алиасы применяются в полях источника (Source), назначения (Destination) и порта (Port) при создании правил файрвола, NAT и проброса портов.

### Выбор алиаса в правиле

При создании или редактировании правила файрвола:

1. В поле **Source** или **Destination** выбрать тип **Single host or alias**
2. В текстовом поле начать вводить имя алиаса - pfSense отобразит список совпадений (автодополнение)
3. Выбрать нужный алиас из выпадающего списка

Для порта:

1. В поле **Destination Port Range** или **Source Port Range** выбрать тип **Other**
2. Начать вводить имя портового алиаса
3. Выбрать алиас из списка автодополнения

Автодополнение фильтрует алиасы по типу: в сетевых полях отображаются только алиасы хостов и сетей, в полях портов - только алиасы портов.

### Визуальная проверка

На странице **Firewall > Rules** при наведении курсора на имя алиаса в правиле отображается всплывающая подсказка с полным содержимым алиаса. Это позволяет быстро проверить, какие адреса или порты входят в группу, без перехода к редактированию алиаса.

### Пример набора правил с алиасами

Типичный набор правил для LAN-интерфейса с использованием алиасов:

| # | Действие | Источник | Назначение | Порт | Описание |
|---|---|---|---|---|---|
| 1 | Pass | `Admin_PCs` | `Mgmt_Servers` | `Mgmt_Ports` | Доступ администраторов к управлению |
| 2 | Pass | `LAN net` | `DNS_Servers` | 53 | DNS-запросы |
| 3 | Pass | `LAN net` | any | `Web_Ports` | Веб-доступ |
| 4 | Block | `LAN net` | `Blocked_IPs` | any | Блокировка вредоносных адресов |

Без алиасов каждая строка потребовала бы нескольких правил для каждого отдельного адреса и порта. Алиасы сокращают набор правил и делают его читаемым.

## Миграция с других платформ

При переходе на pfSense с другого межсетевого экрана существующие группы объектов необходимо преобразовать в алиасы. Ниже приведено соответствие концепций.

### Cisco ASA

| Cisco ASA | pfSense | Примечания |
|---|---|---|
| `object-group network` | Алиас типа Network или Host | Прямое соответствие |
| `object-group service` | Алиас типа Port | В ASA объединяет порт и протокол; в pfSense протокол задаётся в правиле |
| `object network` (единичный) | Запись в алиасе | В pfSense нет отдельного объекта для единичного хоста - используется запись в алиасе |
| Вложенные object-group | Вложенные алиасы | Поддерживается |

**Пример миграции:**

Cisco ASA:
```
object-group network Web_Servers
 network-object host 10.0.1.10
 network-object host 10.0.1.11
 network-object host 10.0.1.12

object-group service Web_Ports tcp
 port-object eq www
 port-object eq https
 port-object eq 8080
```

pfSense: создать алиас `Web_Servers` типа Host с записями `10.0.1.10`, `10.0.1.11`, `10.0.1.12` и алиас `Web_Ports` типа Port с записями `80`, `443`, `8080`.

### Fortinet FortiGate

| FortiGate | pfSense | Примечания |
|---|---|---|
| Address Object | Запись в алиасе Host или Network | Единичный объект - аналог одной записи в алиасе |
| Address Group | Алиас типа Host или Network | Группа - прямой аналог алиаса |
| Service Object | Запись в алиасе Port | Объект сервиса включает протокол; в pfSense протокол задаётся в правиле |
| Service Group | Алиас типа Port | Прямое соответствие |
| External Threat Feed | Алиас типа URL Table | Функционально эквивалентны |
| ISDB (Internet Service Database) | Нет прямого аналога | Требуется ручное создание алиасов с IP-адресами сервисов |

### MikroTik RouterOS

| MikroTik | pfSense | Примечания |
|---|---|---|
| `/ip firewall address-list` | Алиас типа Host или Network | Прямое соответствие. В MikroTik один address-list может содержать записи с таймаутом - в pfSense таймаут не поддерживается |
| Множественные address-list с одним именем | Один алиас с несколькими записями | В MikroTik записи добавляются отдельными командами; в pfSense - в одном алиасе |
| Динамические записи (добавленные скриптами) | Алиас типа URL Table | Для динамических списков из внешних источников |

**Пример миграции с MikroTik:**

MikroTik:
```
/ip firewall address-list
add address=10.0.1.0/24 list=trusted_networks comment="Office"
add address=10.0.2.0/24 list=trusted_networks comment="VPN"
add address=172.16.0.0/12 list=trusted_networks comment="Partners"
```

pfSense: создать алиас `Trusted_Networks` типа Network с записями `10.0.1.0/24`, `10.0.2.0/24`, `172.16.0.0/12`.

## Устранение неполадок

### Алиас не разрешается или содержит неверные адреса

**Симптомы:** правило файрвола с алиасом не работает; на странице **Diagnostics > Tables** алиас пуст или содержит неожиданные IP-адреса.

**Возможные причины и решения:**

1. **FQDN не разрешается.** Проверить доступность DNS-сервера, настроенного в pfSense (**System > General Setup > DNS Servers**). Выполнить тестовый запрос через **Diagnostics > DNS Lookup**. Если DNS-сервер недоступен, алиас с FQDN-записями будет пустым.

2. **DNS-кэширование.** pfSense кэширует DNS-ответы. Если IP-адрес хоста изменился, обновление в алиасе произойдёт после истечения TTL записи. Для принудительного обновления - пересохранить алиас и нажать **Apply Changes**.

3. **Имя алиаса совпадает с зарезервированным словом.** Проверить, что имя не конфликтует с именами интерфейсов, шлюзов или встроенных таблиц pf. Переименовать алиас при необходимости.

### URL-таблица не обновляется

**Симптомы:** алиас типа URL Table содержит устаревшие данные; внешний источник обновился, но pfSense не загрузил новую версию.

**Возможные причины и решения:**

1. **URL недоступен.** Проверить доступность URL через **Diagnostics > Command Prompt**, выполнив `fetch -o /dev/null <URL>`. Убедиться, что правила файрвола на WAN-интерфейсе не блокируют исходящие HTTPS-соединения.

2. **Некорректный формат файла.** Файл по URL должен содержать записи в текстовом формате (по одной на строку). HTML-страницы, JSON или XML не поддерживаются. Проверить содержимое файла вручную.

3. **Интервал обновления не наступил.** pfSense проверяет URL с интервалом, указанным в поле **Update Freq.** (в днях). Для принудительного обновления - пересохранить алиас.

4. **Ошибка TLS-сертификата.** Если URL использует HTTPS с самоподписанным сертификатом, загрузка может завершиться ошибкой. Проверить журналы в **Status > System Logs > System > General**.

### Алиасы с FQDN и проблемы DNS

При использовании доменных имён в алиасах необходимо учитывать следующие особенности:

- pfSense разрешает FQDN через настроенные DNS-серверы. Если DNS-серверы настроены на использование DNS через WAN-интерфейс, а правила WAN блокируют исходящий DNS - разрешение не выполнится.
- Запись DNS может возвращать несколько IP-адресов (round-robin). pfSense добавит все полученные адреса в алиас.
- Изменение IP-адреса, на который указывает FQDN, не отражается в алиасе мгновенно. Обновление происходит при переприменении конфигурации или по таймеру (интервал зависит от TTL DNS-записи и настроек pfSense).
- В алиасе типа Network при указании FQDN маска CIDR к полученным адресам **не применяется** - используется маска `/32` (для IPv4) или `/128` (для IPv6) вне зависимости от указанной маски.

### Проверка содержимого алиаса

Для просмотра текущего содержимого алиаса (разрешённые IP-адреса, загруженные записи):

1. Перейти в **Diagnostics > Tables**
2. Выбрать имя алиаса из выпадающего списка
3. Просмотреть список записей, входящих в таблицу

Альтернативный способ - через командную строку:

```bash
pfctl -t <alias_name> -T show
```

Эта команда выводит все IP-адреса, входящие в указанный алиас, в формате таблицы pf.

## Связанные разделы

- [Файрвол pfSense - правила, алиасы и фильтрация трафика](/docs/pfsense/firewall/) - обзор архитектуры файрвола, принципы обработки правил и общая структура раздела
- [Правила файрвола](/docs/pfsense/firewall/pfsense-firewall-rules/) - создание и управление правилами фильтрации, в которых применяются алиасы
- [Лучшие практики файрвола](/docs/pfsense/firewall/pfsense-firewall-best-practices/) - рекомендации по организации правил и алиасов для эффективного управления политикой безопасности

