Свой сетевой стек для всех: как я поднял DNS-сервер на самописном TCP/IP
Everyone Should Build Their Own Network Stack
Автор, энтузиаст из NJU, в рамках проекта DNet написал собственный сетевой стек с нуля: от TAP-устройства и ARP до UDP и DNS. Спустя четыре года он вернулся к проекту, исправил баги и запустил на нём авторитетный DNS-сервер для своего домена в DN42. Теперь любой может выполнить dig и получить ответ от его самописного стека. В посте также рассказывается о переходе с NixOS на Debian с Docker Compose и pyinfra для управления инфраструктурой DN42.
В truly decentralized network каждый должен реализовать свой собственный уникальный сетевой стек и использовать его для доступа в интернет, чтобы даже при наличии ошибок или уязвимостей в одной реализации это не обрушило всю сеть.
- intrasight
Моя первая работа была в Westinghouse, где я занимался инструментацией атомной электростанции. Наш весь аппаратно-программный комплекс был бесплатным подарком заказчику в рамках контракта на перезагрузку топлива на 200 миллионов долларов (и это в долларах 1988 года). Мы, команда из 10 человек, создали специализированный программный стек, который по сути был веб-браузером. Клиентские машины были Sun 3. Сервером был какой-то промышленный миникомпьютер, у которого не было стека TCP/IP — так что нам действительно пришлось создавать собственный сетевой стек.
- _pdp_
Каждому стоит создать что-то своё — это общий совет, который я бы дал практически для всего. Иначе трудно оценить, сколько усилий вложено в вещи, которые мы принимаем как должное. Всё кажется простым на первый взгляд, пока не попробуешь сделать это сам.
- znnajdla
Настоящий кошмарный сценарий — не просто найти уязвимость в сетевом стеке Linux, а найти уязвимости на уровне протоколов самого TCP/IP или HTTP. Это проблема, которую нельзя исправить. Были ли прецеденты в вычислительной технике?
- znnajdla
Эта статья может быть немного шутливой, но на самом деле я серьёзно думал об этом уже некоторое время. Я могу представить будущее, где каждая страна и компания пишет свою собственную операционную систему, и это может быть очень хорошо. Есть преимущество в безопасности, если не использовать популярные технологические стеки и перестраивать всё, что доступно публично, внутри компании. Потому что с возможностями ИИ уровня Mythos почти гарантировано, что любой, у кого есть доступ к Mythos/Cyber, сможет найти zero day в вашем стеке. Если ваш стек проприетарный и уникальный, без публичного доступа к исходному коду, найти уязвимости гораздо сложнее, потому что они могут только проверять ваши публичные интерфейсы.
- Ekaros
Я бы серьёзно не рекомендовал создавать собственный сетевой стек для продакшена. Или писать собственный веб-сервер для продакшена. Или базу данных (SQL или NoSQL) тоже для продакшена. Эти вещи сложнее, чем вы можете ожидать, и полны подводных камней. Всё, что вы можете сделать за разумное время, вероятно, не так хорошо по сравнению с существующими альтернативами. Если у вас есть действительно веская причина создать что-то и вы готовы и имеете возможность потратить время и усилия — дерзайте. Но тщательно взвесьте необходимые усилия...