Прозрачный прокси

Автор: IT-psih Дата: 03.11.2006 12:19 Люди добрые HELP.
Пытаюсь настроить прозрачный прокси. Squid.conf - ок
IPtables - тоже ок.
(iptables -t nat -A PREROUTING -p tcp -d 0/0 --dport www -i eth0 -j DNAT --to 192.168.1.4:3128)
Но не работет.
Даже FORWARDING включил. Но всё таки не работает.
Я человек не ленивый но месяц! уже убил.
Может ли кто-то сказать у кого работает, какие файлы редактировать,
и какие команды по IPtables нужны.
Потому что чуствую что-то не доделал.
Заранее спасибо.
PS Возможно ли пропустить через прозрачный прокси игры в инет? Такие как Need For Speed, Warcraft ....
Re: Прозрачный прокси 03.11.2006 12:45Cherepulya у меня работает Улыбка

В сквид.конф нужно прописать несколько дополнительных параметров для транспарент прокси:
* httpd_accel_host virtual
* httpd_accel_port 80
* httpd_accel_with_proxy on
* httpd_accel_uses_host_header on

Для заворачивания пакетов файерволом

iptables -t nat -A PREROUTING -p tcp -m multiport --dport 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-port 3128

далее для маскарада остальных пакетов
-A POSTROUTING -o eth1 -j MASQUERADE

ну и таки включить пересылку пакетов между интерфейсами нужно для всего:
echo 1 > /proc/sys/net/ipv4/ip_forward

P.S. через сквид можно прогонять только хттп (фтп) трафик. Для игрух нужен банальный НАТ.

P.P.S. если не заработает - пришлите нам вывод команд
route -n
iptables -L
iptables-save
да и загляните в /var/log/squid - есть ли попытки доступа. А то невозможно локализовать проблему. То ли файрвол на заворачивает пакеты, то ли сам сквид их получает но из-за неправильной настройки их не прлпускает. На клиентских машинах в GATEAWAY настройках сети хоть указан адрес вашего сервера? ;-)
Re: Прозрачный прокси 03.11.2006 16:58IT-psih # Routing

Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
212.26.133.28 0.0.0.0 255.255.255.252 U 0 0 0 eth1
172.16.198.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
10.100.0.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.168.191.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1
0.0.0.0 212.26.133.29 0.0.0.0 UG 0 0 0 eth1

# iptables

Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain RH-Lokkit-0-50-INPUT (0 references)
target prot opt source destination

iptables-save

# Generated by iptables-save v1.2.11 on Fri Nov 3 15:53:24 2006
*nat
:-PREROUTING ACCEPT [104054:7604918]
:-POSTROUTING ACCEPT [5399:655583]
:OUTPUT ACCEPT [67213:4403127]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.4:3128
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.100.0.1:3128
-A PREROUTING -d 10.100.0.0/255.255.255.0 -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.100.0.1:3128
-A PREROUTING -p tcp -m multiport --dports 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-ports 3128
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Fri Nov 3 15:53:24 2006
# Generated by iptables-save v1.2.11 on Fri Nov 3 15:53:24 2006
*filter
:INPUT ACCEPT [12115738:11552815711]
:FORWARD ACCEPT [886328:156006894]
:OUTPUT ACCEPT [12213593:9894293589]
:RH-Lokkit-0-50-INPUT - [0:0]
COMMIT
# Completed on Fri Nov 3 15:53:24 2006
Re: Прозрачный прокси 03.11.2006 17:52Cherepulya Непонятно откуда взялся адрес 192.168.1.4
Из таблицы роутинга видно что внутренний интерфейс (eth0) имеет 10.100.0.1
Внешний интерфейс (eth1) имеет 212.26.133.28

Невооруженным взглядом заметно отсутствие понимания некоторых нюансов работы iptables и нежелание очищать старые неработающие правила.

Рекомендуется к прочтению iptables-tutorial на будущее.


Что делать сейчас:

дать команду iptables-save > /etc/sysconfig/iptables

Файл /etc/sysconfig/iptables привести к ТАКОМУ ВИДУ:

# Generated by iptables-save v1.2.11 on Fri Nov 3 15:53:24 2006
*nat
:-PREROUTING ACCEPT [104054:7604918]
:-POSTROUTING ACCEPT [5399:655583]
:OUTPUT ACCEPT [67213:4403127]
-A PREROUTING -p tcp -m multiport --dports 80,81,82,83,88,8000,8001,8002,8080,8081 -j REDIRECT --to-ports 3128
-A POSTROUTING -o eth1 -j MASQUERADE
COMMIT
# Completed on Fri Nov 3 15:53:24 2006
# Generated by iptables-save v1.2.11 on Fri Nov 3 15:53:24 2006
*filter
:INPUT ACCEPT [12115738:11552815711]
:FORWARD ACCEPT [886328:156006894]
:OUTPUT ACCEPT [12213593:9894293589]
:RH-Lokkit-0-50-INPUT - [0:0]
COMMIT
# Completed on Fri Nov 3 15:53:24 2006

потом сделать /sbin/service iptables restart

В результате http запросы будут футболится сквиду, а остальное будет просто НАТится.

P.S. внимательнее со строками в правилах iptables - форум может побить то, что должно идти одной строкой.

P.P.S. подразумевается что squid висит на внутреннем интерфейсе (10.100.0.1) и слушает порт 3128. На клиентских машинах в сети 10.100.0.0 адрес шлюза должен быть 10.100.0.1
RSS-материал