Re: Re: Перенаправление пакетов на локальный прокси сервер

Home Forums Discussions Support Перенаправление пакетов на локальный прокси сервер Re: Re: Перенаправление пакетов на локальный прокси сервер

#7069
Vadim Smirnov
Keymaster

    Что касается части с редиректом, то ничего сложного нет. Видим исходящий TCP SYN пакет (попадающий под наш критерий, скажем идущий на HTTP порт 80) для этого пакета:
    1) Аллокируем структуру в которой запоминаем данные для этой новой TCP сессии (адреса и порты).
    2) Подменяем IP адрес назначения на адрес компьютера B, порт назначения на порт на котором слушает SOCKS.
    3) Пересчитываем контрольные суммы пакета и отсылаем его в сеть.
    4) Для пакета полученного от компьютера B проверяем принадлежит ли он одному из сохраненных в первом пункте.
    5) Если да, то меняем адрес и порт порт источника на те что были в исходном TCP SYN пакете и посылаем вверх по стеку.

    Но все бы хорошо, но каким образом SOCKS узнает IP адрес и порт которому изначально направлялось соединение? Мы то их подменили при редиректе. Каким-то образом эту информацию нужно передать от компьютера A компьютеру B. Это можно сделать по дополнительному каналу или добавить дополнительные данные в TCP пакет. Это уже на выбор. Ну а так в общем должно работать.