Вчера везде отметилась новость про
natasha - быстрый
stateless NAT
на стероидах
DPDK
. Никаких портов, времени жизни и прочего - из одного заданного IP в другой заданный и только. Аналог этого у Juniper, например -
inline NAT.
Почему это горячая тема и почему на это стоит обратить внимание, потому что хороших реализаций
NAT
очень мало, причём всё это усложняется тем что "хороший" для каждого случая имеет своё значение. За всю мою практику я попробовал много чего, в общем аппаратные
firewall
или балансировщики лучше умеют
NAT
(больше крутилок и режимов) чем более или менее чистые маршрутизаторы. Если воспринимать
NAT
как только механизм упаковки частных IP в публичные, то это почти везде работает плохо. Что-то обязательно ломается и диапазон этого весьма широк от непосредственно транслируемых протоколов/потоков до самой железки/системы которой в какой-то момент перестаёт хватать нужных ресурсов. И да, мы до сих пор не можем найти устраивающий нас
NAT
, такой какой нам нужен и
IPv6
тут действительно на коне. Это если говорить про провайдинг.
Но
NAT
хорошо подходит в качестве уровня абстракции адресного пространства, когда надо скрыть внутреннюю структуру, сделать её гибкой, а наруже оставить только то с чем надо взаимодействовать, что мы точно знаем будет редко меняться. Наверное, в облачных датацентрах это находит своё применение (авторство как бы намекает), я не оттуда поэтому не могу сказать точно. Ещё пример, объединение двух разных сетей, когда на их границе выполняется двойное преобразование что исключает пересечение адресных пространств. Никакой экономии адресов при этом конечно не возникает - задача другая и цель.
Вот как раз про такие задачи и
natasha
. Никакой динамики, никаких много адресов в один, никакой памяти - есть правила какой IP в какой преобразовать, это делается, как обещают, на очень большой скорости. Помимо этого получился ещё
PBR
, даже больше чем
NAT
, так как можно задать какой пакет в какой интерфейс направить принудительно да ещё и с нужным маком, классическая маршрутизация от источника. Документация сильно страдает от недостаточной полноты, но исходники (как минимум описанная грамматика файла конфигурации) спасают.
У меня сейчас таких задач нет, но своё место должно найти. GPLv3 подразумевает что это скорее будущая часть какого-то большего продукта, чем самостоятельная утилита. А Наташа, просто, хорошее русское имя, а теперь ещё одна из реализаций
NAT
.