phd_ru: (Default)
[personal profile] phd_ru
Дела домашние, сетевые, мелкие

В Линуксе есть традиция — каждые 10-15 лет менять файервол. Первый сетевой экран, который мне пришлось настраивать в Линуксе, звался IPChains. Это было больше 20 лет назад, он был простой, а меня незадолго перед этим Толпин с Тутубалиным научили строить простой файрвол для BSD (так давно было, что не помню в деталях, это ещё был BSD/OS, или уже FreeBSD) — на вход снаружи вовнутрь всё закрываем, открываем несколько специфичных служб (FTP, SSH, почта, Web); на выход всё открываем. Так что с IPChains я справился довольно быстро.

10 лет спустя IPChains заменили на IPTables, причём довольно резко. Как-то раз я обновил Debian и обнаружил, что мне надо всё бросить и срочно восстанавливать файрвол. Синтаксис у iptables был отдалённо похож на ipchains, так что за пару часов переписывания я управился.

Прошло ещё 10 лет, и в ядре появился NetFilter. К счастью, создатели я ядра и дистрибутивов учли мой предыдущий опыт и дали возможность переходить постепенно. Во-первых, они сохранили в ядре IPTables, а в дистрибутивах команду iptables-legacy; в Debian её можно сделать основной с помощью dpkg-reconfigure iptables. Несколько лет я так и жил.

Вторая удобная команда, созданная для СетевогоФильтра — iptables-nft. Она позволяет загрузить в Фильтр настройки в привычном синтаксисе IPTables. Как-то раз я перешёл с iptables-legacy на iptables-nft и ещё несколько лет так жил.

Третья команда в помощь переходящему с IPTables на NetFilter — iptables-translate. Она берёт на вход синтаксис IPTables и выдаёт команды СетевогоФильтра. К сожалению, она очень строга к синтаксису, т.е. статику ей можно конвертировать, а динамику (вызов из условных операторов и циклов с подстановкой переменных) никак.

Я долго думал, как бы переписать все мои скрипты на nft. В конце концов с помощью iptables-translate и nft list ruleset я подсмотрел, как использовать nft. И написал питоновский скрипт, который примитивными регулярными выражениями разбирает мои команды и конвертирует в команды nft.

Сначала отладил его на ноутбуке — на нём проще всего восстановиться. Потом загрузил результат на сервер в Амстердаме — на его консоль есть WebVNC, и один раз мне пришлось им воспользоваться для исправления. И наконец вчера загрузил переписанные правила в домашний сервер; с ним сложнее всего, пойди что-то не так, его придётся выключить и подключить монитор. Но всё уже было хорошо отлажено. Заодно вчера Debian выкатил обновление ядра, так что я пару раз все мои хосты перезагрузил и убедился, что всё работает.

Теперь надо эти скрипты пооптимизировать, засунуть статику в файлы конфигурации вместо скриптов.

X-Post в ЖЖ.

April 2025

S M T W T F S
  123 45
6789101112
1314 15 16 1718 19
20212223242526
27282930   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Apr. 23rd, 2025 04:26 pm
Powered by Dreamwidth Studios