プロが教えるわが家の防犯対策術!

海外在住でその国にサーバーがあるVPS(CentOS 5)でSquid(v2.6 Stable21)を構築しましたが応答しません。
VPSにあるWebサーバー(Apache)にはアクセスでき、正常に表示されるのですが、Squidはうんともすんともいわないです。
Squidは起動しており、sudo /etc/init.d/squid status を実行すると、
squid (pid 2649) is running...
と表示されます。
しかし、IEでプロキシの設定をしてアクセスすると「プロキシ サーバーは応答していません」と表示され、そのままネットワーク診断をすると「リソース(Webプロキシ)はオンラインですが、接続試行には応答していません。」と表示されます。
アクセスログは空のままで、リスタートした際のキャッシュログは以下のようになっています。
Basic認証等もしておらず、http_access allow allとしています(そもそもアクセスログに何も残っていないですが)
VPS側から他のネットワークにpingを飛ばしてみても正常に動いていますし、クライアントからVPS側にpingを飛ばしても正常に返ってきます。
squid.outには何もエラーは表示されておらず、store.logも空です。
/etc/sysconfig/iptables に下記を追加し、ポート3128も解放しています。

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 3128 -j ACCEPT

また、クライアント側で他の公開されているプロキシを利用した際は正常に動いています。

何か考えられる原因や解決方法がありましたら、ご教示ください。

Preparing for shutdown after 0 requests
Waiting 30 seconds for active connections to finish
FD 14 Closing HTTP connection
Shutting down...
FD 15 Closing ICP connection
Closing unlinkd pipe on FD 12
storeDirWriteCleanLogs: Starting...
Finished. Wrote 0 entries.
Took 0.0 seconds ( 0.0 entries/sec).
CPU Usage: 0.012 seconds = 0.008 user + 0.004 sys
Maximum Resident Size: 23984 KB
Page faults with physical i/o: 2
Memory usage for squid via mallinfo():
total space in arena: 2508 KB
Ordinary blocks: 2430 KB 5 blks
Small blocks: 0 KB 5 blks
Holding blocks: 244 KB 1 blks
Free Small blocks: 0 KB
Free Ordinary blocks: 77 KB
Total in use: 2674 KB 97%
Total free: 77 KB 3%
Squid Cache (Version 2.6.STABLE21): Exiting normally.
Starting Squid Cache version 2.6.STABLE21 for i686-redhat-linux-gnu...
Process ID 2649
With 1024 file descriptors available
Using epoll for the IO loop
DNS Socket created at 0.0.0.0, port 41221, FD 7
Adding nameserver 8.8.8.8 from /etc/resolv.conf
Adding nameserver 8.8.4.4 from /etc/resolv.conf
User-Agent logging is disabled.
Referer logging is disabled.
Unlinkd pipe opened on FD 12
Swap maxSize 102400 + 8192 KB, estimated 0 objects
Target number of buckets: 425
Using 8192 Store buckets
Max Mem size: 8192 KB
Max Swap size: 102400 KB
Local cache digest enabled; rebuild/rewrite every 3600/3600 sec
Rebuilding storage in /var/spool/squid (CLEAN)
Using Least Load store dir selection
Set Current Directory to /var/spool/squid
Loaded Icons.
Accepting proxy HTTP connections at 0.0.0.0, port 3128, FD 14.
Accepting ICP messages at 0.0.0.0, port 3130, FD 15.
WCCP Disabled.
Ready to serve requests.
Done reading /var/spool/squid swaplog (0 entries)
Finished rebuilding storage from disk.
0 Entries scanned
0 Invalid entries.
0 With invalid flags.
0 Objects loaded.
0 Objects expired.
0 Objects cancelled.
0 Duplicate URLs purged.
0 Swapfile clashes avoided.
Took 0.3 seconds ( 0.0 objects/sec).
Beginning Validation Procedure
Completed Validation Procedure
Validated 0 Entries
store_swap_size = 0k
storeLateRelease: released 0 objects

A 回答 (2件)

そのサーバー自体にはsshなどでログインできるのですよね?



ログイン後

telnet localhost 3128

など、自分自身で参照してみてください
httpサーバーのように

Escape character is '^]'.
的な戻りがあれば「GET /」
などでとりあえず戻ってくることを確認し、
access.logが更新されているかみてみてください。

自分自身でOKなら、次は別マシンからテスト、
戻ってこないならポートがうまくあいていないかも

この回答への補足

いずれにせよ、とりあえず解決しましたので、回答を締め切りますね。ありがとうございました。

補足日時:2014/06/24 10:44
    • good
    • 1
この回答へのお礼

回答ありがとうございます。

はい、SSHで接続しています。
そのSSHからおっしゃる通り、「telnet localhost 3128」で試したところ、access.logが更新されていることを確認しました。
その後、今度はそのSSHクライアントを動かしているPCのコマンドプロンプトから試したところ、

接続中: XXX.XXX.XXX.XXX...ホストへ接続できませんでした。 ポート番号 3128: 接続に
失敗しました

と表示されたので、おっしゃる通り、ポートがうまく開いていないようです。

iptablesには

-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 20 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 21 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 2748 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 3128 -j ACCEPT

と記述しており、ポート80、20、21、2748はデフォルトで書かれていたものです。そのうち、80、2748(SSH)にはtelnetで接続が成功しましたが、20と21には接続できませんでした(ソフトを立ち上げていないので)。
また3128の行を記述し、保存したのち、
sudo service iptables save
sudo service iptables restart
を実行しているので、サーバー側の設定は間違ってないのかな?と思っています。

netstat -napで確認したところ、

Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 10426/(squid)

namp 127.0.0.1 で確認したところ、
PORT STATE SERVICE
3128/tcp open squid-http

iptables -l で確認したところ、

ACCEPT tcp -- anywhere anywhere state NEW tcp dpt:squid

となっていました。

ただ、あくまで待ち受け状態で、接続を確立はしていないようです。


そこでSquidのポートをデフォルトでiptalbesに記載してあった20に変更してみたところ、すべてうまくいき、プロキシサーバーとして使用できるようになりました。


これは、ポート開放に関して、ファイアーウォールの問題というよりも、VPSを提供している側のルーターの問題の可能性が高いのでしょうか?
それともポート開放の方法が間違っているのでしょうか?
あまり長時間プロキシサーバーを起動しておくつもりはないので、そこまで問題があるわけではないのですが、セキュリティー上あまり好ましくないと思うので、できたら適当なポートに変更したいのですが。

お礼日時:2014/06/20 01:29

squidのログには何もかかれていませんか?

    • good
    • 0
この回答へのお礼

回答ありがとうございます。

squidのログが具体的に何を指しているのかわかりませんが、access.logには何も残っていませんでしたし、squid.outには構築時にいくつかつまずいた際のエラーしか表示されていませんでした。構築成功後、リスタートしたり接続を試した時には何も記録されていません。cache.logは質問に書いた通りで、store.logにも何も残っていませんでした。

ちなみに、ポートの開放はnmapで確認したところ、
PORT STATE SERVICE
3128/tcp open squid-http
となっていたので、成功しているはずです。



ええと、これが質問した時の状況だったのですが、また何かできないか試していたところ、access.logに
XXX.34.22.39 - - [18/Jun/2014:21:27:02 -0400] "CONNECT smtp.mail.yahoo.com:25 HTTP/1.0" 403 1349 TCP_DENIED:NONE
XXX.34.22.39 - - [18/Jun/2014:21:28:42 -0400] "CONNECT smtp.mail.yahoo.com:25 HTTP/1.0" 403 1349 TCP_DENIED:NONE
と記録されていました。スパムの踏み台にされそうだったのかな?
たぶん25番ポートで接続を試みてたみたいなので、失敗していますが、一応何らかのクライアントからは接続できているみたいです。
私のほうのからは依然接続できていませんが…。
上記に関連しての記録はsquid.outとcache.logにはありませんでした。

お礼日時:2014/06/19 11:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!