php - прокси-сервер socks

Вот уже пятнадцать дней ломаю себе голову, чтобы решить этот вопрос. У меня есть приложение PHP, которое подключается к удаленному серверу mysql, но приложение не может напрямую обращаться к удаленному серверу mysql, оно должно подключаться через прокси-сервер socks. Пожалуйста, помогите мне решить эту проблему.

Заранее спасибо.


person Kaartz    schedule 31.08.2010    source источник
comment
Какой пакет mysql вы используете pdo_mysql, mysqli, mysql?   -  person prodigitalson    schedule 31.08.2010
comment
Я использую PDO, могу использовать и другие.   -  person Kaartz    schedule 31.08.2010


Ответы (2)


Я искал, сделал ли это кто-нибудь еще, но, думаю, нет. Я сделал интерфейс к SOCKS4a для PHP. Вот.

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;
    }
}

Это не совсем конечный продукт, но он позволит вам открыть соединение с прокси socks4a из PHP и получить тот же вид сокета, что и с fsockopen.

person bwall    schedule 19.06.2012

Думаю, вам нужно настроить переадресацию портов через прокси-сервер SOCKS. При этом вы открываете локальный порт (например, на 3306), который перенаправляет соединения на удаленный хост и порт (databasehost: 3306) через прокси-сервер SOCKS. Вы запускаете это в фоновом режиме и заставляете PHP подключаться к localhost: 3306 (который затем будет перенаправлен / туннелирован на databasehost: 3306)

person schuilr    schedule 31.08.2010
comment
Как это сделать? пожалуйста, не могли бы вы мне помочь? - person Kaartz; 31.08.2010
comment
Было бы намного проще (и безопаснее), если бы вы могли настроить SSH-соединение с этой машиной и позволить SSH перенаправлять порт. Это вариант для вас? - person schuilr; 31.08.2010
comment
У меня есть доступ к серверу mysql, но я не могу подключиться к нему по ssh. - person Kaartz; 31.08.2010
comment
Что ж, я не очень хорошо знаком с другими инструментами, кроме простого старого SSH для создания (безопасных) туннелей, но я думаю, вы могли бы попробовать то, что описано здесь: blog.kagesenshi.org/2006/02/ Я не уверен, кому принадлежит этот прокси и в какой сети вы делаете это, но имейте в виду, что ваше соединение небезопасно. Поэтому возможно перехватить данные, включая ваши учетные данные для входа в mysql. - person schuilr; 01.09.2010