LINUX.ORG.RU
решено ФорумAdmin

nat && whitelist

 ,


0

2

Добрый день.

Пытаюсь настроить nat + whitelist. Т.е. что бы nat работал только для определенного IP, с возможностью динамически эти самые IP менять/удалять/добавлять.

Собственно, просто NAT работает.

INET=eth1
LOCAL=eth0

iptables -t nat -A POSTROUTING -o $INET -j MASQUERADE
А вот с whitelist вышла заминка, не могу понять как это сделать.

Что можете посоветовать ?

★★★★★

загоняешь белый список в ipset и собсна практически всё...

выписывать правила честно говоря лень - у ТС наверняка есть man и рабочая (виртуальная) машина для их проверки

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

загоняешь белый список в ipset и собсна практически всё...

А подробней ?
Что такое ipset и его модули для ядра, разобрался.

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

[РЕШЕНО]

Собственно, два решения:

C ipset:

ipset -N white
ipset --add white <some_ip>

iptables -t filter -P FORWARD DROP
iptables -t filter -I FORWARD -i $LOCAL -m set --set white src -j ACCEPT

iptables -t nat -A POSTROUTING -o $INET -j MASQUERADE

И без:

iptables -t filter -P FORWARD DROP
iptables -t filter -I FORWARD -i $LOCAL -s <some_ip> -d <some_ip> -j ACCEPT

iptables -t nat -A POSTROUTING -o $INET -j MASQUERADE

Осталось только тотестить производительность :)

joy4eg ★★★★★ ()

Я в свое время через отдельную цепочку и скрипты делал.

1) делаешь отдельную цепочку (разрешать лучше через форвард):

iptables -N loc2inet
iptables -A loc2inet -p tcp -s 192.168.1.1 -j ACCEPT
iptables -A loc2inet -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A loc2inet -j DROP

iptables -t nat -A POSTROUTING -o $INET -j MASQUERADE
iptables -A FORWARD -i $LOCAL -o $INET -j loc2inet

2) динамически формируешь и запускаешь скрипт обновления «белого» списка:

iptables -F loc2inet
iptables -A loc2inet -p tcp -s 192.168.1.1 -j ACCEPT
iptables -A loc2inet -p tcp -s 192.168.1.2 -j ACCEPT
iptables -A loc2inet -p tcp -s 192.168.1.3 -j ACCEPT
iptables -A loc2inet -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A loc2inet -j DROP

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

динамически формируешь и запускаешь скрипт обновления «белого» списка:

Запуска перегенерации списка, хотелось бы избежать. Сейчас вот погуглил, и не нашел, как можно вставлять новые правила в цепочку в НАЧАЛО или КОНЕЦ ? Неужели этого нету ?

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

новые правила в цепочку в НАЧАЛО или КОНЕЦ ? Неужели этого нету ?

Как это нету, есть конечно, вместо А (add) пишешь I (insert) и после какого номера вставить, например:

iptables -I 3 FORWARD парам-пам-пам..

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

т.е. конечно ты можешь отдельными командами добавлять/удалять правила, но это же нужно отслеживать... логика сложнее будет у твоего скрипта, или чо там у тебя..

Кстати, какова конечная цель?

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

Кстати, какова конечная цель?

Конечная цель, несколько сложней топика :)

Если коротко:
Есть NAT, есть клиенты, как «новые» так и «бывалые».
Нужно обеспечить прохождение пакетов для «бывалых» без каких либо на это ограничений и прочего. А для «новых», весь http трафик перенаправлять на сервер авторизации, иной же - блокировать, кроме dns && dhcp соответственно.

Определением состояния «новый» или «бывалый», занимается отдельная тулза.

Как это нету, есть конечно, вместо А (add) пишешь I (insert) и после какого номера вставить

О, Спасибо!

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

Нужно обеспечить прохождение пакетов для «бывалых» без каких либо на это ограничений и прочего. А для «новых», весь http трафик перенаправлять на сервер авторизации

В одной организации для этого локальный диапазон IP был разделен на 3, например:

192.168.0.0-20 - можно всё
192.168.0.21-150 - можно кое-что
192.168.0.151-254 - ничо низя.

Ну и IP юзеров просто меняли в нужный диапазон по мере нужды.
Допустим Вася с ip 192.168.0.44 обосрался, меняют ему на 192.168.0.201, типа он наказан.

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

меняют ему

Каким образом меняют ? В моей задаче, доступа к клиентской машине - нет. Т.е. нужно что бы dhcp клиент, на стороне клиента, перезапросил ip.

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