AmneziaWG: Ошибка перекрытия маршрутов пиров (Overlapping AllowedIPs)
- Сервер отказывается регистрировать нового клиента с ошибкой:
RTNETLINK answers: File existsилиConfiguration rejected: overlapping AllowedIPs. - Трафик отправляется не тому клиенту, либо предыдущий клиент внезапно теряет доступ при подключении нового.
- В выводе
awg showу одного из пиров исчезает строчка с разрешенными IP-адресами. - При перезапуске сервиса
awg0восстанавливается соединение только с первым по списку клиентом.
1. Принцип Cryptokey Routing в WireGuard / AmneziaWG
AmneziaWG использует маршрутизацию по криптографическим ключам (Cryptokey Routing). На сервере параметр AllowedIPs в секции каждого [Peer] выполняет роль таблицы маршрутизации ядра. Один и тот же IP-адрес или пересекающийся диапазон не может быть назначен двум разным публичным ключам.
2. Поиск дублирующихся адресов в серверном конфиге
# Поиск дублей IP адресов клиентов в файле awg0.conf
grep -i "AllowedIPs" /etc/amnezia/amnezia-wireguard/awg0.conf | sort | uniq -d3. Корректная разметка клиентских подсетей на сервере
Каждому клиенту должен быть выделен строго уникальный одиночный адрес с маской /32 (для IPv4) или /128 (для IPv6):
# Серверный конфиг awg0.conf
[Interface]
Address = 10.8.0.1/24
PrivateKey = <Server_Key>
ListenPort = 51820
# Клиент 1 (Ноутбук)
[Peer]
PublicKey = <Client1_PubKey>
AllowedIPs = 10.8.0.2/32
# Клиент 2 (Телефон)
[Peer]
PublicKey = <Client2_PubKey>
AllowedIPs = 10.8.0.3/32
# Клиент 3 (Роутер с локальной сетью за ним)
[Peer]
PublicKey = <Client3_PubKey>
AllowedIPs = 10.8.0.4/32, 192.168.50.0/244. Динамическое добавление пира без перезапуска интерфейса
awg set awg0 peer <Client_PubKey> allowed-ips 10.8.0.5/32 Частые вопросы (FAQ)
Почему на клиенте можно указывать AllowedIPs = 0.0.0.0/0, а на сервере нельзя?
На клиенте есть только один пир (сервер), куда направляется весь интернет-трафик. На сервере подключено множество клиентов, и ядро должно однозначно знать, какому публичному ключу принадлежит конкретный IP.
Что произойдет, если указать одинаковый AllowedIPs = 10.8.0.2/32 двум разным пирам?
Ядро перезапишет внутренний указатель маршрута: первый пир будет отключен от таблицы маршрутизации и потеряет возможность отправлять и принимать данные.
Можно ли объединить несколько филиалов с одинаковыми локальными сетями (192.168.1.0/24)?
Нет, прямое объединение невозможно из-за коллизии маршрутизации. Потребуется настроить сетевую трансляцию адресов (1:1 NAT / NETMAP) на стороне филиалов.
Как удалить ошибочно добавленного пира из работающего интерфейса?
Выполните команду удаления по публичному ключу: awg set awg0 peer <Client_PubKey> remove.