1

過去 15 日間、私はこの問題を解決するために頭を悩ませています。リモート mysql サーバーに接続する PHP アプリケーションがありますが、アプリケーションはリモート mysql サーバーに直接アクセスできず、socks プロキシ経由で接続する必要があります。この問題を解決するために誰か助けてください。

前もって感謝します。

4

2 に答える 2

2

他の誰かがこれをやったことがあるかどうかを探していましたが、そうではないと思います. PHP用のSOCKS4aへのインターフェースを作りました。ここにあります。

function fsocks4asockopen($proxyHostname, $proxyPort, $targetHostname, $targetPort)
{
    $sock = fsockopen($proxyHostname, $proxyPort);
    if($sock === false)
        return false;
    fwrite($sock, pack("CCnCCCCC", 0x04, 0x01, $targetPort, 0x00, 0x00, 0x00, 0x01, 0x00).$targetHostname.pack("C", 0x00));
    $response = fread($sock, 16);
    $values = unpack("xnull/Cret/nport/Nip", $response);
    if($values["ret"] == 0x5a) return $sock;
    else
    {
        fclose(sock);
        return false;
    }
}

正確には最終製品ではありませんが、PHP からの socks4a プロキシとの接続を開き、fsockopen で行うのと同じ種類のソケットを取得することができます。

于 2012-06-19T17:49:26.090 に答える
0

SOCKS プロキシ経由でポート転送を設定する必要があると思います。これにより、SOCKS プロキシを介してリモート ホストとポート (databasehost:3306) に接続を転送するローカル ポート (たとえば 3306) を開きます。これをバックグラウンドで実行し、PHP を localhost:3306 に接続させます (その後、databasehost:3306 に転送/トンネリングされます)。

于 2010-08-31T16:46:39.230 に答える