Вопрос или проблема
Ссылка обсуждает TCP по TCP, когда http используется через SOCKS через SSH.
Я пытаюсь просматривать сайты из Firefox (на Ubuntu 14.04) после настройки опции прокси SOCKS5 через localhost. Я создал соединение SOCKS5 с помощью SSH (созданного с помощью SSH -D) к другому хосту (который затем берет пакеты и направляет их наружу).
Ссылка говорит о том, что SSH может работать в режиме без шифрования, но после применения небольшого патча, предложенного там к файлу cipher.c OpenSSH, я вижу зашифрованные пакеты в wireshark, хотя там указано (шифрование:нет, mac:[email protected], сжатие:нет)
SSH Протокол
SSH Версия 2 (шифрование:нет, mac:[email protected], сжатие:нет)
Длина пакета: 48
Зашифрованный пакет: 0932000000076d696e696e65740000000e7373682d636f6e...
MAC: 1a7bf2cfa15def0f
Я хотел бы проверить, является ли это действительно соединением TCP по TCP.
Редактирование: имеет ли значение, что при запуске SSH -D (ssh user@host2 -D 8080) меня просят ввести пароль? Почему-то я не могу сделать так, чтобы host2 не просил у меня пароль (хотя я добавил ключ host1 в host2).
Я не уверен в проблеме с этим патчем ssh. Но почему вы наблюдаете за трафиком ssh-соединения? Вы могли бы перехватить трафик между вашим веб-браузером и перенаправляющим сокетом на устройстве lo:
tcpdump -i lo port 10080
Или аналогично в wireshark.
Ответ или решение
Для проверки, является ли ваше соединение через SOCKS5-прокси (через команду ssh -D
) TCP over TCP, вам нужно учитывать несколько аспектов, включая анализ сетевого трафика и корректность настройки SSH-туннеля.
Что такое TCP over TCP?
В контексте сетевого взаимодействия, термин "TCP over TCP" означает использование протокола TCP (Transmission Control Protocol) внутри другого соединения TCP. Это может привести к различным проблемам, включая увеличение задержек и возможность возникновение "проблемы с задержкой", когда один уровень TCP может не получить подтверждения от другого уровня, что вызывает дополнительные таймауты.
Шаги для проверки TCP over TCP
-
Наблюдение за трафиком на уровне браузера:
Чтобы установить, происходит ли воздействие TCP over TCP, начните с анализа трафика между вашим браузером и локальным сокетом SOCKS5. Для этого используйте такой инструмент, какtcpdump
:sudo tcpdump -i lo port 8080
Или в Wireshark, фильтруя по порту SOCKS5 (в вашем случае, может быть 8080 или 10080). Вы должны увидеть пакеты, исходящие от вашего браузера, и их ответ от SOCKS5-прокси.
-
Анализ SSH-соединения:
Иногда использованиеtcpdump
на интерфейсе сети, где осуществляется SSH-туннель, может также помочь. Запустите:sudo tcpdump -i <interface> port <ssh-port>
Замените
<interface>
на название сетевого интерфейса, а<ssh-port>
(обычно 22). Это позволит увидеть, как SSH происходит и если в нем действительно происходит дополнительный поток TCP. -
Проверка использования SOCKS:
Убедитесь, что в настройках вашего браузера установлен прокси SOCKS5 и направлен наlocalhost:8080
. Вы можете использовать расширения браузера, такие как FoxyProxy, для упрощения управления прокси.
Проверка метода подключения
Если после выполнения команд SSH вы все равно получаете запрос на ввод пароля, это может означать, что аутентификация по ключу не работает должным образом. Убедитесь, что:
- Ключи SSH (публичный и приватный) корректно сконфигурированы.
- Приватный ключ доступен и имеет правильные права доступа (обычно
chmod 600
). - Публичный ключ находится в файле
~/.ssh/authorized_keys
на сервере. - Вы можете протестировать соединение, например, выполнив:
ssh -i /path/to/private/key user@host2
Заключение
По сути, анализ трафика между вашим браузером и SOCKS5-прокси является ключевым моментом для определения, происходит ли TCP over TCP. Убедитесь, что SSH-соединение настроено правильно, чтобы облегчить процесс анализа и устранения проблемы с паролем.
Следуя данным рекомендациям и используя доступные инструменты, вы сможете получить полное представление о том, как работает ваш сетевой трафик и как он обрабатывается через SOCKS5, тем самым убедившись, что ваше соединение работает оптимально.