LINUX.ORG.RU
ФорумAdmin

iptables, NAT, порты


0

0

Допустим хочу на роутере прокинуть кому-то внутрь сети диапазон портов, чтобы соответствующий юзер мог из-за NAT полноценно пользоваться p2p, поднять у себя какой-нибудь сервер... Делаю примерно так:

iptables -A PREROUTING -t nat -d $wan_ip -m multiport --destination-ports 20000:20100 -j DNAT --to-destination $user_ip

Смущает что - исходящее соединение через NAT может случайно попасть в данный диапазон. Он ведь проверяется "на входе" в роутер, а там нельзя определить, кому именно оно предназначается. Портов конечно много и совпадения такие будут не часто, но тем не менее...

В общем хочу узнать - натилка сама по себе отслеживает такие вещи, и если нет, то можно ли как-то их отслеживать правилами?

если я правильно понял, то обрати обрати внимание на селекторы -i -o.
они помогут зафикчировать входящий и исходящий интерфейс.

chocholl ★★
()

> Смущает что - исходящее соединение через NAT может случайно попасть в данный диапазон.

Как же он попадет, если там же вроде как ESTABLISHED,RELATED?

iron ★★★★★
()
Ответ на: комментарий от iron

> Как же он попадет, если там же вроде как ESTABLISHED,RELATED?

Так в том-то и дело, оно же проверяется в FORWARD, который идёт позже чем PREROUTING. И не понятно, проходит ли такое соединение вообще через PREROUTING.

-i и -o тут ничего не сделают, входящий интерфейс-то один и тот же - который к провайдеру.

paramonov
() автор топика
Ответ на: комментарий от gfh

> Через PREROUTING и POSTROUTING проходят ВСЕ пакеты

По-моему только новые. И табличка для прохождения первого пакета. Установившиеся соединения пробрасываются согласно записям в conntrack, ЕМНИП.

azure ★★
()
Ответ на: комментарий от azure

> По-моему только новые. И табличка для прохождения первого пакета. Установившиеся соединения пробрасываются согласно записям в conntrack, ЕМНИП.

Зачем бы тогда в INPUT и FORWARD везде прописывали RELATED,ESTABLISHED? Оно для того и есть, что роутер проверяет по этому правилу каждый пакет, а не только первый. Только первый это в случае SNAT и MASQUERADE.

paramonov
() автор топика
Ответ на: комментарий от paramonov

> Зачем бы тогда в INPUT и FORWARD везде прописывали RELATED,ESTABLISHED? Оно для того и есть, что роутер проверяет по этому правилу каждый пакет, а не только первый. Только первый это в случае SNAT и MASQUERADE.

Не совсем уловил мысль :) Изъяснятейсь яснее, пожалуйста. Первый пакет допустим TCP соединения проходит через таблицу nat (если нет raw и mangle): прероутинг, потом построутинг, затем попадает в таблицу filter: INPUT ИЛИ FORWARD.

Когда соединение установлено, то пакеты не обрабатываются в таблице nat, о чем прямо свидетельствуют счетчики пакетов в этой таблице, а проходят лишь через filter, где и ставятся правила -m state --state RELATED,ESTABLISHED -j ACCEPT иначе бы они там блокировались

azure ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.