Mac에서 느린 인터넷 연결을 시뮬레이트하는 방법


145

테스트 및 시뮬레이션을 위해 Mac에서 인터넷 연결을 느리게하는 좋은 소프트웨어 솔루션은 무엇입니까?

필자의 주요 요구 사항은 iPhone / iOS 시뮬레이터에서 코드를 테스트 할 때 특정 응용 프로그램이나 프로세스의 연결 속도를 늦추는 것입니다.


수락 된 답변 (네트워크 링크 컨디셔너)도 버퍼 팽창 문제에 대한 훌륭한 빠르고 어려운 해결 방법이라는 것을 알았습니다.
Robert Tupelo-Schneck

답변:


168

Apple은 테스트를 위해 Mac의 네트워크 연결 속도를 늦출 수있는 매우 편리한 공식 도구를 만들었습니다.

네트워크 링크 컨디셔너 선호 (사자 나중에 OS 용) 엑스 코드 내에서 무료로 다운로드 할 수 있습니다. 또한 iOS에는 Xcode 및 iOS 6 이상에서 액세스 할 수있는 유사한 기능이 있습니다.

여기에 이미지 설명을 입력하십시오

4.3.2 이전 버전의 Xcode 는이 도구의 사본을 포함했습니다. 이제 Xcode 를 사용 하여 iOS 시뮬레이터 및 개발자 설명서와 유사한 방식으로 직접 다운로드합니다 .

400ms 지연된 Lossy Edge 네트워크에서 케이블 모뎀으로 11 개의 내장 프로파일이 있습니다. 다른 제한이 필요한 경우 고유 한 설정으로 사용자 정의 프로파일을 만들거나 Craig Hockenberry 의 기사 느린 승차에ipfw 설명 된대로 자신을 사용할 수도 있습니다 . 더 쉽게 다운로드 할 수있는 Mike Schrag속도 제한 패널 도 언급되어 있습니다. Xcode보다 적지 만 Apple 도구보다 옵션이 적습니다.

전체 네트워크 스택을 느리게하므로 가상 머신에 lion을 설치하고 스로틀 스택으로 해당 VM을 설정하지 않고 앱별로 스로틀을 할 수 없습니다.


1
: OI는 심지어 Xcode를 가지고 있으며 이것에 대해 몰랐습니다
Alexander

21
테스트를 마친 후에는 반드시 종료하십시오!
Jason Salaz

1
설명 : 실제로 Apple에서 하드웨어 IO 도구를 다운로드해야합니다. 참조 사과 네트워크 링크 컨디셔너 도구 설치
daviesgeek을

2
아래에 언급 된 제한 속도는 훌륭하게 작동합니다 . MAMP의 localhost : 8888에 지금 사용하고 있습니다.
Anriëtte Myburgh

1
또한 iOS 6에는 기기 테스트를위한 네트워크 링크 컨디셔너가 있습니다. "네트워크 링크 컨디셔너"섹션의 설정-> 개발자를 통해 액세스하십시오.
Mike Weller

35

OS X 10.9 및 이전 버전은 ipfw사용자 정의 방화벽 규칙을 정의하고 정의 할 수 있습니다. 사용하여 제한된 대역폭파이프를 생성하면 ipfw테스트 및 시뮬레이션을 실행할 수 있습니다.

  1. 를 통해 500KBytes / s로 제한되는 파이프 "1"을 만듭니다.

    sudo ipfw pipe 1 config bw 500KByte/s
    
  2. 파이프 "1"을 통해 포트 80의 모든 네트워크 트래픽을 사용하여 안내

    sudo ipfw add 1 pipe 1 src-port 80
    
  3. 더 이상 파이프가 필요하지 않으면 다음을 사용하여 포트에서 파이프를 제거하십시오.

    sudo ipfw delete 1
    

다른

  • 더 높은 교통 장벽을 설정하려면 MByte/s
  • 포트 80: 암호화되지 않은 http트래픽의 표준 포트입니다 . 이 포트는 대부분의 탐색 및 다운로드에 사용됩니다. 대부분의 경우 이것으로 충분해야합니다.
  • 포트 443: SSL 암호화 https트래픽의 표준 포트 .

10
불행히도 ipfw는 OS X 10.10 Yosemite에서 제거되었습니다.
igo

pfctl을 사용하여 OS X 10.10+
Eugene A

사용법 pfctldnctl예제 를 보여주는 답변을 아래에 추가했습니다 .
ubershmekel

31

속도 제한 은 특정 포트 및 도메인을 의도적으로 선택적으로 느리게하기위한 시스템 환경 설정 패널입니다.


나는 그것이 받아 들인 대답에 언급 된 XCode 도구보다 세분화 된 것이 좋습니다. 제안 해 주셔서 감사합니다.
sholsinger

1
실제로 "localhost"가 작동하지 않는다는 것을 알았습니다. ip 주소 127.0.0.1로 전환하면 트릭이 발생했습니다.
OlliM


제한 속도 링크가 끊어졌습니다.
Jeff Holt

속도 제한에 대한 소스는 현재 유지 관리되지 않는 것으로 보이지만 여기에서 사용할 수 있으며 전혀 테스트하지는 않았지만 여기 에서 더 최신 정보를 찾을 수 있습니다.
Brad Parks

11

허용되는 답변에 추가하려면 XCode가 필요하지 않은 것 같습니다 .Apple Developer 웹 사이트의 계정 일뿐입니다 (2GB XCode 패키지가없는 경우 먼저 다운로드하는 것보다 간단합니다).

https://developer.apple.com/downloads로 이동하여 "Network Link Conditioner"또는 "Additional Tools for XCode"를 검색하십시오 (후자는 패키지의 이름 임).

Xcode 8.x를 통해 다운로드하려면 :

  • Xcode 메뉴를 클릭하십시오
  • 개발자 도구 열기> 추가 개발자 도구 ...로 이동하십시오.
  • developer.apple.com에서 페이지가 열립니다 (참고 : 먼저 로그인해야 할 수도 있습니다)
  • Xcode 8.x 용 추가 도구 옆에있는 '+'기호를 클릭하십시오.
  • 다운로드 URL을 클릭하십시오

2
다른 질문에 오신 것을 환영합니다! 대신 누군가 다른 사람의 답변을 편집 할 수있는 답을 작성하는, 단순히 클릭 편집 또는 이 응답 향상 버튼을 사용하면 개선하고자하는 포스트 아래를 .
grg

9

웹 개발에만 조절이 필요한 경우 Charles를 진심으로 추천 할 수 있습니다 . 어쨌든 HTTP 응용 프로그램을 디버깅하기위한 훌륭한 도구이며 많은 기능 중에서 스로틀 옵션이 있습니다. 소프트웨어는 싸지는 않지만 훌륭한 일을합니다.


사실 ..와 서버에 대한 연결을 테스트 아이폰 시뮬레이터 위해 필요
aneuryzm

5

맥 OS X 10.10 사용자는 사용할 필요 dnctl하고 pfctl있지만, 문서화 된 예문 쉽게 찾을 수 없습니다.

# Configure `pfctl` to use `customRule`. 
(cat /etc/pf.conf && echo "dummynet-anchor \"customRule\"" && echo "anchor \"customRule\"") | sudo pfctl -f -

# Define `customRule` to pipe traffic to `pipe 1`.
# Note this is the actual port definition, not a textual comment
echo "dummynet in quick proto tcp from any to any port 443 pipe 1" | sudo pfctl -a customRule -f -

# Define what `pipe 1` should do to traffic
sudo dnctl pipe 1 config delay 10000
sudo dnctl pipe 1 config bw 10Kbit/s

# DO NOT FORGET to undo these when you're done
sudo dnctl -q flush
sudo pfctl -f /etc/pf.conf

모두 나가서 사용할 수있는 모든 것을 만들고 싶다면 :

echo "dummynet in quick proto tcp from any to any pipe 1" | sudo pfctl -a customRule -f -

나는 이것이 로컬 호스트 파이프에 영향을 미쳐 내 vs 코드 디버깅을 느리게한다고 생각하므로주의하십시오.


4

ipfw 파이핑을 사용하여 네트워크 속도를 늦출 수도 있습니다.

먼저 가상 "파이프"를 설정하여 처리량을 800KBit / sec로 제한하십시오.

ipfw pipe 1 config bw 800Kbit

그런 다음 해당 파이프 (파이프 1)를 통해 트래픽을 푸시하는 규칙을 설정할 수 있습니다. (포트 토트 트래픽 인 포트 6881-6890)

ipfw add 10 pipe 1 tcp from any to me 6881-6890
ipfw add 11 pipe 1 tcp from any 6881-6890 to me

특정 IP 주소에서 트래픽을 10Kbit / sec로 제한하는 또 다른 예는 다음과 같습니다.

ipfw pipe 2 config bw 10Kbit
ipfw add 15 pipe 2 ip from me to 64.81.84.114

(출처)


IPFW는 OSX 10.10에서 제거
벤 휠러에게

-1

XCode 10.2의 경우 추가 개발자 도구-XCode 10.2의 추가 도구에 네트워크 링크 컨디셔너가 있습니다.


이 솔루션은 이미 제공된 답변과 어떻게 다릅니 까?
Nimesh Neema

이전 XCode 버전 용인 경우에도 하드웨어 도구를 실수로 다운로드했지만 최신 버전에서는 볼 수 없기 때문에 제대로 작동한다고 생각했습니다. 새로 작성된 XCode 10.2의 경우 최신 네트워크 링크 컨디셔너를 얻으려면 추가 도구를 선택해야한다고 작성된 곳은 없습니다. 다른 개발자들이 시간을 낭비하지 않도록 여기에서 언급했습니다. 다른 것과 다르지 않다면 15를 빼십시오. 나는 그것을 새로
했으므로

답변을 편집 하고이 중요한 정보를 포함 시킬 수 있다면이 답변을 읽는 사람에게 도움이 될 것 입니다. 또한 많은 사용자가 명확하게 작성된 단계별 지침이 실제로 중요하다는 것을 알고 있습니다.
Nimesh Neema

@NimeshNeema 모든 개발자가 커뮤니티에서 더 많은 개발자 도구를 통해이 도구를 찾을 수 있다고 알고 있습니다. 나는 단계를 썼다. 나는 더 자세히 언급해야한다고 생각하지 않습니다.
Kiran Jasvanee

답변을 작성하는 방법은 전적으로 괜찮습니다. 일반적으로 규칙보다는 실습을 따랐다.
Nimesh Neema
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.