• XSS.stack #1 – первый литературный журнал от юзеров форума

[Вопрос] Перенаправление трафика

MobD1pp

RAID-массив
Пользователь
Регистрация
15.05.2025
Сообщения
59
Реакции
22
Как полностью перенаправить трафик, например через интерфейс cat0? без утечек и т.п.
Желательно с изспользованием iptables
:)
Если ставлю
echo 1 > /proc/sys/net/ipv4/ipv4/ip_forward
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A FORWARD -i wlo5 -o cat0 -j ACCEPT
iptables -t nat -A POSTROUTING -o cat0 -j MASQUERADE
iptables -A OUTPUT -o cat0 -j ACCEPT
iptables -A FORWARD -j DROP
iptables -A OUTPUT -j DROP


, то не получается настроить. может, проблема в default gateway?

P.S.
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.65.1 0.0.0.0 UG 600 0 0 wlo5
172.15.0.0 0.0.0.0 255.255.255.240 U 0 0 0 cat0
192.168.65.0 0.0.0.0 255.255.255.0 U 600 0 0 wlo5

#ip route
default via 192.168.65.1 dev wlo5 proto dhcp src 192.168.65.214 metric 600
172.15.0.0/28 dev cat0 proto kernel scope link src 172.15.0.1
192.168.65.0/24 dev wlo5 proto kernel scope link src 192.168.65.214 metric 600
 
Пожалуйста, обратите внимание, что пользователь заблокирован
default gateway должен указывать на интерфейс cat0 в данном случае, либо на нужный доступный шлюз связынный с текущим хостом через данный интерфейс.

Вот эти правила скорее всего лишние, так как политика по умолчанию для iptables уже указана при помощи параметра -P
iptables -A FORWARD -j DROP
iptables -A OUTPUT -j DROP
Не за забудьте так же подгрузить сами правила в файлервол.
Возможно так же потребуются правила conntrack для stateful соединений.

Но все эта лишь навскидку, нужно смотреть всю конфигурацию хоста.
 
вставлю свои пять копеек
маршрутизация между интерфейсами, при ряде условий, минует iptables, поэтому, если стоит задача без утечек, надо или чётко понимть что и куда маршрутизируется, или юзать только таблицы маршрутизации
 
Пожалуйста, обратите внимание, что пользователь заблокирован
вставлю свои пять копеек
маршрутизация между интерфейсами, при ряде условий, минует iptables, поэтому, если стоит задача без утечек, надо или чётко понимть что и куда маршрутизируется, или юзать только таблицы маршрутизации
Без участия netfilter трафик может маршрутизироваться только если в системе нет самого модуля ядра netfilter, если он есть, то классическая маршрутизация(ее первый этап после попадания сетевого пакета на интерфейс) производится только при применении netfilter, и только после срабатывания хуков PREROUTING от netfilter. А потому в большинстве случаев срабатываний netfilter(как основы iptables, обертка может быть и другой) не избежать.
 
Последнее редактирование:
Без участия netfilter трафик может маршрутизироваться только если в системе нет самого модуля ядра netfilter, если он есть, то классическая маршрутизация(ее первый этап после попадания сетевого пакета на интерфейс) производится только при применении netfilter, и только после срабатывания хуков PREROUTING от netfilter. А потому в большинстве случаев срабатываний netfilter(как основы iptables, обертка может быть и другой) не избежать.
да, наверное, я был не совсем конкретен, ответил чисто интуитивно, по памяти была какая-то ситуация, а какая вспомнить не мог, сейчас повспоминал лучше, вот что там было:
мне не удавалось отловить пакеты с моста (счётчик был пустым, хотя между интерфейсами трафик проходил), вроде бы это было потому, что маршрутизация происходит на более низкой модели OSI и в этом случае пакет минует netfilter
 
Пожалуйста, обратите внимание, что пользователь заблокирован
да, наверное, я был не совсем конкретен, ответил чисто интуитивно, по памяти была какая-то ситуация, а какая вспомнить не мог, сейчас повспоминал лучше, вот что там было:
мне не удавалось отловить пакеты с моста (счётчик был пустым, хотя между интерфейсами трафик проходил), вроде бы это было потому, что маршрутизация происходит на более низкой модели OSI и в этом случае пакет минует netfilter
Нет более низкой модели OSI, она одна, есть более низкий или более высокий уровень в рамках одной модели OSI, но netfilter работает на 2-3-4 уровнях, а потому мимо него трафик проходить в системах linux никак не может, при его наличии в ядре, разве что если целенаправленно отключены или модифицированых хуки в его структурах, но это тоже весьма редкий и крайне нестандартный случай, так как отключить их на всем пути следования почти невозможно без полной остановки самого модуля. И стадия маршрутизации пакетов реализуется после срабатывания netfilter хуков на пути следования пакетов. возможно еще что вы просто не там или не так отлавливали пакеты-)
 
Нет более низкой модели OSI, она одна, есть более низкий или более высокий уровень в рамках одной модели OSI, но netfilter работает на 2-3-4 уровнях, а потому мимо него трафик проходить в системах linux никак не может, при его наличии в ядре, разве что если целенаправленно отключены или модифицированых хуки в его структурах, но это тоже весьма редкий и крайне нестандартный случай, так как отключить их на всем пути следования почти невозможно без полной остановки самого модуля. И стадия маршрутизации пакетов реализуется после срабатывания netfilter хуков на пути следования пакетов. возможно еще что вы просто не там или не так отлавливали пакеты-)
если всё так просто, зачем тогда нужен br_netfilter?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
если всё так просто, зачем тогда нужен br_netfilter?
br_netfilter не обрабатывает трафик отдельно от netfilter, а наоборот-в его контексте и под его контролем(даже исходя из его названия нетрудно догадаться), соответственно с проведением пакетов черех хуки всех соответствующих уровней которым предназначен, к тому же что пакет идущий через мост в конечное приложение или поднимающийся на соответствующий уровень маршрутизации, без которой маршрутизация не осуществляется-тем более. и кто сказал что все просто, не просто, но вполне очевидно.
 
br_netfilter не обрабатывает трафик отдельно от netfilter, а наоборот-в его контексте и под его контролем(даже исходя из его названия нетрудно догадаться), соответственно с проведением пакетов черех хуки всех соответствующих уровней которым предназначен, к тому же что пакет идущий через мост в конечное приложение или поднимающийся на соответствующий уровень маршрутизации, без которой маршрутизация не осуществляется-тем более. и кто сказал что все просто, не просто, но вполне очевидно.
вернёмся к началу
мой тезис: существуют условия, при которых netfilter не видит маршрутизацию пакетов на уровне интерфейсов
читаем здесь https://man7.org/linux/man-pages/man5/sysctl.d.5.html
английским по-белому
Please note that, unless the br_netfilter module is loaded, bridged packets will not be filtered with Netfilter
тезис доказан?
 
Пожалуйста, обратите внимание, что пользователь заблокирован
вернёмся к началу
мой тезис: существуют условия, при которых netfilter не видит маршрутизацию пакетов на уровне интерфейсов
читаем здесь https://man7.org/linux/man-pages/man5/sysctl.d.5.html
английским по-белому

тезис доказан?
Нет, не доказан, точнее не в том смысле что имеете в виду вы, вы говорите исключительно об интерфейсе моста для которого и предназначена функция br_netfilter, и поскольку в данном случае, они потенциально будут фильтроваться уже не на интерфейсах моста, а далее. Ведь вы должны понимать, что пакеты попадают на вируальный мост исключительно с основного хоста(основного интефейса хоста), где фильтацию никто не отменял и отменить ее невозможно. И счетчики при этом, будут срабатывать на основном интефейсе к которому привязан мост даже при отключенной возможности фильтрации на интерфейсе моста. Это как раз то о чем я кстати упомнинал выше как об исключительной возможности, но не исключающей фильтрацию на уровне других шагов. Изучите как ходит трафик внутри linux машины через всю цепь от вхождения в интерфейс и до любой из возможных целей, включая мосты, которые практически всегда привязаны к реальным интерфейсам, либо/и встроены в общий сетевой стек.
 
Последнее редактирование:
Нет, не доказан, точнее не в том смысле что имеете в виду вы, вы говорите исключительно об интерфейсе моста для которого и предназначена функция br_netfilter, и поскольку в данном случае, они потенциально будут фильтроваться уже не на интерфейсах моста, а далее. Ведь вы должны понимать, что пакеты попадают на вируальный мост исключительно с основного хоста(основного интефейса хоста), где фильтацию никто не отменял и отменить ее невозможно. И счетчики при этом, будут срабатывать на основном интефейсе к которому привязан мост даже при отключенной возможности фильтрации на интерфейсе моста. Это как раз то о чем я кстати упомнинал выше как об исключительной возможности, но не исключающей фильтрацию на уровне других шагов. Изучите как ходит трафик внутри linux машины через всю цепь от вхождения в интерфейс и до любой из возможных целей, включая мосты, которые практически всегда привязаны к реальным интерфейсам, либо/и встроены в общий сетевой стек.
всё, дружище, я понял, где мы расходимся. долго думал, что за "хост" такой, причём здесь "хост", а сейчас понял. вы говорите о виртуализации, так? но я нигде не упоминал о виртуализации. видимо вас ввело в заблуждение, что о мостах чаще говорят в контексте докера или других систем? но нет, я подразумевал просто некий абстрактный мост, поднятый через ip link например.
теперь всё становится на свои места и мы оба правы: при виртуализации/контейниризации пакеты будут попадать на хост, а при двух чистых интерфейсах пойдут друг на друга, минуя фаервол
 
Пожалуйста, обратите внимание, что пользователь заблокирован
всё, дружище, я понял, где мы расходимся. долго думал, что за "хост" такой, причём здесь "хост", а сейчас понял. вы говорите о виртуализации, так? но я нигде не упоминал о виртуализации. видимо вас ввело в заблуждение, что о мостах чаще говорят в контексте докера или других систем? но нет, я подразумевал просто некий абстрактный мост, поднятый через ip link например.
теперь всё становится на свои места и мы оба правы: при виртуализации/контейниризации пакеты будут попадать на хост, а при двух чистых интерфейсах пойдут друг на друга, минуя фаервол
Бро, независимо от того, в контексте виртуализации(той ее формы о которой видимо говорите вы) или вне виртуализации используется мост, он всегда в рамках системы и внутри нее привязан к основному интерфейсу хоста и работает в общем контексте сетевого стека, где netfilter все равно функционирует. Отключить его(частично) можно только в рамках виртуального интерфейса. Ведь любой мостовый интерфейс внутри linux системы является именно виртуальным интерфесом(тут bridge = виртуализированный интерфейс основной системы), как ни крути-) А потому наблюдая трафик на нем(мониторингом структур ядру, либо же снифферами) - вы возможно и не увидите срабатываний счетчиков(и то не факт, сильно зависит от конкретной реализации стека на низком уровне), а вот глядя на общий стек и на тот интерфейс к которму привязан мост-уже скорее всего увидите. И конечно на пути от одного интерфейса к другому, не имеет значения кого именно, трафик все равно будет d jghtltktyys[ vtcnf[ перехватывать и обрабатываться netfilter. Исключение-это целенаправленный обход хуков netfilter в ядре системы нестандартным образом, например перехватывая вызовы и прерывания и/или обнуляя счетчики.
 
Последнее редактирование:


Напишите ответ...
  • Вставить:
Прикрепить файлы
Верх