Как ограничить пропускную способность соединения SSH

Отвечая на другой ваш вопрос: "Почему я не могу получить пакеты на enp0s3?"

Он указывает на локальную сеть 192.168.10.0/24

Таким образом,если у вас нет сервера в локальной сети, который отвечает на запросы о доставке пакетов, вы не получите ничего по этому маршруту.

1
16.09.2021, 04:29
1 ответ

Это можно сделать с помощью ProxyCommand, который действует как альтернатива необработанному соединению TCP. Вы можете указать ProxyCommandв глобальной конфигурации для ssh(/etc/ssh/ssh_config), вашей частной конфигурации(~/.ssh/config)или в командной строке как ssh -o ProxyCommand=….

Тривиальное ProxyCommand— это nc %h %pили эквивалентное (использование nc, ncat, socatс правильным синтаксисом, все, что может дать вам необработанное TCP-соединение с сервером SSH ). Чтобы поговорить с сервером, ваш sshбудет писать на стандартный ввод этой команды и читать ее из стандартного вывода. Единственный nc %h %pпочти подобен соединению без ProxyCommand(, когда sshвыполняет работу ncвнутри ).

Хитрость в том, что вы можете вставлять фильтры между nc %h %pи sshс обеих сторон. Таким образом, вы можете ограничить соединение. Представьте, что ваши sshразговоры через это:

pv -qL 20K | nc %h %p | pv -qL 10K

То, что sshотправляет на сервер, ограничивается первым pv; то, что sshполучает от сервера, ограничивается вторым pv.

Чтобы запустить ssh, который говорит через приведенную выше команду, вызовите:

ssh -o ProxyCommand='pv -qL 20K | nc %h %p | pv -qL 10K' …

Примечания:

  • С помощью этого метода вы ограничиваете все соединение SSH, все, что через него проходит, все туннели, переадресацию X11, другие сеансы (в случае совместного использования соединения ), все . Вы ограничиваете необработанное TCP-соединение.

  • Если вы используете ssh -N, то вы можете захотеть, чтобы pvне молчали и фактически сообщали о пропускной способности туннеля (с):

    ssh -o ProxyCommand='pv -cN out -L 20K | nc %h %p | pv -cN in -L 10K' -ND 8080 user@server
    
  • С помощью pv -R(, вызванного в стороне ), вы можете изменить настройки работающего pv, таким образом, вы можете отрегулировать газ в любое время. Если вы хотите сделать это, то pv -Pвнутри ProxyCommandбудет полезно указать, какой PID принадлежит какому pv. Подробности см. в man 1 pv.

1
30.09.2021, 21:31

Теги

Похожие вопросы