오징어 투명 프록시 클라이언트를 설정하는 방법?


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

IP 테이블 규칙

(당분간 단일 인터페이스 "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 인 클라이언트 컴퓨터에서 인터넷에 액세스 할 수 없다는 것 입니다.

우분투 클라이언트에서

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 클라이언트에서

여기에 이미지 설명을 입력하십시오

우분투 클라이언트의 DNS dns-nameservers 192.168.1.1와 Windows 클라이언트의 DNS를 192.168.1.1오징어 ip (192.168.1.3) 대신 라우터의 동일한 IP로 변경하면 두 가지 모두에서 인터넷에 액세스 할 수 있습니다. 페이지가 라우터에서 직접 렌더링되고 캐시를 사용하는 오징어 서버가 아닐 수 있으므로 수행 할 수있는 방법이 아닐 수도 있습니다 (물론 /var/log/squid3/cache.log에서 로그가 생성되는 것을 볼 수 있습니다). 또한 이미 액세스 한 페이지에 대해 라우터가 깜박이는 것을 발견했습니다. 이는 오징어 캐시에서 가져 오는 대신 인터넷을 통해 요청을 보내는 것을 의미 할 수 있습니다.

나는 여전히 타협하지 않았습니다. 인터넷이 종료 된 캐시에서 클라이언트 컴퓨터의 방문한 페이지에 계속 액세스 할 수 있으면 만족할 것입니다.

Squid Transparent Proxy에 대해 클라이언트를 구성하는 절차는 무엇입니까?

업데이트 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 Cache: Version 2.7.STABLE7아래, 그리고 것은 오징어 설정 파일이 근무하고 클라이언트의 게이트웨이 및 DNS가 명쾌한의 IP로 설정되어 때 클라이언트 컴퓨터에서 인터넷에 액세스 할 수 있습니다 :

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

아니요, 문제를 더 잘 디버깅 할 수 있다면 서버 구성을 언급했습니다!.
user53864

오징어 클라이언트를 구성하는 방법을 이해하지 못합니다. 게이트웨이와 기본 DNS 서버로 오징어의 IP (192.168.1.3)를 사용할 때 클라이언트에서 인터넷에 액세스 할 수 없습니다. 이것이 클라이언트를 구성하는 올바른 방법이라고 생각합니다!
user53864

의 경고 나 오류 메시지가 없습니다 squid3 -k parse. 모두 깨끗합니다.
user53864

이 명령의 출력은 무엇입니까 : "iptables -t nat -L -n -v"?
TBI Infotech

답변:


11

확실하지 않지만이 체크리스트를 살펴보십시오.

squid.conf 파일을 편집하고 다음 행을 변경하여 투명 프록시 모드를 활성화하십시오.

http_port 3128

to

http_port 3128 intercept

서비스 오징어 다시 시작 서비스 오징어 다시로드

내부 인터페이스 (LAN 측)의 포트 전달 인바운드 트래픽을 포트 3128의 Squid 서버로 iptables NAT 테이블에 항목 추가 (eth0이 IP 주소가 192.168.1.3 인 내부 인터페이스라고 가정)

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

이제 다음 명령을 사용하여 iptables, 기본 필터 테이블 및 nat 테이블을 볼 수 있습니다.

iptables -L -t filter

iptables -L -t nat

이제 다음 명령을 사용하여 iptable 필터 테이블에 추가 (추가)하여 Squid의 포트 3128에서 입력을 승인 할 수 있습니다.

iptables -t 필터 -A 입력 -p tcp --dport 3128 -j ACCEPT

또한 이것을 시도하십시오

순방향 프록시를 사용하지 않더라도 구성에서 하나의 '절편'과 하나의 '전달 프록시'포트가 모두 필요합니다.

http_port 3129

http_port 3128 차단

참고 : "transparent"옵션은 2010 년 이후 "intercept"옵션에서 사용되지 않습니다.


interceptHBruijn이 제안한대로 이미 변경했습니다 . iptables nat 규칙이 이미 설정되어 있으며 포트 / 소스에 대해 프록시 서버에 대한 입력이 차단되지 않았으므로 들어오는 모든 패킷이 현재 허용됩니다.
user53864

http_port 3129 차단으로 3128 대신 포트 3129를 확인할 수 있습니까?
TBI Infotech

@ user53864 업데이트 된 답변 확인
TBI Infotech

나는 노력했다!, 운이 없다, 결과는 동일하다. 나는 오징어에서 3129 포트로 시도하고 iptables 규칙을 새로운 포트로 대체했습니다. 여전히 클라이언트 컴퓨터에서 인터넷에 액세스 할 수 없습니다.
user53864

squid.conf에 두 가지를 모두 추가하면 오징어의 로그 보고서는 무엇입니까? http_port 3129 http_port 3128 차단
TBI Infotech

1

에 따르면 오징어 위키 당신은에 잘못된 설정이 http_port의 그것이 있어야 오징어 3.1 및 DNAT과 옵션, intercept대신를 transparent.

http_port 3128 intercept

Squid 로그의 출력에 인터셉트 된 소켓이 활성화 된 것으로 표시됩니다.

두 번째는 Linux 서버가 TCP-IP 전달을 허용해야한다는 것입니다. sysctl net.ipv4.ip_forward=1


설정을으로 변경하면 게이트웨이 및 기본 DNS로 intercept클라이언트에서 인터넷에 액세스 할 수없는 것과 동일합니다 192.168.1.3. 예, sysctl.conf에서 TCP-IP 전달이 활성화되어 있습니다.
user53864

실제로 오징어 클라이언트를 설정하는 올바른 방법은 무엇입니까? DNS가 Squid의 IP (192.168.1.3) 또는 일반 라우터 IP (192.168.1.1) 여야합니까?
user53864

일반적인 설정은 클라이언트가 DHCP 요청에서 수신하는 라우터 / 기본 게이트웨이에 리디렉션 규칙이 있으며,이 규칙은 나가는 트래픽을 TCP 포트 80으로 가로 채고 해당 패킷을 투명 프록시로 리디렉션합니다. 거기서 처리되고 결과는 클라이언트에게 반환됩니다. 사용 된 DNS는 중요하지 않습니다.
HBruijn

따라서 클라이언트의 게이트웨이 설정과 함께 작동해야하지만 여전히 클라이언트에서 인터넷에 액세스 할 수없는 이유를 모르겠습니다.
user53864

내 게시물을 업데이트했습니다!
user53864

1

오류 : No forward-proxy ports configure(에서 /var/log/squid3/cache.log)

위키를 읽으십시오 .

내 경험상 투명한 프록시에는 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 테이블`NAT '를 초기화 할 수 없습니다 : 테이블이 존재하지 않습니다 (insmod해야합니까?) 아마도 iptables 또는 커널을 업그레이드해야합니다. ". "-t NAT"를 "-t nat"로 변경하면이 문제가 해결됩니다.
glennr

-1

Ubuntu 14.04 Squid Transparent Proxy 버전 : 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에 정방향 프록시 포트가 구성되지 않았습니다.)

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.