네트워크가 느릴 때 특정 (파이썬) 애플리케이션이 제대로 작동하는지 테스트해야 합니다. 내 로컬 컴퓨터에서 이를 시뮬레이션할 수 있는 방법이 있습니까? 이상적으로는 관리자가 시스템을 수정하도록 요구하지 않고도 단일 응용 프로그램에 대해 이 작업을 수행할 수 있습니다. 예를 들어 패킷 손실 프록시 서버가 있습니다.
답변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 명령에는 적용되지 않습니다.
또한 tsocks
TCP에만 해당됩니다. 나는 ssh의 SOCKS 서버도 TCP만 수행한다고 생각하므로 양말파이어와 같은 다른 서버로 전환하더라도 dante
이 방법으로 UDP 트래픽을 제한할 수는 없습니다. dante의 SOCKS 서버를 사용하여 유사한 접근 방식을 고안해 볼 수 있습니다 ssh
.
편집하다. python3의 경우 python3용 네트워크를 전송할 수도 없고 관리할 수도 없음을 발견했습니다( test 사용 trickle
) . 하지만 작동 하는 것 같습니다 . 이를 사용하려면 다음과 같이 작성하십시오.tsocks
youtube-dl
dante
socksify
~/.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://...