У меня есть сервер http и ssh в локальной сети за домашним маршрутизатором. Маршрутизатор настроен для переадресации портов TCP и UDP в диапазоне 1:1024 с открытого интерфейса (1.2.3.4) на сервер внутри локальной сети (192.168.0.12). Я могу связаться с сервером по общедоступному IP-адресу как из Интернета, так и из локальной сети.
Проблема заключается в том, что соединения SSH от клиента в локальной сети к общедоступному IP-адресу маршрутизатора являются чрезвычайно медленными (сокращение в ~ 10 раз) по сравнению с подключениями от клиента в локальной сети к частному IP-адресу сервера. Это не относится к HTTP-соединениям.
Некоторое снижение скорости при использовании общедоступного IP-адреса ожидается из-за накладных расходов на выполнение NAT, но я ожидаю, что это не будет зависеть от протокола.
Некоторые примеры
Это загружается со скоростью ~ 3 МБ / с с частыми задержками:
tleonardi@host ~ $ scp 1.2.3.4:/path/to/file.txt .
Пока это скачивается со скоростью ~ 30 МБ / с:
tleonardi@host ~ $ scp 192.168.0.12:/path/to/file.txt .
Загрузка того же файла через HTTP на общедоступный IP-адрес происходит только на ~ 2 МБ / с медленнее, чем частный IP-адрес.
Дальнейшая информация
Сервер ssh настроен с
UseDNS no
Запуск Wireshark во время передачи файла из 1.2.3.4 (медленный) обнаружил множество пакетов, помеченных как TCP Dup Ack
MTU маршрутизатора установлен на 1500
В дополнение к scp соединения ssh с удаленным терминалом также часто зависают.
Любая помощь высоко ценится!