Squid透過プロキシのクライアントをセットアップする方法


9

サーバーの詳細

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

Squid設定ファイル

(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

クライアント構成

問題は、次に示すように、ゲートウェイおよびプライマリDNSとしてSquidのIPを使用しているクライアントマシンインターネットにアクセスできなかったことです。

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.1Windowsクライアントを192.168.1.1squid ip(192.168.1.3)ではなく、ルーターの同じIP に変更すると、両方でインターネットにアクセスできます。これは、ページがルーターから直接レンダリングされ、キャッシュを使用したSquidサーバーからのものではない可能性があるためです(もちろん、/ var / log / squid3 / cache.logでログが生成されているのを確認できます)。また、すでにアクセスされているページでルーターが点滅していることにも気付きました。これは、Squidキャッシュからフェッチするのではなく、インターネット経由でリクエストを送信することを意味する場合があります。

私はまだ妥協していません。インターネットがシャットダウンしているキャッシュからクライアントマシンのアクセスしたページに引き続きアクセスできれば、満足です。

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に設定されている場合、クライアントマシンでインターネットにアクセスできます。

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。新しいバージョンのsquidや新しいdestro!の一部の設定が間違いなくありません。


1
私は明白なことを述べているかもしれませんが、クライアントを構成しない透過的なプロキシ構成の要点ではありませんか?
HBruijn 2014

いいえ、問題をより適切にデバッグできる場合は、サーバー構成について言及しました!。
user53864 14

Squidクライアントの設定方法がわかりません。squidのip(192.168.1.3)をゲートウェイおよびプライマリDNSサーバーとして使用すると、クライアントでインターネットにアクセスできませんでした。これはクライアントを構成する適切な方法だと思います!
user53864 14

からの警告やエラーメッセージはありませんsquid3 -k parse。すべて問題ありません。
user53864 14

このコマンドの出力は何ですか: "iptables -t nat -L -n -v"?
TBI Infotech 2014

回答:


11

よくわかりませんが、次のチェックリストをご覧ください。

squid.confファイルを編集し、次の行を変更して透過プロキシモードを有効にします。

http_port 3128

to

http_port 3128 intercept

service squid restart service squid reload

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 filter -A INPUT -p tcp --dport 3128 -j ACCEPT

こちらもお試しください

フォワードプロキシを使用しない場合でも、configに1つの「インターセプト」ポートと1つの「フォワードプロキシ」ポートの両方が必要です。

http_port 3129

http_port 3128インターセプト

:「透明」オプションは2010年以降、「インターセプト」オプションによって非推奨になりました。


interceptHBruijnの提案どおりに変更しました。Iptablesのnatルールはすでに設定されており、プロキシサーバーへのINPUTはどのポート/ソースでもブロックされていません。今のところすべての着信パケットが許可されています。
user53864 14

http_port 3129インターセプトとして3128ではなくポート3129を確認できますか?
TBI Infotech 2014

@ user53864更新された回答を確認してください
TBI Infotech

私が試した!、運が悪い、結果は同じです。イカの3129ポートを試してみました。また、iptablesルールを新しいポートに置き換えました。クライアントマシンでインターネットにアクセスできませんでした。
user53864 14

squid.confに両方を追加した後、イカのログレポートとは何ですか。http_port 3129 http_port 3128インターセプト
TBI Infotech

1

Squid WiKiによると、http_portオプションの設定が間違っています。Squid3.1以降とDNAT interceptでは、の代わりに設定する必要がありtransparentます。

http_port 3128 intercept

Squidログの出力は、傍受されたソケットがアクティブであることを示しているようですが。

もう1つは、LinuxサーバーがTCP-IP転送を許可する必要があることです。 sysctl net.ipv4.ip_forward=1


設定をに変更しましたがintercept192.168.1.3ゲートウェイとプライマリDNSを備えたクライアントでインターネットにアクセスできませんでした。はい、TCP-IP転送はsysctl.confで有効になっています。
user53864 14

squidクライアントをセットアップする適切な方法は何ですか?DNSはSquidのIP(192.168.1.3)または一般的なルーターIP(192.168.1.1)のどちらにする必要がありますか?
user53864 14

通常の設定では、クライアントがDHCP要求で受信するルーター/デフォルトゲートウェイにリダイレクト規則があり、TCPポート80への送信トラフィックをインターセプトし、それらのパケットを透過プロキシにリダイレクトします。そこで処理され、結果がクライアントに返されます。使用されるDNSは重要ではありません。
HBruijn 2014

したがって、クライアントのゲートウェイ設定で動作するはずですが、クライアントのインターネットにアクセスできなかった理由はまだわかりません。
user53864 14

投稿を更新しました!
user53864 14

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をクライアント側の構成の通常の転送ポートとして提示し、リダイレクトされたトラフィックを転送する2番目のポートを提供します。

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 2018

-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にフォワードプロキシポートが設定されていません)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.