Align firewall examples with symmetric destination filtering
This commit is contained in:
1 parent
2a2a0ee267
commit
4f627bddff
3 files changed
+17
-7
No files matched your search
+9
-3
@@ -153,10 +153,14 @@ general=info # общая информация
|
||||
```ini
|
||||
[firewall]
|
||||
allow=all # разрешить всё (bypass)
|
||||
allow=192.168.1.0/24 # разрешить подсеть
|
||||
allow=192.168.1.10 # разрешить весь IP
|
||||
allow=10.0.0.1:80 # разрешить конкретный IP:порт
|
||||
```
|
||||
|
||||
Фильтр основного TUN проверяет IP и TCP/UDP-порт назначения одинаково в обоих направлениях.
|
||||
Без разрешений весь трафик этого интерфейса запрещён; ответы требуют отдельных разрешений.
|
||||
CIDR-подсети не поддерживаются. Ошибочное правило отменяет загрузку нового конфига.
|
||||
|
||||
### 3.7. `[nat]` — EIM NAT
|
||||
|
||||
```ini
|
||||
@@ -553,11 +557,13 @@ dump=trace
|
||||
```ini
|
||||
[firewall]
|
||||
allow=all # всё разрешено
|
||||
allow=10.0.0.0/8 # разрешить подсеть
|
||||
allow=10.0.0.5 # разрешить весь IP
|
||||
allow=192.168.1.5:22 # разрешить IP:порт
|
||||
```
|
||||
|
||||
По умолчанию без секции `[firewall]` — фильтрация выключена.
|
||||
Без секции `[firewall]` весь входящий и исходящий трафик основного TUN запрещён.
|
||||
`allow=IP` и `allow=IP:0` разрешают все протоколы IP; `allow=IP:port` — TCP/UDP указанного порта.
|
||||
Для фрагментов IPv4 нужен весь IP либо `allow=all`. NAT и прокси используют отдельные TUN интерфейсы.
|
||||
|
||||
### 7.3. Проброс портов
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ free_config(cfg);
|
||||
| `[client:name]` | `parse_client()` | `link` (формат: `server_name:ip:port`), `peer_public_key`, `keepalive` |
|
||||
| `[network:name]` | `parse_network()` | `id` (hex), `pubkey`, `signing_key` |
|
||||
| `[routing]` | inline | `route_subnet`, `my_subnet` |
|
||||
| `[firewall]` | `parse_firewall_rule()` | `allow` (IP:port или `all` для bypass) |
|
||||
| `[firewall]` | `parse_firewall_rule()` | `allow=IPv4[:port]` или `allow=all`; порт 0–65535, 0 разрешает весь IP; CIDR запрещён |
|
||||
| `[control]` | `parse_control()` | `ip`, `port`, `allow` (подсеть) |
|
||||
| `[allowed_keys]` | inline | `allow_all`, `key` (64 hex) |
|
||||
| `[nat]` | `parse_nat()` | `tun_ifname`, `tun_ip`, `nat_via`, `port_start`, `port_end`, `forward` (proto:ip:in_port:ext_port) |
|
||||
@@ -98,6 +98,6 @@ free_config(cfg);
|
||||
| `parse_sockaddr(addr, port, sockaddr)` | Преобразует адрес+порт в `sockaddr_storage` через `getaddrinfo` |
|
||||
| `parse_address_and_port(str, sockaddr)` | Разбирает строку `ip:port` → вызов `parse_sockaddr` |
|
||||
| `get_netif_index(ifname)` | Получает индекс сетевого интерфейса через `if_nametoindex` |
|
||||
| `parse_firewall_rule(rule_str, global)` | Парсит `allow=IP[:port]` или `all` |
|
||||
| `parse_firewall_rule(rule_str, global)` | Строго разбирает `allow=IPv4[:port]` или `all`; ошибка/неизвестная опция firewall отменяет весь новый конфиг |
|
||||
| `parse_control_allow(rule_str, global)` | Парсит `allow=IP[/CIDR]` |
|
||||
| `config_ini_hex(hex_str, binary, len)` | Общий INI-код: проверяет весь HEX до декодирования |
|
||||
@@ -154,13 +154,17 @@ my_subnet=10.23.1.0/24
|
||||
|---|---|
|
||||
| `allow` | `all` — разрешить всё. Или `IP` / `IP:port` (можно несколько) |
|
||||
|
||||
По умолчанию: deny all (если нет allow=all).
|
||||
Основной TUN проверяется в обе стороны одинаково по IPv4 и TCP/UDP-порту назначения.
|
||||
По умолчанию всё запрещено, включая отсутствие секции. Ответные пакеты требуют своих разрешений.
|
||||
`allow=IP` или `allow=IP:0` разрешает весь IP, включая ICMP и фрагменты IPv4; правило порта фрагменты не разрешает.
|
||||
CIDR-подсети не поддерживаются. Ошибочная опция или правило отменяет загрузку нового конфига.
|
||||
Отдельные TUN интерфейсы NAT и прокси под эти правила не попадают.
|
||||
|
||||
Пример:
|
||||
```ini
|
||||
[firewall]
|
||||
allow=192.168.1.100
|
||||
allow=10.0.0.0/8:443
|
||||
allow=10.0.0.50:443
|
||||
```
|
||||
|
||||
#### `[control]` — сервер мониторинга
|
||||
|
||||
Reference in new issue
Block a user