惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

IT之家
IT之家
C
CXSECURITY Database RSS Feed - CXSecurity.com
V
Visual Studio Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
小众软件
小众软件
L
LangChain Blog
Cyberwarzone
Cyberwarzone
美团技术团队
The Register - Security
The Register - Security
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
T
Tor Project blog
V
V2EX
Security Archives - TechRepublic
Security Archives - TechRepublic
Hacker News: Ask HN
Hacker News: Ask HN
L
LINUX DO - 最新话题
Recent Announcements
Recent Announcements
H
Hackread – Cybersecurity News, Data Breaches, AI and More
酷 壳 – CoolShell
酷 壳 – CoolShell
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
aimingoo的专栏
aimingoo的专栏
人人都是产品经理
人人都是产品经理
F
Full Disclosure
V2EX - 技术
V2EX - 技术
The Cloudflare Blog
博客园 - 叶小钗
T
Threat Research - Cisco Blogs
阮一峰的网络日志
阮一峰的网络日志
G
GRAHAM CLULEY
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
Latest news
Latest news
S
Security @ Cisco Blogs
Spread Privacy
Spread Privacy
Project Zero
Project Zero
K
Kaspersky official blog
MyScale Blog
MyScale Blog
Attack and Defense Labs
Attack and Defense Labs
云风的 BLOG
云风的 BLOG
博客园 - 【当耐特】
Hacker News - Newest:
Hacker News - Newest: "LLM"
大猫的无限游戏
大猫的无限游戏
P
Privacy International News Feed
Google DeepMind News
Google DeepMind News
WordPress大学
WordPress大学
C
Cybersecurity and Infrastructure Security Agency CISA
Webroot Blog
Webroot Blog
罗磊的独立博客
Vercel News
Vercel News
N
News and Events Feed by Topic
A
Arctic Wolf
C
CERT Recently Published Vulnerability Notes

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания Автономность как точка невозврата: кто будет субъектом в цифровом будущем Обучение ИИ в «диких» условиях: как рутинные действия превращаются в датасеты Как измерить LLM для задач кибербеза: обзор открытых бенчмарков Где хранить код? Сравнение GitHub, GitLab и Bitbucket Математика объясняет, почему нормальное распределение встречается повсюду Почему ваш FinOps не работает: 12 тезисов от практиков Как подписать проектную документацию УКЭП с использованием бесплатных лицензий Pilot Адаптивное администрирование Sigla Vision Я грузил уран в бочки, а потом 20 лет строил ИТ в атомной отрасли Чем позвонить с Эвереста? История и обзор спутниковой связи. Часть 2 Как языковая модель помогает контролировать качество инструктажей по охране труда в металлургии Как не передать на desktop свой IP в РКН Анатомия SAP Privileges: как устроено управление правами в macOS MoneyDev: Сказка про три главных слова Обновлённый токенизатор видео K-VAE 2.0 от Сбера Как сделать диспетчеризацию дома на 1284 квартиры почти бесплатно Как мы разогнали железную дорогу Мы дали агентам рутину. Теперь надо решить — что делать с освободившимся временем Токсичный контент, промпт-хакинг и защита ИИ — всё о Guardrails для LLM Умный город начинается с точного взгляда: как «Фалькон Тех» меняет пространство к лучшему Навайбкодил приложение для анализа графов Почему Дюну так интересно читать? Упрощаем работу с рутиной или как стать Гендальфом Белым Деконструкция Go: CPU, RAM и что там происходит. Go Assembler база. Часть 1.1 Какие профессии исчезнут из-за ИИ, а какие появятся? И что с этим делать Как мы построили IT-отдел, где хочется расти: архитектурные встречи, прозрачные метрики и книжные подарки Rufler: Делаем из Claude Code автономный рой через один YAML-конфиг Sing-box и белый список приложений Как построить надёжный обмен сообщениями в микросервисах: лучшие практики для enterprise OpenAI строит MLM-пирамиду, а McKinsey и Accenture помогают ей в этом Дом, который не построил Фишер (Часть 2) «Сверхзвуковой математик» против «Вдумчивого логиста»: битва алгоритмов 3D-упаковки Мультимодальные модели – грубый и дорогой инструмент Разговоры ничего не стоят. Код тоже Проверки физических лиц: с кого начнет ФНС Топ-10 бесплатных нейросетей для создания видео в 2026 году Первые слои кода: как наши решения сегодня определяют архитектуру ИИ на десятилетия Разработка нового статического анализатора: PVS-Studio JavaScript Поиск уязвимостей ПО: базовый минимум или роскошный максимум Почему оценка персонала не работает как инструмент управления Как мы разработали ИИ-ассистента и сократили рутину продуктовой команды на 50% Как я ушел из найма, нажарил косточек и продал на маркетплейсах на 168 млн в год Когда 1С:ERP уже внедрена, а нормального производственного плана всё ещё нет Как я сделал Claude мультимодальным, подключив к нему Qwen Omni Как приглашение на вакансию мечты превращается в атаку Infrastructure as Code: философия и лучшие практики IaC Тестируем Yandex Code Assistant на задаче, в которой нужно хранить секреты nxs-universal-chart v3.0: новое поколение универсального Helm-чарта Callback Injection: Техника, которая отправила Microsoft Defender в глухой нокаут «Все идеи на стол»: митап как способ вывести проект из тупика Сегодня я узнал нечто новое о GPU благодаря багу в своей игре Как заставить LLM ̶ ̶г̶а̶л̶л̶ю̶ ̶ эволюционировать Карта событий как фундамент аналитики: практический кейс для E-commerce Что выбрать для AI: x86, ARM или RISC-V? Дайджест железа за март Роль соматических мутаций в развитии аутоиммунных заболеваний: путь к избирательной терапии Mythos от Anthropic — тревожный сигнал для всех, а не только для банков Guardrails для LLM на Java: как приручить промпт‑инъекции и токсичные ответы Green-VLA: как мы собрали VLA-модель для реального антропоморфного робота и не потеряли обобщение Финансовая гонка вооружений: почему умные люди добровольно в ней участвуют Эра ИИ-агентов наступила: выбираем лучшего цифрового сотрудника # Практический опыт внедрения WinCC Redundancy на производственном предприятии Сделал MVP за 3 дня, а потом неделю прикручивал оплату. Оно того стоило? Физика против Маска: почему Starship V3 может оказаться ещё одной катастрофой Нефть Венесуэлы: крупнейшие запасы в мире, но не крупнейшая нефтяная держава JPA 4. Переосмысление Hibernate Почему зеркальная фотокамера Nikon D5 десятилетней давности идеально подошла для миссии «Артемида-2» Проект «Уровень-Спутник» или как мы сделали платформу для гидрологов «Замедлиться, чтобы ускориться»: почему ИИ повышает цену ошибок в требованиях и архитектуре Как с нуля поднять трафик IT-компании на 1657% при бюджете 55 тыс. и выжить Pixel-perfect Downsampling — идеальная отрисовка 50 миллионов точек без потерь
Go для сетевой безопасности: почему (и как) мы перешли на net/netip
pavel_kirillov · 2026-06-24 · via Все публикации подряд на Хабре

Почему нам важна производительность?

Работа с сетевой безопасностью требует внимания к деталям. В компании Netopia мы создаем платформу для непрерывной оценки защищенности и управления политиками межсетевых экранов. Наш продукт помогает контролировать доступы, моделировать трафик по сети и автоматизировать изменения правил. Нам доверяют крупные банки, федеральные компании и операторы связи. И требования по безопасности к продукту предъявляют немаленькие.

Когда собираешь большие конфигурации сетевых устройств или интегрируешься с ITSM-системами через API, производительность кода напрямую влияет на надежность сервиса. Основным языком разработки является Go. Мы ценим его за эффективность, но иногда стандартных инструментов становится мало.

В этой статье хотим поделиться опытом перехода на библиотеку net/netip. Это решение продиктовано не трендами, а реальной необходимостью оптимизации. Стандартный пакет net не всегда справлялся с нашими объемами данных так эффективно, как хотелось бы. Расскажем, как внедрение netip помогло сделать платформу быстрее и надежнее.

Ограничения стандартного пакета net

Большинство разработчиков на Go начинают работу с сетью со стандартного пакета net. И это правильно: он стабилен, хорошо документирован и отлично справляется с типовыми задачами. Для многих проектов его возможностей более, чем достаточно, — он просто работает, позволяя быстро реализовать нужную логику. Однако в Netopia мы работаем с такими объемами данных, что каждая лишняя операция имеет значение.

Со временем мы заметили, что при масштабировании стандартный подход начинает упираться в свои ограничения. Главная проблема — наследие архитектуры.

Пакет net был создан давно, в нем заложены механизмы, которые сегодня считаются избыточными. Особенно это касается валидации IP-адресов. В высоконагруженных контурах сбора телеметрии стандартные методы создают слишком много аллокаций памяти. Это приводит к повышенной нагрузке на сборщик мусора (Garbage Collector) и росту задержек. Когда ты отвечаешь за безопасность банка или оператора связи, такая неэффективность становится непозволительной роскошью. Нам нужно было решение, которое дает тот же уровень удобства, но без скрытых затрат на производительность.

Почему мы выбрали net/netip?

Решение нашлось в самой экосистеме Go. Начиная с версии 1.18, в стандартной библиотеке появился пакет net/netip. Это не сторонняя библиотека, а официальная, оптимизированная замена старому net, созданная с учетом накопленных ошибок. Для команды безопасности важно минимизировать внешние зависимости, поэтому возможность использовать стандартный инструмент стала решающим фактором. Мы не стали внедрять его сразу «в бою». Сначала провели серию тестов на наших реальных данных, сравнили бенчмарки и убедились: рефакторинг окупится стабильностью. Что именно нам понравилось в net/netip? Вот три ключевых преимущества:

  1. Отсутствие аллокаций. Основные операции работают без выделения памяти в куче. Это резко снижает нагрузку на сборщик мусора, что критично для наших потоков телеметрии.

  2. Производительность. Парсинг и сравнение адресов работают заметно быстрее благодаря оптимизированной внутренней структуре.

  3. Безопасность типов. Значения в netip неизменяемы (immutable). Это предотвращает случайные ошибки изменения данных и делает код более предсказуемым. Для нас это означало не просто «стало быстрее», а «стало надежнее для клиентов».

Для нас это означало не просто «стало быстрее», а «стало надежнее для клиентов».

Практика: как это выглядит в коде?

Чтобы показать разницу в подходах, приведем несколько базовых примеров. Они демонстрируют, как netip упрощает типовые задачи работы с адресами, делая код чище и понятнее.

1. Парсинг IP-адреса

Вместо сложных проверок мы получаем строгую типизацию сразу на этапе чтения строки:

addr, err := netip.ParseAddr(«192.168.1.1»)

if err != nil {

    // обработка ошибки

}

// addr теперь безопасный объект IP

2. Работа с подсетями (Prefix)

Пакет позволяет легко работать с масками и диапазонами адресов:

prefix, err := netip.ParsePrefix(«10.0.0.0/8»)

if err != nil {

    // обработка ошибки

}

// prefix содержит адрес и длину маски

3. Проверка вхождения адреса в подсеть

Одна из самых частых задач в безопасности решается одним методом без лишних вычислений:

if prefix.Contains(addr) {

    // Адрес находится внутри диапазона

}

Такой код куда легче читаем. Но, что важнее, он и работает предсказуемо быстро, так как внутри не скрыто лишних аллокаций памяти. Для нас это значит, что даже сложные проверки политик доступа выполняются мгновенно.

На что обратить внимание при миграции?

Переход на новый инструмент потребовал внимания к деталям. Например, поведение с IPv4-mapped IPv6 адресами здесь строже. В старом пакете они могли неявно приводиться к IPv4, а в netip — нет.
Для нас это скорее плюс: правила безопасности должны работать явно и предсказуемо. Мы учли эту специфику при написании фильтров, чтобы избежать ложных срабатываний или пропуска трафика. Также мы обратили внимание на обработку зон в IPv6. Пакет может игнорировать их в префиксах, поэтому мы добавили дополнительную валидацию на входе. Такие мелочи важны, когда речь идет о доступе к инфраструктуре банка. Понимание этих особенностей позволяет нам использовать инструмент максимально эффективно и безопасно.

Стабильность через внимание к деталям

Для нас важно быть открытыми в таких технических вопросах. Обмен архитектурными решениями — это способ передачи опыта, необходимого для улучшения продукта. Мы предпочитаем внедрять улучшения заранее, опираясь на новые возможности языка и практики сообщества, а не ждать серьезных проблем. Такой подход помогает держать платформу надежной для клиентов, даже когда задачи усложняются. В конце концов, стабильность сервиса складывается именно из таких небольших, но важных оптимизаций и внимания к деталям.

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.

Никто еще не голосовал. Воздержавшихся нет.