Comments 27
iptablesnftablesмаскарадить локальный интерфейс не нужно. И еще пропущено указание таблицы.
iptables-t nat-A POSTROUTING -o enp0s3 -j MASQUERADEiptables -A POSTROUTING -o enp0s8 -j MASQUERADEiptables -t nat -A POSTROUTING -j MASQUERADEACCEPT'ы бессмысленны - не указана политика (или запрещающее правило в конце цепочки). По-умолчанию политика и так ACCEPT
systemctl disable systemd-resolved --nowЕсли вам mdns не нужен, то это логично, но лучше все же просто выключить прослушивание порта:
# /etc/systemd/resolved.conf:DNS=127.0.0.1DNSStubListener=noИ симлинк /etc/resolv.conf -> /run/systemd/resolved/... оставить в покое.
Спасибо за совет! Исправил
iptables на nftables поменял.
Настроил-таки на родных interfaces
systemd-resolved - оставлю всё-таки рекомендацию отключить. У нас же свой DNS. Хотя сегодня снова протестировал настройку: ошибки не появилось. Значит, и не нужно его отключать
Забыл написать, что /etc/dnsmasq.conf забэкапить нужно - не гоже по мне сам конфиг править))
В iptables явно допущены ошибки.
Лучше сразу работать с nftables. Т.к. в debian он уже давно. А iptables - deprecated.
Хотелось бы, что бы DNS наш сервер получал по DoH либо DoT;
Раз сервер "смотрит" интерфейсом в интернет, то совершенно не рассмотрены методы его защиты. А защищать так или иначе придётся;
Интересно было бы увидеть реализацию, которая позволит пользователям сети за таким шлюзом (если такое возможно) серфить ресурсы например в Yggdrasil, Tor и пр. без установки ПО.
С yggdrasil есть нюансы, анонсировать надо только сеть игдрасиля, что бы клиенты не пытались в весь v6 ходить через этот роутер. И в фаирволе надо запретить транзит из игдрасиля в клиентов иначе им придется самостоятельно следить за своими фаирволами, а они к этому обычно не готовы.
Ну и маршрутизацию для в6 еще разрешить.
radvd.conf
interface enp1s0 {
AdvSendAdvert on;
AdvDefaultLifetime 0; # Не шлюз по умолчанию
prefix 300:xxx::/64 {
AdvOnLink on;
AdvAutonomous on;
AdvRouterAddr on;
};
# Маршрут для всей сети Yggdrasil
route 200::/7 {
AdvRoutePreference high;
};
};Еще интересная особенность - размер такой сети даже не 2^64 а 2^56, ее вполне реально спуфить. Размещать в таких адресах глобальные ресурсы не стоит, лучше добавить нормальный адрес из большого пространства.
Внутри игдрасиля есть тор мосты так что любой из клиентов может просто установить тор браузер, прописать туда эти мосты и дальше у него всё будет работать без заморочек. Использовать тор как то иначе, через обычный браузер и хитровылюбленный нат на роутере, не стоит.
Любой чатгпт проведёт вас по настройкам за ручку от и до лучше чем нейробред с хабры.
У Debian 12 EOL через месяц. Почему не использовать 13?
iptables уже лет десять как обёртка над nftables, зачем плодить статьи с неактульным ПО?
Последние изменения в дистрибутивах - отход от единого sysctl.conf на директорию sysctl.conf.d для упрощения поддержки.
Хотел спросить почему iptables а не nftables, но в комментах уже автору тут напихали 🤣
В качестве сетевого менеджера я буду использовать netplan
В Debian из коробки networking/resolvconf(/etc/network/interfaces). debian-12.13.0-amd64-netinst.iso 2026-01-10 18:51 676M лучше debian-13.4.0-amd64-netinst.iso 2026-03-14 14:57 754M
А теперь покажите нам nft list ruleset
Есть подозрение что в Debian, как и в других дистрибутивах, по умолчанию policy не запрещающие. Тогда ваши добавленные правила бесполезны. И так все разрешено.
По привычной практике nftables.conf должен начинаться с:
#!/usr/sbin/nft -f
flush ruleset
table inet filter { chain input { type filter hook input priority filter; policy drop; } chain forward { type filter hook forward priority filter; policy drop; } chain output { type filter hook output priority filter; policy drop; }}
А потом уже наполняйте этот скелет своими разрешающими правилами.
мне больше нравится мой вариант:
systemd-networkd - и сеть настроил, и за dhcp работает, и vpn терминирует
nftables - nat и портфорвард
named - dns
bird - ну такие времена что даже дома 100500 маршрутов по bgp спасибо роскомдебилам, что уж тут..
как ни странно, но networkd выполняя роль многостаночника умудряется потреблять меньше ресурсов чем dhcpcd или dnsmasq (хотя и те потребляют мало, так что эта разница не сильно важна, просто приятна), а nftables который кажется жутким на первый взгляд на поверку куда более читаем чем iptables, а учитывая что iptables уже давно просто перекладывает старый синтаксис в новый для nft пора бы с ним познакомиться.
ну а named взял просто потому что с ним ближе знаком по работе.
Если нагрузка небольшая, то вместо named можно использовать systemd-resolved + /etc/hosts (там и DoT есть)
Таков был изначальный план, но на момент настройки оказалось что resolved не умеет что-то что мне хотелось, возможно сейчас ситуация поменялась и можно будет переделать.. Вспомнить бы ещё чего именно ему нехватило тогда..
А почему не ipfw?
Я думаю выражу общее мнение если скажу что ценность таких инструкций при наличии ChatGPT, стала значительно ниже, тем более что скорее всего эта инструкция через него и делалась. Не понимаю смысл тогда этого?
Думаю со временем такие мануалы себя изживут, и люди больше будут публиковать что-то экстроординарное
Не изживут. ChatGPT и прочее обучают по определению на существующих массивах информации и сами модели работают на основе статистики. Из-за этого они выдают зачастую устаревшую информацию. Собственно и здесь куча устаревшего было - iptables, старый дистрибутив, deprecated правка sysctl.conf, vim для новичков
А OpenWrt-x64 не рассматривали, что думаете?
Так нужна база простая!)
Да - dnsmmasq может и устарел, но для сети из десяти-пятнадцати машин - более чем досьтаточно: и бондинг, и DNS, и DHCP есть.
И надёжный - как швейцарский нож)
Я ж и использую debian - не зря...)
Во, брат по разуму. Тоже хотел написать автору что можно OpenWRT свою собрать со всем необходимым под эту задачу.
Простая настройка машины под Linux как роутера — NAT+nftables+dnsmasq