단일 프로그램의 네트워크 트래픽을 인위적으로 느리게 만드는 행위

단일 프로그램의 네트워크 트래픽을 인위적으로 느리게 만드는 행위

네트워크가 느릴 때 특정 (파이썬) 애플리케이션이 제대로 작동하는지 테스트해야 합니다. 내 로컬 컴퓨터에서 이를 시뮬레이션할 수 있는 방법이 있습니까? 이상적으로는 관리자가 시스템을 수정하도록 요구하지 않고도 단일 응용 프로그램에 대해 이 작업을 수행할 수 있습니다. 예를 들어 패킷 손실 프록시 서버가 있습니다.

답변1

옆에trickle, 제한 "속도"의 실시간 상태를 제공하는 이점도 있는 해킹 가능한 방법입니다.연결하다그리고 비용 절감을 공유하게 해주세요연결하다독립적인 애플리케이션 간:

ssh -D 1080 -N -o ProxyCommand='
    pv -B8K -trabcN OUT -L2K |
    socat - tcp:%h:%p,rcvbuf=8K |
    pv -B8K -trabcN  IN -L30K' localhost

pv속도 제한( )에 의해 속도가 느려지 는 프록시 명령으로 인해 제한된 SOCKS5 서버를 시작합니다. -L여기서 출력과 입력은 서로 다른 속도로 속도가 제한됩니다.

그런 다음 명령을 양말화하십시오. tsocks예를 들어 구성은 다음과 같습니다 ~/.tsocks.conf.

server = 127.0.0.1
server_port = 1080
server_type = 5

다음 없이 일부 ISO 이미지를 다운로드하세요 tsocks.

$ wget -O /dev/null http://releases.ubuntu.com/18.10/ubuntu-18.10-live-server-amd64.iso
/dev/null             2%[                    ]  19.60M  1.99MB/s    eta 6m 47s

동일한 양말화:

$ tsocks wget -O /dev/null http://releases.ubuntu.com/18.10/ubuntu-18.10-live-server-amd64.iso
/dev/null             0%[                    ] 802.40K  29.3KB/s    eta 3h 21m

한편 pv출력은 다음과 같습니다.

      OUT: 3.65KiB 0:00:32 [0.00 B/s] [ 116 B/s]
       IN:  960KiB 0:00:32 [30.5KiB/s] [30.0KiB/s]

(현재 속도( -r)와 평균 속도( -a)를 표시합니다.)

tsocks$LD_PRELOAD또는 네트워크 기능을 탈취하여 SOCKS 서버를 통과하도록 실행 파일에 코드를 삽입하는 기타 양말화 명령입니다 . 이는 정적 링크 또는 setuid/setgid 명령에는 적용되지 않습니다.

또한 tsocksTCP에만 해당됩니다. 나는 ssh의 SOCKS 서버도 TCP만 수행한다고 생각하므로 양말파이어와 같은 다른 서버로 전환하더라도 dante이 방법으로 UDP 트래픽을 제한할 수는 없습니다. dante의 SOCKS 서버를 사용하여 유사한 접근 방식을 고안해 볼 수 있습니다 ssh.

편집하다. python3의 경우 python3용 네트워크를 전송할 수도 없고 관리할 수도 없음을 발견했습니다( test 사용 trickle) . 하지만 작동 하는 것 같습니다 . 이를 사용하려면 다음과 같이 작성하십시오.tsocksyoutube-dldantesocksify~/.dante.conf

route {
        from: 0.0.0.0/0   to: 0.0.0.0/0   via: 127.0.0.1 port = 1080
}

애플리케이션을 호출합니다.

SOCKS_CONF=~/.dante.conf socksify youtube-dl https://...

관련 정보