No buffer space available `sit` (IPv6-in-IPv4)

Ответить
ya
^-^
Сообщения: 3102
Зарегистрирован: 16 дек 2021, 19:56

No buffer space available `sit` (IPv6-in-IPv4)

Сообщение ya »

https://tunnelbroker.net - Добро пожаловать в Hurricane Electric IPv6 Tunnel Broker! Наш бесплатный сервис туннельного брокера позволяет вам подключиться к IPv6-интернету посредством туннелирования через существующие IPv4-соединения с вашего хоста или маршрутизатора с поддержкой IPv6 к одному из наших IPv6-маршрутизаторов.


Ошибка `No buffer space available` (код ошибки `ENOBUFS`) при попытке поднять туннель `sit` (IPv6-in-IPv4) обычно означает, что модуль ядра для работы с туннелями загружен некорректно или, что чаще, в системе уже существует «призрачный» или конфликтующий интерфейс с таким же типом.

Вот пошаговый план решения проблемы:

### 1. Проверка существующих туннелей

Часто ошибка возникает из-за того, что интерфейс `sit0` (базовый туннель) уже занят другим процессом или был некорректно настроен.

Выполните команду:

```bash

Код: Выделить всё

ip tunnel show
```

Если вы видите там интерфейс `sit0` или другой туннель, который ссылается на тот же удаленный IP (Server IPv4 Address от Hurricane Electric), попробуйте его удалить:

```bash

Код: Выделить всё

ip link set he-ipv6 down  # если он виден в ip a
ip tunnel del he-ipv6     # удаление конкретного туннеля
```

### 2. Перезагрузка модулей ядра

Иногда драйвер туннелирования `sit` входит в состояние ошибки. Его стоит «передернуть»:

```bash

Код: Выделить всё

modprobe -r sit
modprobe sit
```

> **Внимание:** Если `modprobe -r` выдает ошибку "FATAL: Module sit is in use", значит, какой-то интерфейс еще активен. Сначала выключите все туннели через `ifdown` или `ip link set ... down`.

### 3. Удаление «зависшего» интерфейса sit0

Иногда `sit0` создается автоматически и мешает настройке `he-ipv6`. Попробуйте принудительно его удалить перед запуском `ifup`:

```bash

Код: Выделить всё

ip link delete sit0
```

После этого попробуйте снова:

Код: Выделить всё

`ifup he-ipv6`
.

### 4. Проверка конфигурации (`/etc/network/interfaces`)

Убедитесь, что настройки соответствуют стандарту для Hurricane Electric. Типичная ошибка — неправильный `local` IP (если вы за NAT).

Пример правильной записи:

```text

Код: Выделить всё

auto he-ipv6
iface he-ipv6 inet6 v4tunnel
    address <Ваш_IPv6_Client_Address>
    netmask 64
    endpoint <IP_Сервера_HE>
    local <Ваш_Внутренний_IPv4> # Если вы за NAT, укажите локальный IP сервера (например, 192.168.1.5)
    ttl 255
    gateway <Ваш_IPv6_Server_Address>
```

### 5. Очистка состояния ifupdown

Если команда `ifup` считает, что интерфейс уже поднят (хотя это не так), она может выдавать ошибки. Сбросьте состояние:

```bash

Код: Выделить всё

ifdown --force he-ipv6
ip tunnel del he-ipv6
ifup he-ipv6
```

---

**Почему это происходит?**
Ядро Linux возвращает `ENOBUFS`, когда не может выделить ресурсы для создания структуры нового сетевого устройства. В контексте `SIT` туннелей это почти всегда означает дублирование параметров (одинаковый `endpoint` и `local` на разных интерфейсах) или ограничение на количество туннелей в системе.
Ответить