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プロキシの概念を誤解しましたか、それともデバイスからのリクエストが無効ですか?
その他の情報が必要な場合はお知らせください。
よろしくお願いします、クリスチャン。
デフォルトのsquid.confからコメントアウトすることで同じエラーを解決しました:
# Deny CONNECT to other than secure SSL ports
#http_access deny CONNECT !SSL_ports
デフォルトでは、Squidは非SSLポートへのCONNECTを許可しないように設定されています。 SSLなしでテストしたい場合は、上の行をコメントアウトしてこれを無効にすることができます。
上記のように非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
私にとっては @ peaxol の反対でした:aclを定義しましたが、http_access allow
ルール。私はそれらを追加しなければなりませんでした:
acl vpn src xx.xx.xx.xx/xx
...
http_access allow vpn
デバイスの製品サポートで解決しました。
彼らは、プロキシ接続プロセスのより詳細なデバッグビューを有効にする方法を教えてくれました。
ログファイルに「リレー0.0.0.0に接続できません」という行がありました。
そこで、デバイスのDNSサーバー設定を確認しましたが、タイプミスがありました。それでおしまい。