Войти

Показать полную графическую версию : Прозрачный прокси сервер Squid


User85vv
08-06-2017, 11:05
Не работает прозрачный прокси сервер на squid
Делал по этой статье https://habrahabr.ru/post/272733/
Squid и все остальное встало без ошибок и штатно работает.

Прокси сервер настроен как 192.168.0.4 и 10.11.0.4. В инет сам ходит.
Тестовый компьютер 192.168.0.117 с прописанной проксей 192.168.0.4:3130 в инет ходит.
Без прописанной прокси - нет.
Пока не добавил маршрут route, инет не работал на компе локальной сети с проксей:
default 10.11.0.1 0.0.0.0 UG 0 0 0 eth1

Конфиг сети:
eth0 локальная сеть 192.168.0.0/24
eth1 смотрит в DMZ 10.11.0.0/26
За DMZ cisco 10.11.0.1. Далее провайдер инета.

Кто-нибудь подскажет, так понимаю надо копать в iptables и route?
Под спойлером все детально:


root@proxy:~# nano /etc/network/interfaces
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address 192.168.0.4
netmask 255.255.255.0
network 192.168.0.0
broadcast 192.168.0.255
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8

allow-hotplug eth1
iface eth1 inet static
address 10.11.0.4
netmask 255.255.255.192
network 10.11.0.0
broadcast 10.11.0.255
gateway 10.11.0.1
# dns-* options are implemented by the resolvconf package, if installed
dns-nameservers 8.8.8.8


root@proxy:~# ifconfig
eth0 Link encap:Ethernet HWaddr 00:0c:29:21:ac:de
inet addr:192.168.0.4 Bcast:192.168.0.255 Mask:255.255.255.0
inet6 addr: fe80::20c:29ff:fe21:acde/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:351853 errors:0 dropped:101171 overruns:0 frame:0
TX packets:166454 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000

eth1 Link encap:Ethernet HWaddr 00:0c:29:21:ac:e8
inet addr:10.11.0.4 Bcast:10.11.0.255 Mask:255.255.255.192
inet6 addr: fe80::20c:29ff:fe21:ace8/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:95091 errors:0 dropped:0 overruns:0 frame:0
TX packets:57708 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000


root@proxy:~#iptables -t nat -L
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- localnet/24 anywhere tcp dpt:https redir ports 3129
REDIRECT tcp -- localnet/24 anywhere tcp dpt:http redir ports 3128

root@proxy:~# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 10.11.0.1 0.0.0.0 UG 0 0 0 eth1
10.11.0.0 10.11.0.1 255.255.255.0 UG 0 0 0 eth1
localnet * 255.255.255.0 U 0 0 0 eth0

Jula0071
08-06-2017, 11:35
В статье сервер со squid одновременно является и шлюзом, у вас же шлюз отдельный -
cisco 10.11.0.1 »
На циске вам и нужно настроить редирект веб-трафика на squid. Поскольку у cisco есть свой протокол для этого - wccp, то и squid нужно будет подправить. Кодовые слова для поиска wccp cisco squid, в гугле полно инфы.

User85vv
08-06-2017, 12:09
Цитата Jula0071:
В статье сервер со squid одновременно является и шлюзом, у вас же шлюз отдельный - »
что мешает сделать мне squid шлюзом?
добавил
default 10.11.0.4 0.0.0.0 UG 0 0 0 eth1
Но инет работает также только с прокси.
Нельзя обойтись без редактирования cisco? Поднять NAT например

Jula0071
08-06-2017, 12:28
что мешает сделать мне squid шлюзом? »
В смысле сделать сервер, на котором установлен squid ещё и шлюзом вместо циски? Да наверное ничего, это ваше дело.
Нельзя обойтись без редактирования cisco? Поднять NAT например »
Можно, выкинув циску. :)

Вы точно уяснили, как работает прозрачный прокси? Запрос, направляющийся через default gw, на нём перехватывается и перенаправляется им на прокси, где обрабатывается и возвращается клиенту опять через шлюз. Мм.. как-то не очень словами, но вот подходящая картинка нашлась.
http://www.sustworks.com/site/prod_ipnrx_help/html/proxy3.gif

User85vv
08-06-2017, 12:39
Примерно да. Но не работает без прокси интернет. В чем может быть причина.
Какие маршруты задать через route? Или что именно прописать в iptables в моем случае.

P>S. Интересно что вот эта команада
iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT #разрешаем приём пакетов по установленным соединениям
Открывает полностью интернет не смотря на правила squid. Инет есть и с проксей и без прокси. Главное чтобы на клиенте был прописан шлюз.

User85vv
08-06-2017, 13:09
Спасибо сделал сам. Надо было настроить обмен пакетами между eth0 и eth1 в обе стороны через iptables.@

Ан-нет. Рано радовался. Сбойнул шлюз. Тоже самое. Есть идеи?

CJ F.A.N.
08-11-2017, 14:44
Приветствую. Я - автор статьи. Напишу свои замечания.
1) для успешной "прозрачной" работы Squid должен являться шлюзом для локальных устройств.
2) на шлюзе должен быть включен маскарадинг и перенаправление трафика 80 и 443 портов

iptables -t nat -A PREROUTING -p tcp -m tcp -s 192.168.1.0/24 --dport 443 -j REDIRECT --to-ports 3129
iptables -t nat -A PREROUTING -p tcp -m tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -j MASQUERADE

3) мне писАли про успешную работу прозрачного прокси, когда он не являлся шлюзом, там игрались в vlan'ами, но гемор еще тот.




© OSzone.net 2001-2012