Соединение с socks:
socket_create(AF_INET, SOCK_STREAM, SOL_TCP );
socket_connect($socket, $address, $port);
Потом отправляю запрос на аутентификацию:
0x05
0x01
0x00
Все отлично, в ответ приходит:
0x05
0x00
После этого для соединения с сайтом отправляю запрос:
0x05
0x01
0x00
(4 октета ип адреса сайта)
0x00
(2 октета порта)
Все отлично, приходит ответ:
0x05
0x00
0x01
(4 октета ип адреса сайта)
(2 октета порта)
Все отлично - можно пользоваться
Отправлять запросы вида: "GET / HTTP..." и получать ответы.
Хотел вставить еще одно socks звено, после соединения отправлять CONNECT не на ip сайта, а на ip 2 socks:
0x05
0x01
0x00
(4 октета ип адреса socks)
0x00
(2 октета порта)
Но в ответ приходит:
0x05
0x01 (Ошибка socks)
0x01
(4 октета ип адреса сайта)
(2 октета порта)
Пробовал вместо CONNECT отправлять udp:
0x05
0x03
0x00
(4 октета ип адреса socks)
0x00
В ответ приходит:
0x05
0x00
0x01
(4 октета ип адреса сайта)
(2 октета порта)
Ответ отличный, но отправив после этого запрос к сайту:
0x05
0x00
0x01
(4 октета ип адреса сайта)
0x00
(2 октета порта)
Ничего не происходит.
Читал русскую rfc - не понятно, именно само взаимодействие цепочки, находил еще материалы, где для создания цепочки после авторизации у первого SOCKS последовательно отправлять CONNECT и UDP ASSOCIATE ко второму, но у меня уже на первом шаге возникает ошибка. По отдельности socks работают, пробовал разные.
Буду благодарен за любые полезные материалы, примеры на rus/eng/code языках.
Так же есть вопрос, при соединении:
0x05
0x00
0x01
(4 октета ип адреса сайта)
0x00
(2 октета порта)
Между ip и port указывается нулевой откет, в переводе rfc об этом ничего не указано - это ошибка перевода?