LINUX.ORG.RU
ФорумAdmin

iptables + несколько ipset


0

2

Добрый день!

Есть задача: Есть несколько ipset списков (list1, list2, list3). Нужно написать правило, которое сменит адрес назначения у пакетов (DNAT), не вошедших в указанные списки.

В голову приходит только один вариант - объединить списки. Такой вариант не нравится, т.к. усложнит структуру правил.

Прошу помочь.

★★★★

iptables -A PREROUTING -m ipset --set list1 src -j ACCEPT (или RETURN)
iptables -A PREROUTING -m ipset --set list2 src -j ACCEPT
iptables -A PREROUTING -m ipset --set list3 src -j ACCEPT
iptables -A PREROUTING -j DNAT --to-destination XXXX

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

Такой вариант не годится. Цель: Роутер. Все что не попало в список снатить на локальный web сервис, остальных пропустить наружу.

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

setlist - хорошая штука, вот толкьо поддерживается в последних версиях ipset. В debian lenny нет =(.

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

Такой вариант не годится. Цель: Роутер. Все что не попало в список снатить на локальный web сервис, остальных пропустить наружу.

Ну так и пиши обо всем сразу. :)

iptables -N nat_to_local -t nat
iptables -A nat_to_local -t nat -m ipset --set list1 src -j RETURN # no local nat
iptables -A nat_to_local -t nat -m ipset --set list2 src -j RETURN # no local nat
iptables -A nat_to_local -t nat -m ipset --set list2 src -j RETURN # no local nat
iptables -A nat_to_local -t nat -j DNAT --to-destination local.web.service

iptables -A PREROUTING -t nat -j nat_to_local
iptables -A PREROUTING -t nat -j DNAT --to-destination other.destination.nat

А вообще для выхода на ружу DNAT не нужен 6)

zhiltsov
()
Ответ на: комментарий от exst

Для остальных маскарад =).

Ну дык это в POSTROUTING делается а DNAT в PREROUTING.

+ чтобы ответ от web-сервера (если он не на роутере) правильно обратно вернулся SNAT тоже нужно сделать :)

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