LINUX.ORG.RU
ФорумAdmin

Squid на отдельном хосте, истекло время ожидания

 , ,


0

1

Поднял сквид на отдельном хосте(не шлюз), слушает 3128 http 3129 https в прозрачном режиме, 3130 http не позрачный.
Если в браузере явно указать 3130 то вме работает как и должно.
Если заворачиваю трафик на шлюзе в сторону прозрачный портов плучаю ошибку соединения.
Шлюз zeroshall 3.8.0. Логи шлюза говорят что трафик направлен на порт прокси, tcpdump на проксе показывает что запросы поступают, а дальше тишина, в ацес и кеш логаз сквтда пусто.
В чем может быть проблема, может кто сталкивался?

★★

А пишет ли прокся лог? Во-первых, явно укажи ему файл лога, во-вторых, поиграй с debug_options. В мане указано, какая последовательность за что отвечает.

heilnull ★★ ()

Правила iptables в script|cron Zeroshell

iptables -t nat -A PREROUTING -p tcp -i ETH02 -s 10.55.96.198 --dport 80 -j DNAT --to 10.55.96.51:3128
iptables -t nat -A PREROUTING -p tcp -i ETH02 -s 10.55.96.198 --dport 443 -j DNAT --to 10.55.96.51:3129

Конфиг Сквида
acl localnet src 10.55.96.0/23

acl SSL_ports port 443
acl Safe_ports port 80          # http
acl Safe_ports port 21          # ftp
acl Safe_ports port 443         # https
acl Safe_ports port 70          # gopher
acl Safe_ports port 210         # wais
acl Safe_ports port 1025-65535  # unregistered ports
acl Safe_ports port 280         # http-mgmt
acl Safe_ports port 488         # gss-http
acl Safe_ports port 591         # filemaker
acl Safe_ports port 777         # multiling http

acl CONNECT method CONNECT

http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
include /etc/squid/conf.d/*
http_access allow localnet
http_access deny all

# Прозрачный порт указывается опцией intercept
#http_port 3128 intercept options=NO_SSLv3:NO_SSLv2
#http_port 10.55.96.51:3128 intercept
http_port 3128 intercept

# Также нужно указать непрозрачный порт, ибо если захотите вручную указать адрес
# прокси в браузере, указав прозрачный порт, вы получите ошибку доступа, поэтому нужно
# указывать непрозрачный порт в браузере, если конечно такое желание будет, к тому же в логах #сыпятся ошибки о том, что непрохрачный порт не указан=)
#http_port 3130 options=NO_SSLv3:NO_SSLv2
#http_port 10.55.96.51:3130
http_port 3130

# Указываем HTTPS порт с нужными опциями
#https_port 3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squidCA.pem
https_port 3129 intercept ssl-bump cert=/etc/squid/squidCA.pem
#https_port 3129 intercept ssl-bump cert=/etc/squid/squidCA.pem

always_direct allow all
sslproxy_cert_error allow all
#sslproxy_flags DONT_VERIFY_PEER

# укажем правило со списком блокируемых ресурсов (в файле домены вида .domain.com)
acl manual dstdomain "/etc/squid/blocked_http.txt"
acl blocked ssl::server_name  "/etc/squid/blocked_https.txt"
acl step1 at_step SslBump1
ssl_bump peek step1
#SSL_bump peek all

http_access deny manual localnet

#терминируем соединение, если клиент заходит на запрещенный ресурс
ssl_bump terminate blocked
ssl_bump splice all

sslcrtd_program /usr/lib/squid/security_file_certgen -s /var/lib/ssl_db -M 4MB

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

Connection tracking Zeroshell

tcp      6 115 SYN_SENT src=10.55.96.198 dst=ip sport=49317 dport=443 packets=3 bytes=152 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3129 dport=49317 packets=0 bytes=0 mark=100 use=1
tcp      6 88 SYN_SENT src=10.55.96.198 dst=ip sport=49306 dport=80 packets=1 bytes=48 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3128 dport=49306 packets=0 bytes=0 mark=100 use=1
udp      17 8 src=10.55.96.198 dst=ip sport=65344 dport=53 packets=1 bytes=67 [UNREPLIED] src=ip dst=10.55.96.198 sport=53 dport=65344 packets=0 bytes=0 mark=100 use=2
tcp      6 94 SYN_SENT src=10.55.96.198 dst=ip sport=49309 dport=80 packets=2 bytes=100 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3128 dport=49309 packets=0 bytes=0 mark=100 use=1
tcp      6 119 SYN_SENT src=10.55.96.198 dst=ip sport=49320 dport=13000 packets=3 bytes=152 [UNREPLIED] src=ip dst=10.55.96.198 sport=13000 dport=49320 packets=0 bytes=0 mark=100 use=1
tcp      6 100 SYN_SENT src=10.55.96.198 dst=ip sport=49310 dport=80 packets=3 bytes=152 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3128 dport=49310 packets=0 bytes=0 mark=100 use=1
udp      17 15 src=10.55.96.198 dst=ip sport=68 dport=67 packets=1 bytes=328 [UNREPLIED] src=255.255.255.255 dst=10.55.96.198 sport=67 dport=68 packets=0 bytes=0 mark=100 use=1
tcp      6 115 SYN_SENT src=10.55.96.198 dst=ip sport=49319 dport=80 packets=2 bytes=104 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3128 dport=49319 packets=0 bytes=0 mark=100 use=1
tcp      6 107 SYN_SENT src=10.55.96.198 dst=ip sport=49312 dport=443 packets=3 bytes=152 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3129 dport=49312 packets=0 bytes=0 mark=100 use=1
udp      17 15 src=10.55.96.11 dst=10.55.96.198 sport=67 dport=68 packets=1 bytes=328 [UNREPLIED] src=10.55.96.198 dst=10.55.96.11 sport=68 dport=67 packets=0 bytes=0 mark=100 use=1
tcp      6 86 SYN_SENT src=10.55.96.198 dst=ip sport=49304 dport=443 packets=1 bytes=48 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3129 dport=49304 packets=0 bytes=0 mark=100 use=1
tcp      6 115 SYN_SENT src=10.55.96.198 dst=ip sport=49318 dport=80 packets=3 bytes=152 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3128 dport=49318 packets=0 bytes=0 mark=100 use=1
tcp      6 98 SYN_SENT src=10.55.96.198 dst=ip sport=49313 dport=13111 packets=1 bytes=52 [UNREPLIED] src=ip dst=10.55.96.198 sport=13111 dport=49313 packets=0 bytes=0 mark=100 use=1
tcp      6 109 SYN_SENT src=10.55.96.198 dst=ip sport=49315 dport=80 packets=3 bytes=152 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3128 dport=49315 packets=0 bytes=0 mark=100 use=1
tcp      6 109 SYN_SENT src=10.55.96.198 dst=ip sport=49316 dport=443 packets=3 bytes=152 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3129 dport=49316 packets=0 bytes=0 mark=100 use=1
tcp      6 86 SYN_SENT src=10.55.96.198 dst=ip sport=49305 dport=443 packets=1 bytes=48 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3129 dport=49305 packets=0 bytes=0 mark=100 use=1
tcp      6 105 SYN_SENT src=10.55.96.198 dst=ip sport=49311 dport=80 packets=3 bytes=152 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3128 dport=49311 packets=0 bytes=0 mark=100 use=1
tcp      6 119 SYN_SENT src=10.55.96.198 dst=ip sport=49321 dport=443 packets=1 bytes=52 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3129 dport=49321 packets=0 bytes=0 mark=100 use=1
tcp      6 88 SYN_SENT src=10.55.96.198 dst=ip sport=49307 dport=443 packets=1 bytes=48 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3129 dport=49307 packets=0 bytes=0 mark=100 use=1
tcp      6 108 SYN_SENT src=10.55.96.198 dst=ip sport=49314 dport=443 packets=3 bytes=152 [UNREPLIED] src=10.55.96.51 dst=10.55.96.198 sport=3129 dport=49314 packets=0 bytes=0 mark=100 use=1


Tcpdump proxy
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on enp3s0, link-type EN10MB (Ethernet), capture size 262144 bytes
09:45:59.761646 IP 110-urbck.voenet.local.3129 > 10.55.96.198.49316: Flags [S.], seq 546698520, ack 4165633136, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
09:46:00.853764 IP 110-urbck.voenet.local.3128 > 10.55.96.198.49311: Flags [S.], seq 2064263033, ack 4263293099, win 29200, options [mss 1460,nop,nop,sackOK], length 0
09:46:01.771413 IP 110-urbck.voenet.local.3129 > 10.55.96.198.49317: Flags [S.], seq 2273582733, ack 1487761914, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
09:46:02.273709 IP 110-urbck.voenet.local.3128 > 10.55.96.198.49318: Flags [S.], seq 4183864374, ack 2017860718, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
09:46:03.187064 IP 110-urbck.voenet.local.3129 > 10.55.96.198.49312: Flags [S.], seq 3604041242, ack 2321476455, win 29200, options [mss 1460,nop,nop,sackOK], length 0
09:46:03.797105 IP 110-urbck.voenet.local.3129 > 10.55.96.198.49314: Flags [S.], seq 1002121596, ack 1847701747, win 29200, options [mss 1460,nop,nop,sackOK], length 0
09:46:04.777213 IP 110-urbck.voenet.local.3129 > 10.55.96.198.49317: Flags [S.], seq 2320548531, ack 1487761914, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
09:46:05.275157 IP 110-urbck.voenet.local.3128 > 10.55.96.198.49318: Flags [S.], seq 4230762007, ack 2017860718, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
09:46:05.277264 IP 110-urbck.voenet.local.3128 > 10.55.96.198.49315: Flags [S.], seq 2053023868, ack 4232595553, win 29200, options [mss 1460,nop,nop,sackOK], length 0
09:46:05.767425 IP 110-urbck.voenet.local.3129 > 10.55.96.198.49316: Flags [S.], seq 640538777, ack 4165633136, win 29200, options [mss 1460,nop,nop,sackOK], length 0
09:46:07.868963 IP 110-urbck.voenet.local.3128 > 10.55.96.198.49319: Flags [S.], seq 1669225740, ack 1635673538, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
09:46:10.785975 IP 110-urbck.voenet.local.3129 > 10.55.96.198.49317: Flags [S.], seq 2414435264, ack 1487761914, win 29200, options [mss 1460,nop,nop,sackOK], length 0
09:46:10.879452 IP 110-urbck.voenet.local.3128 > 10.55.96.198.49319: Flags [S.], seq 1716264671, ack 1635673538, win 29200, options [mss 1460,nop,nop,sackOK,nop,wscale 7], length 0
09:46:11.285131 IP 110-urbck.voenet.local.3128 > 10.55.96.198.49318: Flags [S.], seq 29700552, ack 2017860718, win 29200, options [mss 1460,nop,nop,sackOK], length 0

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

Написал же, что если явно указать прокси в браузере то работает как надо)

Запрос курлом через непрозрачный порт

curl -x 10.55.96.51:3130 http://akamaitechnologies.com
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<meta type="copyright" content="Copyright (C) 1996-2018 The Squid Software Foundation and contributors">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>ERROR: The requested URL could not be retrieved</title>
<style type="text/css"><!--
 /*
 * Copyright (C) 1996-2019 The Squid Software Foundation and contributors
 *
 * Squid software is distributed under GPLv2+ license and includes
 * contributions from numerous individuals and organizations.
 * Please see the COPYING and CONTRIBUTORS files for details.
 */

/*
 Stylesheet for Squid Error pages
 Adapted from design by Free CSS Templates
 http://www.freecsstemplates.org
 Released for free under a Creative Commons Attribution 2.5 License
*/

/* Page basics */
* {
        font-family: verdana, sans-serif;
}

html body {
        margin: 0;
        padding: 0;
        background: #efefef;
        font-size: 12px;
        color: #1e1e1e;
}

/* Page displayed title area */
#titles {
        margin-left: 15px;
        padding: 10px;
        padding-left: 100px;
        background: url('/squid-internal-static/icons/SN.png') no-repeat left;
}

/* initial title */
#titles h1 {
        color: #000000;
}
#titles h2 {
        color: #000000;
}

/* special event: FTP success page titles */
#titles ftpsuccess {
        background-color:#00ff00;
        width:100%;
}

/* Page displayed body content area */
#content {
        padding: 10px;
        background: #ffffff;
}

/* General text */
p {
}

/* error brief description */
#error p {
}

/* some data which may have caused the problem */
#data {
}

/* the error message received from the system or other software */
#sysmsg {
}

pre {
}

/* special event: FTP / Gopher directory listing */
#dirmsg {
    font-family: courier, monospace;
    color: black;
    font-size: 10pt;
}
#dirlisting {
    margin-left: 2%;
    margin-right: 2%;
}
#dirlisting tr.entry td.icon,td.filename,td.size,td.date {
    border-bottom: groove;
}
#dirlisting td.size {
    width: 50px;
    text-align: right;
    padding-right: 5px;
}

/* horizontal lines */
hr {
        margin: 0;
}

/* page displayed footer area */
#footer {
        font-size: 9px;
        padding-left: 10px;
}


body
:lang(fa) { direction: rtl; font-size: 100%; font-family: Tahoma, Roya, sans-serif; float: right; }
:lang(he) { direction: rtl; }
 --></style>
</head><body id=ERR_DNS_FAIL>
<div id="titles">
<h1>ERROR</h1>
<h2>The requested URL could not be retrieved</h2>
</div>
<hr>

<div id="content">
<p>The following error was encountered while trying to retrieve the URL: <a href="http://akamaitechnologies.com/">http://akamaitechnologies.com/</a></p>

<blockquote id="error">
<p><b>Unable to determine IP address from host name <q>akamaitechnologies.com</q></b></p>
</blockquote>

<p>The DNS server returned:</p>
<blockquote id="data">
<pre>No DNS records</pre>
</blockquote>

<p>This means that the cache was not able to resolve the hostname presented in the URL. Check if the address is correct.</p>

<p>Your cache administrator is <a href="mailto:webmaster?subject=CacheErrorInfo%20-%20ERR_DNS_FAIL&amp;body=CacheHost%3A%20110-urbck%0D%0AErrPage%3A%20ERR_DNS_FAIL%0D%0AErr%3A%20%5Bnone%5D%0D%0ADNS%20ErrMsg%3A%20No%20DNS%20records%0D%0ATimeStamp%3A%20Fri,%2004%20Oct%202019%2006%3A22%3A27%20GMT%0D%0A%0D%0AClientIP%3A%2010.55.96.50%0D%0A%0D%0AHTTP%20Request%3A%0D%0AGET%20%2F%20HTTP%2F1.1%0AUser-Agent%3A%20curl%2F7.55.1%0D%0AAccept%3A%20*%2F*%0D%0AProxy-Connection%3A%20Keep-Alive%0D%0AHost%3A%20akamaitechnologies.com%0D%0A%0D%0A%0D%0A">webmaster</a>.</p>
<br>
</div>

<hr>
<div id="footer">
<p>Generated Fri, 04 Oct 2019 06:22:27 GMT by 110-urbck (squid/4.6)</p>
<!-- ERR_DNS_FAIL -->
</div>
</body></html>

Ацес лог
1570170147.998    295 10.55.96.50 TCP_MISS/503 4056 GET http://akamaitechnologies.com/ - HIER_NONE/- text/html

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


Ацес лог

1570170147.998    295 10.55.96.50 TCP_MISS/503 4056 GET http://akamaitechnologies.com/ - HIER_NONE/- text/html


1570170147.998    295 10.55.96.50 TCP_MISS/503 4056 GET http://akamaitechnologies.com/ - HIER_NONE/- text/html
1570170448.308    317 10.55.96.50 TCP_MISS/200 1221 POST http://otrs.voenet.local/otrs/index.pl - HIER_DIRECT/10.77.100.10 text/html
1570170463.085    444 10.55.96.50 TCP_MISS/503 4396 GET http://akamaitechnologies.com/robots.txt - HIER_NONE/- text/html
1570170463.085    406 10.55.96.50 TCP_MISS/503 4478 GET http://akamaitechnologies.com/ - HIER_NONE/- text/html
1570170463.377     20 10.55.96.50 TCP_HIT/200 13060 GET http://110-urbck:3130/squid-internal-static/icons/SN.png - HIER_NONE/- image/png
1570170463.425      0 10.55.96.50 TCP_MISS/503 4412 GET http://akamaitechnologies.com/favicon.ico - HIER_NONE/- text/html

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

отсутствие ack на syn обычно бывает в случае если:

ответный пакет уходит в другую сторону (по таблице машрутизации)

зарезан правилами iptables

выключен форвардинг

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

отсутствие ack на syn обычно бывает в случае если:

ответный пакет уходит в другую сторону (по таблице машрутизации)

зарезан правилами iptables

выключен форвардинг

Я правильно понимаю, что если бы одно из условий имело место быть, то squid бы не отвечал и на 3130? Или не туда смотрю?

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

Был 0, но машина со сквидом не является шлюзом, зачем ей форвординг? Изменил на 1. Результат тот, на прозрачных портах в логах пусто.

И повторюсь что на непрозрачном порту 3130 все работает.

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

Ну дык ясный пень, что в непрозрачном варианте должно работать.

Поясняю проблему:

С - ip клиента, S - ip сквида, X - ip внешнего ресурса

syn у тебя идет так: пакет C->X с клинта приходит на шлюз, там он днатится в C->S и на сквид он приходит в виде C->S

А сквид отвечает ему напрямую (клиент со сквидом в одной подсети) со своего адреса пакетом S->C, что приводит клиента в недоумение.

Чтобы NAT работал нужно чтобы пакеты туда и обратно проходили через шлюз.

Самое простое - выселить сквида в отдельную подсеть (vlan).

Либо настраивать policy routing, чтоб ответы от сквида с порта 3128,3129 всегда уходили на шлюз.

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

Самое простое - выселить

К сожалению не получится по определенным обстоятельствам.

настраивать policy routing

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

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

Что то я все таки не догоняю. Завернул трафик со шлюза на сквид уже средствами PBR, на сквиде сделал редирект с 80 на 3128, вижу что пакеты попадающие под политики маршрутизации побежали на сквид, а в логах опять пусто, если обратится к веб сайту на машине со сквидом(там крутится nginx с локальным ресурсом) то сквид отрабатывает в прозрачном режиме как надо. Как я понимаю необходимо направить ответы сквида на шлюз, но уже хз куда копать, идеи кончаются.

На шлюзе

iptables -t mangle -A PREROUTING -p tcp --dport 80 -s 10.55.96.51 -j ACCEPT
iptables -t mangle -A PREROUTING -i ETH02 -p tcp --dport 80 -j MARK --set-mark 2
iptables -t mangle -A PREROUTING -m mark --mark 2 -j ACCEPT
iptables -t filter -A FORWARD -i ETH02 -o ETH02 -p tcp --dport 80 -j ACCEPT

ip rule add fwmark 2 table proxy
ip route add default via 10.55.96.51 table proxy


На сквиде
 iptables -t nat -A PREROUTING -i enp3s0 -p tcp ! -d 10.55.96.51 --dport 80 -j REDIRECT --to-ports 3128

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

Как я понимаю необходимо направить ответы сквида на шлюз, но уже хз куда копать, идеи кончаются.

Именно ответные пакеты! Именно от сквида!

Нахрена ты мучаешь шлюз?!

А на кой хрен ты делаешь 2 редиректа? нужен всего 1 dnat на шлюзе!

На свкиде минимально нужно сделать.

iptables -t mangle -A OUTPUT -p tcp -d 10.55.96.0/24 --sport 3128 -j MARK --set-mark 2
ip rule add fwmark 2 table proxy
ip route add default via 10.55.96.GW dev enp3s0 src 10.55.96.SQ table proxy

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

Спасибо. Пока зпвернул на проксю одну машину для тестов. Вроде почти заработало.

Почти

Потому что доступ по http на машине появился но в access логе только это

1570693220.323    735 10.55.96.198 TCP_MISS/502 4337 GET http://detectportal.firefox.com/success.txt - ORIGINAL_DST/10.55.96.51 text/html
1570693220.343      3 10.55.96.198 TCP_MISS/502 4337 GET http://detectportal.firefox.com/success.txt - ORIGINAL_DST/10.55.96.51 text/html
1570693279.238      6 10.55.96.198 TCP_MISS/502 4337 GET http://detectportal.firefox.com/success.txt - ORIGINAL_DST/10.55.96.51 text/html
1570693279.257      0 10.55.96.198 TCP_MISS/502 4337 GET http://detectportal.firefox.com/success.txt - ORIGINAL_DST/10.55.96.51 text/html
1570693279.270      0 10.55.96.198 TCP_MISS/502 4337 GET http://detectportal.firefox.com/success.txt - ORIGINAL_DST/10.55.96.51 text/html
1570693279.283      0 10.55.96.198 TCP_MISS/502 4337 GET http://detectportal.firefox.com/success.txt - ORIGINAL_DST/10.55.96.51 text/html
1570693279.297      0 10.55.96.198 TCP_MISS/502 4337 GET http://detectportal.firefox.com/success.txt - ORIGINAL_DST/10.55.96.51 text/html
1570693279.314      0 10.55.96.198 TCP_MISS/502 4337 GET http://detectportal.firefox.com/success.txt - ORIGINAL_DST/10.55.96.51 text/html
1570693344.253   5002 10.55.96.198 NONE_ABORTED/000 0 GET http://detectportal.firefox.com/success.txt - HIER_NONE/- -

А в cache логе спамит ошибки
2019/10/10 14:13:39 kid1| ERROR: NF getsockopt(ORIGINAL_DST) failed on local=10.55.96.51:3128 remote=10.55.96.198:59502 FD 12 flags=33: (2) No such file or directory
2019/10/10 14:13:39 kid1| ERROR: NAT/TPROXY lookup failed to locate original IPs on local=10.55.96.51:3128 remote=10.55.96.198:59502 FD 12 flags=33

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

Странно, мне казалось, что для http оно так работало. Для https оно так точно не будет работать.

Я теперь понимаю, почему этот вариант стараются не использовать.

Для реализации этого варианта на роутере нужно форвардить а не DNAT-тить пакеты. У тебя на роутере есть policy routing ? Без этого данный вариант не реализовать.

на роутере либо через tc filter, либо

iptables -t mangle PREROUTING -p tcp ! -d 10.55.96.0/24 --dports 80,443 -j MARK --set-mark 1
ip ru add fwmark 1 table proxy
ip ro add default via 10.55.96.51
А на сквиде уже делать DNAT.

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

У тебя на роутере есть policy routing ?

Да.

То есть завернуть пакеты правилами policy routing на 80 порт сквида как делал выше, а на сквиде днат/редирект 80>3128

Еще вопрос - политика для определенного ip если я правильно понял будет выгдядеть:

ip route add from $ip default via 10.55.96.51 table proxy ?

julixs ★★ ()
Последнее исправление: julixs (всего исправлений: 1)
Ответ на: комментарий от julixs

iproute2 так точно не умеет.

про zeroshall до этой темы никогда ничего не слышал. Так что как там определить политику - сам разбирайся.

В линукса самое простое решене - маркировать пакеты и в ip ru по марке через доп. таблицу форвардить на сквид.

Раньше был "-j ROUTE --gw" который умел роутить пакеты.

rp_filter нужно не забыть отключить. Он в таких случаях любит тихо дропать пакеты...

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

Я выше приводил команды iproute2 они работают на zeroshell. Единствено их скорей всего придется прписывать в postboot scripts так как нет возможности указыват preup/postupкоманды. Посути можно было бы установит сквид на ZS но он там v4.0 и без ssl. Да и места под кешь мало 40гб, а сквид я поднимаю для кешировани виндовых обновлений.

julixs ★★ ()
Последнее исправление: julixs (всего исправлений: 2)
Ответ на: комментарий от julixs

сквид я поднимаю для кешировани виндовых обновлений

да, если машин много, то полезно. В некоторые дни дает до 30% экономии трафика.

Отдельный кеш для обновлений оффтопика

root@rt2:/cache_mirror/squid$ du -sxh .
1.2T	.
это только то, что выкачивали за последние 180 дней.

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

Чтоб оно было эффективно нужно их скачивать отдельным процессом, а дальше прозрачно отдавать клиенту с локального веб-сервера. Или брать их с WSYS сервера, то это оффтопик.

Я этот велосипед долго создавал :)

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