socks5 - помогите разобраться с реализацией
От: ivlad Россия  
Дата: 17.05.07 01:57
Оценка:
Пожалуйста, растолкуйте, что должно произойти, когда сервер получил команду CONNECT от клиента и создал соединение с указанным хостом по указанному порту.

Правильно ли я понимаю, что после этого:

1. Сервер создаёт слушающий сокет
2. Адрес именно этого сокета отсылает клиенту в ответе
3. Ждёт, когда произойдёт подключение на этот сокет и accept'ит его
4. Всё, что прислано через это подключение отсылает удалённому хосту и наоборот

Похоже, что я чего-то не понимаю. Написал socks5-сервер, работающий по описанному алгоритму... Ни одна программа через него работать не может. Вот например лог сессии с miranda-icq (справа от символов > и < hex dump данных, полученных от клиента и отосланных ему, соотвественно):
# new client connected: 127.0.0.1:2751
[127.0.0.1:2751] > 05 01 00 
[127.0.0.1:2751] < 05 00 
[127.0.0.1:2751] > 05 01 00 01 40 0c a1 99 14 46 
[127.0.0.1:2751] # new pipe to 64.12.161.153:5190 created (listen on 89.110.10.178:32768)
[127.0.0.1:2751] # command CONNECT 64.12.161.153:5190 (success)
[127.0.0.1:2751] < 05 00 00 01 59 6e 0a b2 80 00
То есть сервер ждёт подключение на 89.110.10.178:32768, но его не происходит. Мне непонятно почему

Я написал также тестового клиента, который получив в ответе на комманду CONNECT ip и порт сразу открывает соединение по этому адресу (после чего закрывает его и отключается от сервера). Тогда всё ок, вот лог:
# new client connected: 127.0.0.1:2762
[127.0.0.1:2762] > 05 01 00 
[127.0.0.1:2762] < 05 00 
[127.0.0.1:2762] > 05 01 00 01 d5 b4 cc 08 00 50 
[127.0.0.1:2762] # new pipe to 213.180.204.8:80 created (listen on 89.110.10.178:32768)
[127.0.0.1:2762] # command CONNECT 213.180.204.8:80 (success)
[127.0.0.1:2762] < 05 00 00 01 59 6e 0a b2 80 00 
[127.0.0.1:2762] # pipe to 213.180.204.8:80 activated
[127.0.0.1:2762] # pipe to 213.180.204.8:80 destroyed (client disconnecting)
# client disconnected: 127.0.0.1:2762
При этом мой тестовый клиент не работает с другими socks5-proxy серверами (с которыми работают остальные клиенты, в частности, miranda-icq).

Пожалуйста, помогите решить проблему. А то я уже пару суток мучаюсь, не зная что делать
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.