LINUX.ORG.RU

iptables redirect all

 


1

1

Привет всем! не могу настроить редирект, задача такая, есть клиент под шлюзом, у него дефолтовый маршрут этот шлюз, у шлюза дефолтовый инет, надо клиенту сделать так, чтоб при запросе одного адреса, его перекидывало на другой, в том числе и пинги, остальное ему закрыть, как это сделать? пока что к успехам ничего не привело, еще проблема в том что каждый клиент висит на своем интерфейсе шлюза (на отдельном vlan)

★★★

Последнее исправление: cetjs2 (всего исправлений: 1)

Начнём.

-t nat -A PREROUTING -i <vlan_клиента> -d <один_адрес> -j DNAT --to-destination <другой>
-A FORWARD -i <vlan_клиента> ! -d <другой> -j DROP
Так пробовал?

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

получилось сделать перенаправление вот так

*nat
OUTPUT ACCEPT
-A PREROUTING -d xxx.xxx.xxx.xxx/32 -j DNAT --to-destination yyy.yyy.yyy.yyy
-A POSTROUTING -j MASQUERADE
Отлично работает, но вот юзверь может ходить в инет через этот шлюз, в фильтре политику по умолчанию на INPUT OUTPUT выставил DROP, я так понимаю надо копать в сторону FORWARD в фильтре, потому что когда я поставил DROP в *filter FORWARD траф не пошел никуда... Почитал, но пишут в основном про входящий интерфейс, на котором висит клиент, а мне нужно указать входящую сеть клиента, а не интерфейс, но пока не работает это

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

-A PREROUTING -d xxx.xxx.xxx.xxx/32 -j DNAT --to-destination yyy.yyy.yyy.yyy

Это будет вообще для всех. Так и задумано?

мне нужно указать входящую сеть клиента, а не интерфейс

Ну так и указывай не -i <интерфейс>, а -s <входящая/сеть>. Детали зависят от политики. Если разрешено всё, что не запрещено явно, то дропай всё, что выходит из той сети не на правильный адрес:

-A FORWARD -s xxx.xxx.xxx.0/24 ! -d yyy.yyy.yyy.yyy/32 -j DROP
если всё запрещено, то разрешай соединения из той сети только на нужный адрес
-A FORWARD -s xxx.xxx.xxx.0/24 -d yyy.yyy.yyy.yyy/32 -j ACCEPT
И скури http://www.google.ru/search?q=iptables tutorial

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

В цепочку INPUT попадают только пакеты предназначенные этой конкретной машине. В цепочке OUTPUT - локально сгенерированные пакеты. FORWARD - транзитный трафик, как раз тебе эта цепочка и нужна.
Указание сети должно работать. Может ты забываешь прописать разрешающее правило для трафика в обратную сторону?

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

спасибо за помощь, проблема заключалась в том что в FORWARD забыл совсем про обратку написать, обратной сети небыло, поэтому ничего и не работало. Проблема решена

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