web-dev-qa-db-ja.com

squidプロキシ-tcp接続を許可する方法-ERR_INVALID_DOMAINでTCP_DENIAL / 400を取得する

Tcp:80でインターネットサービスに接続する必要があるデバイスがありますが、ネットワークに直接インターネットアクセスがありません。だから私はこれを解決するためにsquidプロキシを使用しています。

このデバイスでは、プロキシサーバー、ポート、ユーザー名、およびパスワードを入力できます。

私は、デバイスがhttpGETの代わりにhttpCONNECTを使用していることを理解しました(これは私のブラウザーで正常に機能しています)。

デバイスが接続しようとすると、httpエラー400が発生します。squidaccess.logはこれだけを表示します。

1338885433.033 0 172.22.140.129 TCP_DENIED/400 1728 CONNECT:0-NONE/-text/html 

だから私は実際に何が起こっているのかを見るためにパケットをキャプチャしました:

デバイスからのリクエスト:

 CONNECT mydomain.com:0 HTTP/1.0 
ユーザーエージェント:Sequencer/5.5.0.5539 ​​

イカからの回答:

HTTP/1.0400不正なリクエスト
 squid/2.7.STABLE9 
 X-Squid-エラー:ERR_INVALID_URL 0 
 close 

私のsquid.conf:

 auth_param基本プログラム/usr/lib/squid/pam_auth
auth_param基本子5 
 auth_param基本レルムSquidプロキシキャッシングWebサーバー
 auth_param基本資格情報ttl2時間
 auth_param basic casesensitive off 
 
 acl all src all 
 acl manager proto cache_object 
 acl localhost src127.0.0.1/32
acl to_localhost dst 127.0.0.0/80.0.0.0/32

acllocalnet src 10.0.0.0/8#RFC1918可能な内部ネットワーク
 acl localnet src 172.16.0.0/12#RFC1918可能な内部ネットワーク
 acl localnet src 192.168.0.0/16#RFC1918可能な内部ネットワーク
 
 aclSSL_portsポート443#https 
 acl SSL_portsポート563#snews 
 acl SSL_portsポート873#rsync 
 
 acl Safe_portsポート80#http 
 acl Safe_portsポート21#ftp 
 acl Safe_portsポート443#https 
 acl Safe_ports port 70#Gopher 
 acl Safe_ports po rt 210#wais 
 acl Safe_portsポート1025-65535#未登録ポート
 aclSafe_portsポート280#http-mgmt 
 acl Safe_portsポート488#gss-http 
 acl Safe_portsポート591#ファイルメーカー
 aclSafe_portsポート777#マルチリングhttp 
 acl Safe_portsポート631#カップ
 aclSafe_portsポート873#rsync 
 acl Safe_portsポート901#SWAT 
 
 aclパージメソッドPURGE 
 aclCONNECTメソッドCONNECT 
 acl checkpw proxy_auth REQUIRED 
 
 http_access allow manager localhost 
 http_access deny manager 
 http_access allow purge localhost 
 http_accessdenypurge 
 http_access deny!Safe_ports 
 http_access allow CONNECT 
 http_access allow localnet 
 http_access allow localhost 
 http_access allow checkpw all 
 http_access deny all 
 
 icp_access allow localnet 
 icp_access deny all 
 
 http_port 3128 
 
 hierarchy_stoplist cgi-bin?
 
 access_log /var/log/squid/access.log squid 
 
 debug_options ALL、1 33、 2 28,9 
 
 refresh_pattern ^ ftp:1440 20%10080 
 refresh_pattern ^ Gopher:1440 0%1440 
 refresh_pattern -i(/ cgi-bin/| \?)0 0%0 
 refresh_pattern(リリース|パッケージ(.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

forwarded_for off 
 
 coredump_dir /var/spool/squid

ERR_INVALID_URLを取り除くための解決策はありますか? squidプロキシの概念を誤解しましたか、それともデバイスからのリクエストが無効ですか?

その他の情報が必要な場合はお知らせください。

よろしくお願いします、クリスチャン。

9
Christian

デフォルトのsquid.confからコメントアウトすることで同じエラーを解決しました:

# Deny CONNECT to other than secure SSL ports
#http_access deny CONNECT !SSL_ports

デフォルトでは、Squidは非SSLポートへのCONNECTを許可しないように設定されています。 SSLなしでテストしたい場合は、上の行をコメントアウトしてこれを無効にすることができます。

16
Adriaan Koster

上記のように非SSLポート接続を許可しましたが、アクセスしようとしたネットワークからACLを開くのを忘れました。それを開くと問題が修正されました:

acl localnet src 1.1.0.0/24     # <- My Internal network I am accessing from
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
2
peaxol

私にとっては @ peaxol の反対でした:aclを定義しましたが、http_access allowルール。私はそれらを追加しなければなりませんでした:

acl vpn src xx.xx.xx.xx/xx
...
http_access allow vpn
1
Matthieu

デバイスの製品サポートで解決しました。

彼らは、プロキシ接続プロセスのより詳細なデバッグビューを有効にする方法を教えてくれました。

ログファイルに「リレー0.0.0.0に接続できません」という行がありました。

そこで、デバイスのDNSサーバー設定を確認しましたが、タイプミスがありました。それでおしまい。

0
Christian