Назад | Перейти на главную страницу

ip6tables Сравнение диапазонов адресов IPv6

Я использую ip6tables для ограничения подключений к серверу. Я использую ip6tables с "-m iprange --src-range% s-% s", чтобы указать хосты, которым разрешено соединение.

  1. Если я укажу диапазон 8000 :: 0 - ffff :: ffff, результат будет выглядеть так.

    Цепь ripp_0_0 (1 ссылка)

    target prot opt ​​источник назначения
    ПРИНЯТЬ все :: / 0 :: / 0 диапазон IP-адресов источника 8000 :: - ffff :: ffff

  2. Если я укажу диапазон до 0 :: 0 - ffff :: ffff, результат будет выглядеть так.

    Цепь ripp_0_0 (1 ссылка)

    target prot opt ​​источник назначения
    ПРИНЯТЬ все :: / 0 :: / 0 диапазон IP-адресов источника :: - ffff :: ffff

У моего клиента локальный адрес ссылки fe80 :: e91b: befe: 97dc: 9df5. Для случая 1 ip6tables работает нормально, подключение разрешено. Для случая 2 это тоже должно быть разрешено, но соединение отклоняется.

Какой алгоритм использует ip6tables для сравнения адресов. Может ли кто-нибудь дать подсказку, чтобы решить эту проблему.

С уважением.

Не уверен насчет ip6tables, но ffff :: ffff не означает то, что вы думаете. Он расширяется до ffff: 0000: 0000: 0000: 0000: 0000: 0000: ffff. Я думаю, что диапазон от 0 :: 0 до ffff :: ffff будет содержать только любимые нули во всех средних словах. Попробуйте ffff: ffff: ffff: ffff: ffff: ffff: ffff: ffff, если вы это имеете в виду.

Или просто используйте 8000 :: / 1 и :: / 0, если хотите сказать «половина адресного пространства» и «все адресное пространство». Понимание сетевых масок важно для вашего здравомыслия при работе с IPv6.

::/128 это «неуказанный адрес»; вполне вероятно, что netfilter напуган этим, поскольку это неверный адрес. Попробуйте вместо этого :: 1.