SSH 연결의 대역폭을 제한하는 방법

SSH 연결의 대역폭을 제한하는 방법

SSH 연결 속도를 제한하는 방법은 무엇입니까? 예를 들어 포트 전달( ssh -L ...), 역방향 터널링( ssh -R ...) 또는 SOCKS5 동적 포트 전달( ) 을 수행할 때 ssh -D ...터널의 대역폭을 제한하고 싶을 수 있습니다.

답변1

ProxyCommand이는 원래 TCP 연결 대신 이를 사용하여 수행할 수 있습니다. ProxyCommand전역 구성 ssh( ) 또는 명령줄에서 /etc/ssh/ssh_config개인 구성을 지정할 수 있습니다 .~/.ssh/configssh -o ProxyCommand=…

간단 ProxyCommand하거나 nc %h %p이에 상응하는 것( 올바른 구문으로 SSH 서버에 대한 원시 TCP 연결을 제공하는 모든 것 ) nc. 서버와 통신하려면 명령의 표준 입력에 쓰고 명령의 표준 출력에서 ​​읽습니다. 밑창이 연결되지 않은 것과 거의 같습니다 ( 내부적으로 작동하는 경우 ).ncatsocatsshnc %h %pProxyCommandsshnc

비결은 양쪽과 사이에 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언제든지 스로틀을 조정할 수 있습니다. 이렇게 하려면 PID가 어디에 속하는지 pv -P내부에 ProxyCommand알려주는 것이 유용할 것입니다 pv. man 1 pv자세히보다.

  • 구성에서 이미 s 를 사용하는 경우 s 를 사용하여 (대신 ) ProxyCommand기존 값을 포함해야 합니다 . 구성에서 이미 이를 사용하고 있는 경우 이를 로 변환 한 다음 s와 함께 포함 해야 합니다 .nc %h %ppvProxyJumpProxyCommandpv

답변2

한 가지 옵션은 라우터의 포트 22에 QoS를 적용하는 것입니다.

물방울경량 사용자 공간 대역폭 셰이퍼. 또한 될 수 있습니다데몬으로 실행, 한 번에 여러 세션을 관리할 수 있는 역할입니다.

또 다른 가능성은 다음과 같은 것을 사용하는 것입니다.HTB 초기화 프로그램- 스크립트 또는IP_릴레이.

~에 따르면이 토론, iptables를 사용하여 패킷 흐름을 제한할 수도 있지만 이는 내 선택이 아닙니다. 차라리 대역폭을 직접 제한하고 싶습니다.

관련 정보