如何为鱿鱼透明代理设置客户端?


9

服务器详细信息

Squid Transparent Proxy Version: 3.3.8
OS: Ubuntu Server 14.04
Server IP: 192.168.1.3

鱿鱼配置文件

(不包括使用grep的评论)

root@ubuntu:~# grep -v '^$\|^\s*\#' /etc/squid3/squid.conf
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
acl mylocalnetwork src 192.168.1.0/24
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access allow mylocalnetwork
http_access deny manager
http_access allow localhost
http_access deny all
http_port 3128 transparent
cache_mem 8 MB
maximum_object_size_in_memory 32 KB
memory_replacement_policy heap GDSF
cache_replacement_policy heap LFUDA
cache_dir aufs /opt/squid/cache 10000 14 256
maximum_object_size 128000 KB
cache_swap_low 95
cache_swap_high 99
coredump_dir /var/spool/squid3
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern (Release|Packages(.gz)*)$      0       20%     2880
refresh_pattern -i \.(gif|png|jp?g|ico|bmp|tiff?)$ 10080 95% 43200
refresh_pattern -i \.(rpm|cab|deb|exe|msi|msu|zip|tar|xz|bz|bz2|lzma|gz|tgz|rar|bin|7z|doc?|xls?|ppt?|pdf|nth|psd|sis)$ 10080 90% 43200
refresh_pattern -i \.(avi|iso|wav|mid|mp?|mpeg|mov|3gp|wm?|swf|flv|x-flv|axd)$ 43200 95% 432000
refresh_pattern -i \.(html|htm|css|js)$ 1440 75% 40320
refresh_pattern -i \.index.(html|htm)$ 0 75% 10080
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 1440 90% 10080
quick_abort_min 0 KB
quick_abort_max 0 KB
quick_abort_pct 100
store_avg_object_size 13 KB
visible_hostname localhost

鱿鱼原木

-------------------------------------------------------------
-----------------------------------------------------------
----------------------------------------------------------
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| Loaded Icons.
2014/07/03 22:11:57| HTCP Disabled.
2014/07/03 22:11:57| Pinger socket opened on FD 13
2014/07/03 22:11:57| Squid plugin modules loaded: 0
2014/07/03 22:11:57| Adaptation support is off.
2014/07/03 22:11:57| Accepting NAT intercepted HTTP Socket connections at local=0.0.0.0:3128 remote=[::] FD 11 flags=41
2014/07/03 22:11:57| Done reading /opt/squid/cache swaplog (2 entries)
2014/07/03 22:11:57| Finished rebuilding storage from disk.
2014/07/03 22:11:57|         2 Entries scanned
2014/07/03 22:11:57|         0 Invalid entries.
2014/07/03 22:11:57|         0 With invalid flags.
2014/07/03 22:11:57|         2 Objects loaded.
2014/07/03 22:11:57|         0 Objects expired.
2014/07/03 22:11:57|         0 Objects cancelled.
2014/07/03 22:11:57|         0 Duplicate URLs purged.
2014/07/03 22:11:57|         0 Swapfile clashes avoided.
2014/07/03 22:11:57|   Took 0.08 seconds ( 24.94 objects/sec).
2014/07/03 22:11:57| Beginning Validation Procedure
2014/07/03 22:11:57|   Completed Validation Procedure
2014/07/03 22:11:57|   Validated 2 Entries
2014/07/03 22:11:57|   store_swap_size = 12.00 KB
2014/07/03 22:11:57| ERROR: No forward-proxy ports configured.
2014/07/03 22:11:57| pinger: Initialising ICMP pinger ...
2014/07/03 22:11:57| pinger: ICMP socket opened.
2014/07/03 22:11:57| pinger: ICMPv6 socket opened
2014/07/03 22:11:57| Pinger exiting.
2014/07/03 22:11:58| storeLateRelease: released 0 objects

iptables规则

(暂时使用单个接口“ eth0”)

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.3:3128
iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

客户端配置

问题是,我无法使用Squid的IP作为网关和主DNS 来访问客户端计算机上的Internet,如下所示。

在Ubuntu客户端上

auto eth0
iface eth0 inet static
address 192.168.1.10
netmask 255.255.255.0
gateway 192.168.1.3

dns-nameservers 192.168.1.3

在Windows客户端上

在此处输入图片说明

当我在Ubuntu客户端上将DNS客户端dns-nameservers 192.168.1.1和Windows客户端上的DNS更改为路由器的相同IP 192.168.1.1而不是鱿鱼ip(192.168.1.3)时,则可以同时访问两者。这可能不是这样做的方法,因为页面可能是直接从路由器呈现的,也可能不是从使用缓存的鱿鱼服务器呈现的(当然,我可以看到在/var/log/squid3/cache.log中生成的日志)。我还注意到我的路由器闪烁显示已访问的页面,这可能意味着它通过Internet发送请求,而不是从鱿鱼缓存中获取请求。

我仍然没有妥协。如果我仍然能够从关闭了Internet的缓存中访问客户端计算机上的已访问页面,我会感到满意的。

为Squid透明代理配置客户端的过程是什么?有人指导我吗?

更新1

root@ubuntu:~# iptables -t nat -L -n -v
Chain PREROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 DNAT       tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 to:192.168.1.3:3128
    0     0 REDIRECT   tcp  --  eth0   *       0.0.0.0/0            0.0.0.0/0            tcp dpt:80 redir ports 3128

Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

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

Chain POSTROUTING (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 MASQUERADE  all  --  *      eth0    192.168.1.0/24       0.0.0.0/0

更新2

Ubuntu 10.04(lucid)使用squid版本的先前版本上工作Squid Cache: Version 2.7.STABLE7,下面是squid配置文件,当客户端的网关和DNS设置为lucid的ip时,我可以在客户端计算机上访问Internet:

root@lucid:~# grep -v '^$\|^\s*\#' /etc/squid/squid.conf
acl all src all
acl manager proto cache_object
acl localhost src 127.0.0.1/32
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12  # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl mynet src 192.168.1.0/24    # RFC1918 possible internal network
acl SSL_ports port 443      # https
acl SSL_ports port 563      # snews
acl SSL_ports port 873      # rsync
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 Safe_ports port 631     # cups
acl Safe_ports port 873     # rsync
acl Safe_ports port 901     # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost
http_access allow mynet
http_access deny all
icp_access allow localnet
icp_access deny all
http_port 3128 transparent
hierarchy_stoplist cgi-bin ?
cache_mem 8 MB
maximum_object_size_in_memory 32 KB
cache_dir ufs /var/spool/squid 2000 16 256
access_log /var/log/squid/access.log squid
refresh_pattern ^ftp:       1440    20% 10080
refresh_pattern ^gopher:    1440    0%  1440
refresh_pattern -i (/cgi-bin/|\?) 0 0%  0
refresh_pattern (Release|Package(.gz)*)$    0   20% 2880
refresh_pattern .       0   20% 4320
acl shoutcast rep_header X-HTTP09-First-Line ^ICY.[0-9]
upgrade_http0.9 deny shoutcast
acl apache rep_header Server ^Apache
broken_vary_encoding allow apache
extension_methods REPORT MERGE MKACTIVITY CHECKOUT
hosts_file /etc/hosts
offline_mode on
coredump_dir /var/spool/squid

我不确定为什么它不能在Ubuntu 14.04Squid版本上使用Squid Cache: Version 3.3.8。我肯定在新版本的鱿鱼或新的destro!中缺少某些设置!


1
我可能要说的很明显,但这不是您不配置客户端的透明代理配置的全部内容吗?
HBruijn 2014年

不,只是提到服务器配置,如果可以更好地调试问题!
user53864

我不了解如何配置鱿鱼客户端。当我使用鱿鱼的ip(192.168.1.3)作为网关和主DNS服务器时,无法在客户端上访问Internet。我认为这是配置客户端的正确方法!
user53864 2014年

没有来自的警告或错误消息squid3 -k parse,这很干净。
user53864 2014年

该命令的输出是什么:“ iptables -t nat -L -n -v”?
TBI Infotech 2014年

Answers:


11

我不确定,但是请查看此清单:

编辑squid.conf文件,并更改以下行以启用透明代理模式:

http_port 3128

to

http_port 3128 intercept

服务鱿鱼重启服务鱿鱼重启

在iptables NAT表中添加一个条目,以将内部接口(LAN端)上的端口转发到端口3128上的Squid服务器的端口入站流量(假设eth0是IP地址为192.168.1.3的内部接口)

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to(续)192.168.1.3:3128

现在,您可以使用以下命令查看iptables,默认过滤器表和nat表

iptables -L -t filter

iptables -L -t nat

现在,您可以使用以下命令向iptable过滤器表添加(追加),以接受Squid在端口3128上的输入

iptables -t过滤器-A INPUT -p tcp --dport 3128 -j ACCEPT

也试试这个

即使您不使用转发代理,您在配置中也需要一个“拦截”端口和一个“转发代理”端口:

http_port 3129

http_port 3128拦截

注意:自2010年起,“拦截”选项已弃用“透明”选项。


我已经将其更改intercept为HBruijn的建议。iptables nat规则已经到位,并且对于任何端口/源,都不会阻止对代理服务器的输入,现在允许所有传入的数据包。
user53864 2014年

您可以检查端口3129而不是3128作为http_port 3129拦截吗?
TBI Infotech 2014年

@ user53864检查更新的答案
TBI Infotech

我尝试过!,没有运气,结果是一样的。我在鱿鱼中尝试了3129端口,并用新端口替换了iptables规则。我仍然无法在客户端计算机上访问Internet。
user53864

将两个都添加到squid.conf中之后,什么是squid的日志报告。http_port 3129 http_port 3128拦截
TBI Infotech

1

根据Squid WiKi,您在http_port选项中的设置有误,对于Squid 3.1+和DNAT,应该使用intercept而不是transparent

http_port 3128 intercept

尽管您的Squid日志的输出似乎表明被拦截的套接字处于活动状态。

第二件事是Linux服务器需要允许使用以下命令进行TCP-IP转发 sysctl net.ipv4.ip_forward=1


我将设置更改为intercept,结果与使用192.168.1.3网关和主DNS的客户端无法访问Internet相同。是的,在sysctl.conf中启用了TCP-IP转发。
user53864 2014年

实际上,设置鱿鱼客户端的正确方法是什么?DNS应该是Squid的IP(192.168.1.3)还是通用路由器IP(192.168.1.1)?
user53864

正常设置是,客户端在其DHCP请求上收到的路由器/默认网关具有重定向规则,该规则将拦截到TCP端口80的传出流量,并将这些数据包重定向到透明代理。在那里将对其进行处理,并将结果返回给客户端。使用的DNS无关紧要。
HBruijn 2014年

因此,它只应与客户端上的网关设置一起使用,我仍然不知道为什么我无法在客户端上访问Internet。
user53864 2014年

我更新了我的帖子!
user53864 2014年

1

错误:No forward-proxy ports configure(中/var/log/squid3/cache.log

阅读Wiki

以我的经验,透明代理需要将NAT端口插入squid.conf(两者)

 http_port 3128
 http_port 8080 intercept

0

在将“拦截”添加到http_port选项之后,如果将客户端配置为使用代理,则在结合iptables重定向模式时仍然遇到问题:

“错误:未配置正向代理端口。” 和“警告:检测到转发循环:”

经过上面的陈述后,我将其用作最佳结果:

a)在squid.conf中使用双端口条目,如下所示:

http_port 8080
http_port 3128 intercept

这会将端口8080用作客户端配置的普通转发端口,并提供第二个端口以将重定向的流量转发到该端口。

b)使用如下的iptables规则:

iptables -A PREROUTING -t NAT -i $LAN_IF -p tcp --dport 80 -j REDIRECT --to-port 3128

这样,您将在客户端上配置一个经典的代理端口(8080),并为非加密流量提供一个强制端口。

为什么要这样做?好吧,如果您不希望HTTPS流量绕过代理(无论如何都需要配置普通客户端),并且您想支持但又不想(或无法)配置,则使用更少的智能设备或程序。


在Raspbian(可能还有其他)上,iptables命令给出错误“ iptables v1.4.21:无法初始化iptables table'NAT':表不存在(您需要insmod吗?)也许iptables或您的内核需要升级”。将“ -t NAT”更改为“ -t nat”可以解决此问题。
glennr

-1

在Ubuntu 14.04 Squid透明代理版本:3.3.8中,必须从配置http_port 3128中删除透明,我的意思是离开

http_port 3128

http_port 3128透明

由于某种原因现在无法正常工作。


-2

与:

http_port 3128
http_port 8080 intercept

有用

(错误:未在/var/log/squid3/cache.log中配置正向代理端口)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.