Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Администрирование *NIX систем > iptables forward


Автор: Goganchic 18.4.2007, 09:55
Вопрос такой: машина является NAT-ом, таким образом на нее сливаются все пакеты которые предназначены для другой сети. Как сделать так, чтобы пакеты, предназначенные не этой машине форвардились дальше? Надо сделать чтобы это было на все порты, причем если пакет попадает под определенное правило (тоже порт), то он остается на данной машине (нужно для каких-либо проверок, например начальство хочет видеть все разговоры пользователей по ICQ и т.п., естественно пользователи об этом осведомлены и дают свое согласие).
Подоволя итог, надо чтобы в общем случае пакеты посылались дальше в сеть, а в частных случаях оставлялись на данной машине.
Для частного случая команда для iptables выглядит так:
Код

iptables -t nat -A PREROUTING -s 0/0 -p tcp -d 0/0 --dport 123 -j DNAT --to-destination 1.1.1.1

где 123 - номер порта, а 1.1.1.1 - IP текущей машины (NAT'а)
Как сделать правило по-умолчанию для форвардинга всего дальше в сеть?

Автор: bilbobagginz 18.4.2007, 10:35
если я вас правильно понял вы хотите всего лишь сделать это:
echo "1" >> /proc/sys/net/ipv4/ip_forward

когда ваш машина поднимается.
Часто в дистрибутивах есть для этого уже скриптик, а включают его либо установив какую-то переменную в /etc/sysconfig/ ( и грепнув на forward: grep -i forward ... )
либо если система основана на Дебиан - /etc/default/ и грепнув в том же духе.

если что-то непонятно... дайте больше данных о вашей системе, и возьмите это за правило. 

Автор: Goganchic 18.4.2007, 11:01
Цитата(bilbobagginz @  18.4.2007,  10:35 Найти цитируемый пост)
echo "1" >> /proc/sys/net/ipv4/ip_forward

Спасибо, помогло. И еще такой вопрос: не будут ли пакеты, которые мы забираем себе в user space с помощью iptables форвардиться дальше в сеть?
Машина - Debian 4.0
Еще нужны данные о машине?

Автор: bilbobagginz 18.4.2007, 15:18
для того, чтобы это:
Код

echo "1" >> /proc/sys/net/ipv4/ip_forward

не делать самому каждый ребут, нужно редактировать файл /etc/network/options и добавить в него строку:
Код

ip_forward=yes


тогда система сама будет это делать автоматически ( при запуске системного скрипта /etc/init.d/networking )

Цитата

И еще такой вопрос: не будут ли пакеты, которые мы забираем себе в user space с помощью iptables форвардиться дальше в сеть?

не понимаю вопрос... можно пример ?


Автор: Goganchic 18.4.2007, 21:36
предположим что машина 1 имеет ip 1.2.3.4. У машины 2 1.2.3.5 машина 1 установлена в качестве default gateway. Машина 2 устанавливает tcp сессию с машиной 3 с ip адресом 1.2.4.1 и посылает все пакеты через машину 1. На машине 1 мы вынимаем сессию в user space с помощью соответствующего правила в iptables. С другой стороны на машине 2 установлен ip forwarding. Вопрос в том получит ли машина 2 только копии пакетов от машины 1 к машине 3 или же сессия будет только на машине 2 и дальше в сеть не пойдет?

Автор: bilbobagginz 19.4.2007, 00:30
если вопрос: можно ли отражать все сообщения проходящие между 2 и 3 в обоих направлениях и обрабатывать их, без эффекта на коммуникацию между 2 и 3, то ответ - ДА.
если вопрос обратный - буду ли они отражаться автоматически, - то ответ зависит от оборудования сети:
если связь между 1,2,3 - на концентраторе (hub) - то все узлы локальной сети видят ВСЕ СООБЩЕНИЯ.
если на коммутаторе (switch), то обычно - НЕТ, если не включен особый режим.
если связь - беспроводная, то сообщения слышат/видят не только узлы данной локальной сети, но и все узлы способные принимать передачу на канале данной сети.

не понимаю к чему были слова "юзер спейс", "вынимаем сессию", "копии пакетов" и т.д.

Автор: ZeeLax 19.4.2007, 05:02
Цитата(Goganchic @  19.4.2007,  00:36 Найти цитируемый пост)
в качестве default gateway

в качестве маршрутизатора по умолчанию.

Цитата(Goganchic @  19.4.2007,  00:36 Найти цитируемый пост)
На машине 1 мы вынимаем сессию в user space с помощью соответствующего правила в iptables

Какого это такого правила?
Вам к Таненбауму надо сходить.

Автор: bilbobagginz 19.4.2007, 09:59
Цитата(ZeeLax)

Вам к Таненбауму надо сходить. 

Подписываюсь Под Каждым Словом.

Автор: Goganchic 19.4.2007, 14:04
в общем, вопрос решен

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)