уже есть настроенный прозрачный прокси squid, есть роутер EdgeOSEdgeRouter
хочу сделать схему
все компьютеры сети -> роутер -> squidsquid - 109.0.0.110
router - 109.0.0.1
тестовая винда - 109.0.0.8
пробую эту доку
http://tldp.org/HOWTO/TransparentProxy-6.htmlесли на винде прописываю шлюз - 109.0.0.110, то все работает, без правил файервола, но надо настроить что бы работало через роутер - 109.0.0.1
прописал
iptables -t nat -A PREROUTING -i eth0 ! -s 109.0.0.110 -p tcp --dport 80 -j DNAT --to 109.0.0.110:3128
iptables -t nat -A POSTROUTING -o eth0 -s 109.0.0.8/32 -d 109.0.0.110/32 -j SNAT --to 109.0.0.1
iptables -A FORWARD -s 109.0.0.8/32 -d 109.0.0.110/32 -i eth0 -o eth0 -p tcp --dport 3128 -j ACCEPTпробую на тестовой винде (109.0.0.8) открыть сайт - доступ запрещен, на винде шлюз стоит 109.0.0.1, в логах на squid
1546203601.533 0 109.0.0.110 TCP_MISS/403 4857 GET http://myip.ru/ - HIER_NONE/- text/html
1546203601.533 1 109.0.0.1 TCP_MISS/403 4977 GET http://myip.ru/ - ORIGINAL_DST/109.0.0.110 text/htmlконфиг squid.conf, версия - squid-3.5.27
# You should use the same dns resolver on squid and all clients
dns_nameservers 127.0.0.1# acls
acl localnet src 109.0.0.0/24 # RFC1918 possible internal network
acl localnet src 192.168.1.0/24 # RFC1918 possible internal network
acl localnet src 192.168.10.0/24 # RFC1918 possible internal networkacl 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 CONNECTacl blocked_http dstdomain "/etc/squid/blocked_sites.txt"
# http access
http_access deny !Safe_portshttp_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny managerhttp_access deny blocked_http
http_access allow localnet
http_access allow localhost
http_access deny allhttp_port 3128 intercept
https_port 3129 intercept ssl-bump connection-auth=off cert=/etc/squid/squidCA.pem
http_port 3130always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEERacl blocked ssl::server_name "/etc/squid/blocked_https.txt"
acl whitelist src "/etc/squid/whitelist_ip.txt"
ssl_bump splice whitelist
acl step1 at_step SslBump1
ssl_bump peek step1ssl_bump terminate blocked
ssl_bump splice allsslcrtd_program /opt/source/squid-3.5.27/src/ssl/ssl_crtd -s /var/lib/ssl_db -M 4MB
sslcrtd_children 8 startup=1 idle=1acl YOUTUBE ssl::server_name .googlevideo.com
delay_pools 1
delay_class 1 2
delay_parameters 1 -1/-1 5120/5120
delay_access 1 allow YOUTUBEcoredump_dir /var/spool/squid
refresh_pattern ^ftp: &n... 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
cache_dir aufs /var/spool/squid 20000 49 256
maximum_object_size 61440 KB
minimum_object_size 3 KBcache_swap_low 90
cache_swap_high 95
maximum_object_size_in_memory 512 KB
memory_replacement_policy lru
logfile_rotate 4в чем может быть проблема?
> если на винде прописываю шлюз - 109.0.0.110, то все работает, без правил
> файервола, но надо настроить что бы работало через роутер - 109.0.0.1Ну так на роутере и смотрите port forwarding...
> прописал
Где прописал? На сквиде, на роутере - раскрасьте сами...
> в чем может быть проблема?
В роутере, очевидно, раз без него все работает как надо...
>> если на винде прописываю шлюз - 109.0.0.110, то все работает, без правил
>> файервола, но надо настроить что бы работало через роутер - 109.0.0.1
> Ну так на роутере и смотрите port forwarding...
>> прописал
> Где прописал? На сквиде, на роутере - раскрасьте сами...
>> в чем может быть проблема?
> В роутере, очевидно, раз без него все работает как надо...Прописывал все правила на роутере, но похоже чего-то не хватает
> Прописывал все правила на роутере, но похоже чего-то не хватаетВестимо
iptables -t nat -A PREROUTING -i eth0 ! -s 109.0.0.110 -p tcp --dport 80 -j DNAT --to 109.0.0.110:3128
в грубом переводе "прероутинг на интерфейсе eth0, если НЕ источник..."
и
iptables -t nat -A PREROUTING -i eth0 -s ! 109.0.0.110 -p tcp --dport 80 -j DNAT --to 109.0.0.110:3128
в грубом переводе "прероутинг на интерфейсе eth0, если источник НЕ..."
>> Прописывал все правила на роутере, но похоже чего-то не хватает
> Вестимо
> iptables -t nat -A PREROUTING -i eth0 ! -s 109.0.0.110 -p tcp
> --dport 80 -j DNAT --to 109.0.0.110:3128
> в грубом переводе "прероутинг на интерфейсе eth0, если НЕ источник..."
> и
> iptables -t nat -A PREROUTING -i eth0 -s ! 109.0.0.110 -p tcp
> --dport 80 -j DNAT --to 109.0.0.110:3128
> в грубом переводе "прероутинг на интерфейсе eth0, если источник НЕ..."
iptables -t nat -A PREROUTING -i eth0 -s ! 109.0.0.110 -p tcp --dport 80 -j DNAT --to 109.0.0.110:3128
Bad argument `109.0.0.110'
Try `iptables -h' or 'iptables --help' for more information.iptables -h
[!] --source -s address[/mask][...]
source specificationпоэтому я использую правило
iptables -t nat -A PREROUTING -i eth0 ! -s 109.0.0.110 -p tcp --dport 80 -j DNAT --to 109.0.0.110:3128
или я что-то делаю не так?
> поэтому я использую правило
>iptables -t nat -A PREROUTING -i eth0 ! -s 109.0.0.110 -p tcp
> --dport 80 -j DNAT --to 109.0.0.110:3128
> или я что-то делаю не так?или я что-то путаю, но отрицание обычно всегда ставилось перед значением, а не перед опцией. В доке, на которую ссылаешься, именно так.
>> поэтому я использую правило
>>iptables -t nat -A PREROUTING -i eth0 ! -s 109.0.0.110 -p tcp
>> --dport 80 -j DNAT --to 109.0.0.110:3128
>> или я что-то делаю не так?
> или я что-то путаю, но отрицание обычно всегда ставилось перед значением, а
> не перед опцией. В доке, на которую ссылаешься, именно так.значит по доке все делаю правильно
iptables -t nat -I PREROUTING -i eth0 ! -s 109.0.0.110 -p tcp --dport 80 -j DNAT --to 109.0.0.110:3128или нет?
> значит по доке все делаю правильно
>iptables -t nat -I PREROUTING -i eth0 ! -s 109.0.0.110 -p tcp
> --dport 80 -j DNAT --to 109.0.0.110:3128
> или нет?В доке-то как раз
iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp --dport 80 -j DNAT --to squid-box:3128
...
>> значит по доке все делаю правильно
>>iptables -t nat -I PREROUTING -i eth0 ! -s 109.0.0.110 -p tcp
>> --dport 80 -j DNAT --to 109.0.0.110:3128
>> или нет?
> В доке-то как раз
> iptables -t nat -A PREROUTING -i eth0 -s ! squid-box -p tcp
> --dport 80 -j DNAT --to squid-box:3128
> ...так такое правило по доке не проходит
iptables -t nat -A PREROUTING -i eth0 -s ! 109.0.0.110 -p tcp --dport 80 -j DNAT --to 109.0.0.110:3128
Bad argument `109.0.0.110'
Try `iptables -h' or 'iptables --help' for more information.по хелпу надо перенести ! перед -s
по tcpdump вижу что пакеты проходят на прокси, т.е. правила файервола работают, но почему он отдает 403, если в конфиге
acl localnet src 109.0.0.0/24
http_access allow localnet
разрешена сеть
если я меняюhttp_port 3128 intercept
наhttp_port 3128 accel vhost allow-direct
то http начинает загружатьсяно если открываю https, то пишет не действительный сертификат и подставляется сертификат сервера прокси, как это обойти?
> если я меняю
>http_port 3128 intercept
> на
>http_port 3128 accel vhost allow-direct
> то http начинает загружаться
> но если открываю https, то пишет не действительный сертификат и подставляется сертификат
> сервера прокси, как это обойти?Убрать перехват SSL?
>> если я меняю
>>http_port 3128 intercept
>> на
>>http_port 3128 accel vhost allow-direct
>> то http начинает загружаться
>> но если открываю https, то пишет не действительный сертификат и подставляется сертификат
>> сервера прокси, как это обойти?
> Убрать перехват SSL?почему если я меняю на винде шлюз на прокси, то все работает в режимах
http_port 3128 intercept
https_port 3129 intercept ssl-bump connection-auth=off cert=/etc/squid/squidCA.pemа если настраиваю маршрутизацию с роутера на прокси, то по http - 403, а по https недействительный сертификат
при добавлении правил на роутереiptables -t nat -I PREROUTING -i eth0 -s 109.0.0.8 -p tcp --dport 80 -j DNAT --to 109.0.0.110:3128
iptables -t nat -I PREROUTING -i eth0 -s 109.0.0.8 -p tcp --dport 443 -j DNAT --to 109.0.0.110:3129
iptables -t nat -I POSTROUTING -o eth0 -s 109.0.0.8 -d 109.0.0.110 -j SNAT --to 109.0.0.1правила на прокси сервере
*nat
:PREROUTING ACCEPT [314:20555]
:INPUT ACCEPT [313:20511]
:OUTPUT ACCEPT [844:60999]
:POSTROUTING ACCEPT [2:130]
-A PREROUTING -s 109.0.0.0/24 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3129
-A PREROUTING -s 109.0.0.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -s 192.168.10.0/24 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3129
-A PREROUTING -s 192.168.10.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A PREROUTING -s 192.168.1.0/24 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3129
-A PREROUTING -s 192.168.1.0/24 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
-A POSTROUTING -s 109.0.0.0/24 -j SNAT --to-source 109.0.0.110
-A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 109.0.0.110
-A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 109.0.0.110
COMMIT
*filter
:INPUT ACCEPT [340:18626]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [1809:273786]
-A INPUT -i lo -j ACCEPT
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -s 109.0.0.0/24 -j ACCEPT
-A INPUT -s 192.168.1.0/24 -j ACCEPT
-A INPUT -s 192.168.10.0/24 -j ACCEPT
-A INPUT -j LOG
-A INPUT -p tcp -m multiport --dports 3128:3130 -j DROP
-A FORWARD -s 109.0.0.0/24 -p udp -m multiport --dports 80,443 -j DROP
COMMITпри открытии на винде какого-нибудь сайта по http, в cache.log
kid1| WARNING: Forwarding loop detected for:
GET / HTTP/1.1^M
Upgrade-Insecure-Requests: 1^M
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36^M
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8^M
Accept-Encoding: gzip, deflate^M
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7^M
Via: 1.1 proxy.server (squid/3.5.27)^M
X-Forwarded-For: 109.0.0.1^M
Cache-Control: max-age=259200^M
Connection: keep-alive^M
Host: myip.ru^M
^Mkid1| WARNING: Forwarding loop detected for:
GET /favicon.ico HTTP/1.1^M
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/71.0.3578.98 Safari/537.36^M
Accept: image/webp,image/apng,image/*,*/*;q=0.8^M
Referer: http://myip.ru/^M
Accept-Encoding: gzip, deflate^M
Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7^M
Via: 1.1 proxy.server (squid/3.5.27)^M
X-Forwarded-For: 109.0.0.1^M
Cache-Control: max-age=259200^M
Connection: keep-alive^M
Host: myip.ru^Mв access.log
1546711344.892 0 109.0.0.110 TCP_MISS/403 4514 GET http://myip.ru/ - HIER_NONE/- text/html
1546711344.893 0 109.0.0.1 TCP_MISS/403 4634 GET http://myip.ru/ - ORIGINAL_DST/109.0.0.110 text/html
1546711344.913 0 109.0.0.110 TCP_MISS/403 4479 GET http://myip.ru/favicon.ico - HIER_NONE/- text/html
1546711344.913 0 109.0.0.1 TCP_MISS/403 4599 GET http://myip.ru/favicon.ico - ORIGINAL_DST/109.0.0.110 text/html> WARNING: Forwarding loop detected for
из-за чего это может быть? и как это можно исправить, что бы все заработало