プロキシ系モジュールの落とし穴!ポート80でプロキシサーバになっているかも?

Webサーバーのログは色々あっておもしろい。しかし少し以前、やたらとブログの表示が遅くなったことがあり要因を色々としらべたりCloudFlareを挟んでみたりしてたけどこのログを見てからプロキシ系のモジュールは要注意だなと思った。つまり、設定によっては port/80 でプロキシとして利用されてしまうかもしれません。例えば、以下のようなもの。調べた限りではほとんどが中国からのアクセスだった。自分の場合、lighttpd 使っている環境でくらってた可能性がある。


218.59.238.93 - - [09/Dec/2014:14:23:11 +0900] "GET http://proxyjudge.us/ HTTP/1.0" 404 14 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.92 - - [09/Dec/2014:14:38:39 +0900] "GET http://www.proxyjudge.biz/az.php HTTP/1.0" 404 14 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"
218.59.238.92 - - [09/Dec/2014:15:13:34 +0900] "GET http://sonke31.free.fr/world.php HTTP/1.0" 404 14 "-" "Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)"

まぁ、404(Not Found)だから中継できていないけれど、実際にこのURLにアクセスすると『確認くん』のようなアクセス元の情報について AZ Environment variables というphpスクリプトがHTMLを返す。

AZ Environment variables(事例その1)

AZ Environment variables(事例その1)

AZ Environment variables(事例その2)

AZ Environment variables(事例その2)

AZ Environment variables(事例その3)

AZ Environment variables(事例その3)

nslookupでTXTレコードからアクセス元の国をIPアドレスからお手軽に調べる方法があります。以下のように、<アクセス元のIPアドレス>.cc.wariate.jp として照会するだけです。

> set type=txt
> 92.238.59.218.cc.wariate.jp
92.238.59.218.cc.wariate.jp text = "CN"
> 93.238.59.218.cc.wariate.jp
93.238.59.218.cc.wariate.jp text = "CN"

ちなむと、作者さんがVB.NETのソース公開してくれています。IPを受け取ってクエリ文字列つくってJHSoftware.DnsClient.Lookup()に渡せば良いということのようだ。へー。

    Private Function GetCountryCode(ByVal HostName As String) As String
        Dim IPs() As System.Net.IPAddress = Nothing
        Dim Result As String = Nothing
        Try
            IPs = System.Net.Dns.GetHostAddresses(HostName)
            If Not IPs Is Nothing AndAlso IPs.Count > 0 Then
                Dim Adrs() As String = IPs(0).ToString.Split(".")
                If Adrs.Count = 4 Then
                    Dim Addr As String = Adrs(3) & "." & Adrs(2) & "." & Adrs(1) & "." & Adrs(0) & ".cc.wariate.jp"
                    With JHSoftware.DnsClient.Lookup(Addr, JHSoftware.DnsClient.RecordType.TXT)
                        If .AnswerRecords.Count > 0 Then
                            Result = .AnswerRecords(0).Data.Substring(1, 2)
                        End If
                    End With
                End If
            End If
        Catch ex As System.Exception

        End Try

        Return Result
    End Function

しかし、グレートファイアウォールがあると何かと不便なんだろうな。でも、中国国内からWeb閲覧用にプロキシ利用したいなら格安で日本国内のVPSがあるので利用してくださいよ。
ウチのネットワーク経由で利用したい場合は勝手に中継を試行せず相談してください。プライベート用途であれば月額2Kくらいで国内VPS登録代行しますがどうですか?(笑)

如果从中国要使用代理服务器浏览网页,请使用,因为有一个便宜和日本VPS 。
请参阅没有试图擅自转播如果你想通过我的网络使用。这是中国的人民币支付。
如果私人使用你所代表的国内VPS的注册每月50CNY ?

スポンサーリンク