LINUX.ORG.RU

iptables REDIRECT


1

1

Доброго времени суток!
ОС Linux Debian 6
не работает инет на локальных машинах
есть
eth0=xxx
eth1=10.10.10.1

squid:
http_port 10.10.10.1:3128 transparent

делаю
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.10.10.0/24 -j REDIRECT --to-ports 3128

но если ставить например в браузере клиента прокси 10.10.10.1 порт 80 или 3128 то инет есть
причем фишка в том что именно порт 80 пишу и заставляю его тупо по 80 обращаться на шлюз (как будто браузер сам не знает что по умолчанию надо на 80 ходить)

шлюз в сетевухе на клиентской машине стоит 10.10.10.1
так же пробовал
modprobe iptable_nat
и
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128

ПРОШУ ВАШЕ ВНИМАНИЕ! вопрос нужно решить без DNAT



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

есть у кого нить соображения? я понимаю тема заезжаная, но с такой хреновиной столкнулся в первые

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

для того чтобы прокси требовал пароль, его прежде всего необходимо настроить соответствующим образом, а в данном случае конф дефолтный
за исключением строк
http_port 10.10.10.1:3128 transparent и
acl localnet src 10.10.10.0/24

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

Понятно, есть такое:

HTTP/1.0 connections without the Host header do not get handled properly. Connections that are fully or partially HTTP/1.1 compliant work fine. As most modern web browsers send the Host header, this is not a problem for most people. However, some small programs or embedded devices may send only very simple HTTP/1.0 requests

http://tldp.org/HOWTO/TransparentProxy-6.html#ss6.1

ps... не сталкивался

n01r ★★
()

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

Это не надо. У вас нет прямого прохождения пакетов, а squid и так работает.

iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.10.10.0/24 -j REDIRECT --to-ports 3128

Неверно.

Надо:

iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.10.10.0/24 --dport 80 -j DNAT --to-destination 10.10.10.1:3128

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

Упс.

Не заметил.

ПРОШУ ВАШЕ ВНИМАНИЕ! вопрос нужно решить без DNAT

Ну тогда ваш второй вариант должен работать.

А если не секрет, почему DNAT нельзя?

shell-script ★★★★★
()
Ответ на: комментарий от n01r

Цитата HTTP/1.0 connections without the Host header do not get handled properly. Connections that are fully or partially HTTP/1.1 compliant work fine. As most modern web browsers send the Host header, this is not a problem for most people. However, some small programs or embedded devices may send only very simple HTTP/1.0 requests

в данном случае используется совремЁнный браузер и он «к счастью» помещает в заголовке пакета имя хоста, а что касается каких то левых приблуд используемых в локальной сети, то это можно организовать DNAT-ом без каких либо проблем и писаний в форум за ссылку thanks, позабавила, научила уму разума

awful
() автор топика
Ответ на: комментарий от shell-script

>А если не секрет, почему DNAT нельзя?
ну..м.мм скажу так, из-за соображений нагрузки (оперативу жрет больше, проц подгружает), понятно что в наше время не актуально, хотя для этих целей и было придумано проброс портов, а не сетевых адресов.
так вот...по поводу redirect, везде в лже-псевдо манах линуксовых пишут , что «чисто» redirect решает проблему, у меня без SNAT не получается, вот и советуюсь у умных людей, мож я че не так делаю?! причем замете в детском вопросе

awful
() автор топика
Ответ на: комментарий от shell-script

извиняюсь, сразу не увидел...

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


Это не надо. У вас нет прямого прохождения пакетов, а squid и так работает.

Согласен! Это было написано для отсутствия комментариев
«А сделай типа вот так echo 1 > /proc/sys/net/ipv4/ip_forward


iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.10.10.0/24 -j REDIRECT --to-ports 3128


Неверно.

какими соображениями Вы руководствовались заявляя что

iptables -t nat -A PREROUTING -i eth1 -p tcp -s 10.10.10.0/24 -j REDIRECT --to-ports 3128----это не правильно! ?????


уважаемый...здесь написано, все что валится на интерфейс (в данном случае он как раз смотрит в локальную сетку туда куда надо) с адресов подсети и все это добро заворачивать на порт 80, то есть другими словами все! заворачивать на 3128 что с 10.10.10.0/24

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

Да, ошибся. Невнимательно прочитал(сонный был уже).
В общем, проверил у себя.
Всё работает.

# iptables -t nat -nvL
Chain PREROUTING (policy ACCEPT 1923 packets, 182K bytes)
pkts bytes target prot opt in out source destination
22 1320 REDIRECT tcp — eth1 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 redir ports 3128
222K 12M DNAT tcp — * * 0.0.0.0/0 192.168.2.35 tcp dpt:6881 to:10.0.0.10
71709 5024K DNAT udp — * * 0.0.0.0/0 192.168.2.35 udp dpt:6881 to:10.0.0.10

Chain POSTROUTING (policy ACCEPT 333 packets, 20865 bytes)
pkts bytes target prot opt in out source destination
732K 75M SNAT all — * * 10.0.0.0/24 0.0.0.0/0 to:192.168.2.35

Chain OUTPUT (policy ACCEPT 117 packets, 8080 bytes)
pkts bytes target prot opt in out source destination

А у вас точно в редиректе затык? Про squid вы писали, всё нормально, если напрямую. Не отфильтровывается ли чего в таблице filter?

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

всем большое спасибо за отклик в форуме (в частности shell-script) по данной проблеме, решение было очень простым-пересборка ядра. Тему можно закрыть

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