Limita la larghezza di banda della rete per applicazione in Mac OS X.


37

Ho notato che iTunes sembra risucchiare tutta la mia larghezza di banda e non funziona bene con altre applicazioni che usano il web durante il download. In realtà, non si dà nemmeno abbastanza larghezza di banda durante la navigazione in iTunes Store durante il download di file di grandi dimensioni o molti (podcast, programmi TV, app di grandi dimensioni, ecc.).

Non mi preoccupo di ottenere tutti i miei download il più presto possibile, hanno una priorità davvero bassa e preferirei non farlo mentre sono sveglio, ma non posso premere il pulsante di aggiornamento se m a letto e l'ho già dimenticato.

Esiste un'applicazione o uno strumento tramite il Terminale per limitare la larghezza di banda di download che iTunes ottiene senza ostacolare anche i browser Web o altre applicazioni?

È preferibile il software FOSS / GPL, ma potrebbe essere accettabile anche il software a pagamento.


1
Network Link Conditioner è ottimo per limitare la larghezza di banda per tutte le app apple.stackexchange.com/questions/164959/…
Khaled Annajar,

Questa domanda è stata in gran parte resa obsoleta per il mio uso particolare. Raramente scarico contenuti su iTunes su base regolare (i podcast ora utilizzano un'app di terze parti solo su iPhone, acquisti di AppleTV per i video di iTunes e non sincronizzo app sul computer).
dotHTM

Risposte:


9

GUI:

CLI (nessun filtro specifico per porta ma può essere adattato):

Questi strumenti si basano su porte o intervalli di porte come criterio di filtro. Se non si conoscono le porte utilizzate dall'applicazione, è possibile verificarne la documentazione o utilizzare lsofmentre l'applicazione è in esecuzione per rivelare i numeri delle porte.

sudo lsof -i -P

La maggior parte o tutti gli strumenti usano ipfw che è ufficialmente deprecato a favore di pf , quindi non sono sicuro se queste soluzioni funzioneranno su OS X 10.9 e oltre.


5

Vecchia domanda, ma ho appena avuto un problema simile, quindi ho pensato di rispondere.

Il problema è probabilmente dovuto alla definizione del traffico sul tuo ISP. Danno la priorità in modo aggressivo al traffico verso fornitori di contenuti noti nel tentativo di fornire un migliore servizio di streaming ai clienti. Direi che in alcuni casi sono andati un po 'troppo in là - ho appena diagnosticato un problema simile in cui un caricamento di foto iCloud in background causava tempi di ping superiori a 45000 ms.

Per risolvere il problema, puoi semplicemente ridurre la quantità di larghezza di banda totale che il tuo computer utilizzerà al fine di impedire al traffico dell'ISP di derubare completamente la larghezza di banda da tutte le altre applicazioni. Ironia della sorte, questo migliorerà le prestazioni di navigazione sul tuo computer, oltre a migliorare ovviamente le prestazioni per altri computer della tua rete. Se ad esempio hai un limite di downstream di 15 Mbps, puoi limitare il tuo computer a utilizzarne solo 12 Mbps e l'algoritmo ISP non vedrà più la necessità di modellare il tuo traffico in modo aggressivo:

sudo ipfw pipe 1 config bw 12Mbits/s
sudo ipfw add 1 pipe 1 tcp from any to me

Nel mio caso, era la larghezza di banda a monte (limitata a 1 Mbps dal mio ISP) che era il fattore limitante, quindi ho eseguito il seguente, che ha risolto il mio problema:

sudo ipfw pipe 1 config bw 768Kbits/s
sudo ipfw add 1 pipe 1 tcp from me to any

Nota che questi comandi saranno efficaci solo fino al riavvio, ma per annullare la regola, procedi come segue:

ipfw delete 1

Trovo la pagina man di FreeBSD per ipfw, ma secondo Wikipedia, ipfw è stato de-enfatizzato in OS X a partire dal 10.4 al 10.5. Oggi non trovo ipfw sulla mia installazione di 10.10 e sia Homebrew che MacPorts non presentano installazioni sviluppate attivamente per ipfw.
dotHTM

2
ipfwè stato sospeso in os x, ma c'èpf
Chris


4

Usa IceFloor su [Mountain] Lion


Sto sottovalutando questa risposta dopo aver scoperto che IceFloor è più incentrato sul protocollo che sull'app. Quindi, se voglio limitare solo una determinata app, è difficile.
Knocte,

È stato votato perché l'esplorazione di IceFloor mi ha portato a trovare Vallum, che mi consente di bloccare l'accesso alla rete per app.
skplunkerin,


2

In relazione agli sviluppi attuali per OS X 10.10, l' ipfweseguibile comunemente indicato, non è più disponibile. Tuttavia, esiste un pfeseguibile in grado di gestire configurazioni firewall simili.

C'è un'interfaccia GUI chiamata "Murus" ( http://www.murusfirewall.com ), che puoi usare per la configurazione pf. A quanto ho capito, supporta anche attivamente la limitazione della larghezza di banda (dall'interfaccia utente).

[MODIFICARE]

Nel caso in cui qualcuno non possa andare senza ipfw, potresti provare a compilarlo da solo. Il codice sorgente (da FreeBSD) è disponibile qui: http://www.freebsd.org/cgi/cvsweb.cgi/src/sbin/ipfw/

Apple pubblica anche il codice sorgente dei progetti open source che utilizza (d). ipfwpuò essere trovato qui: http://www.opensource.apple.com/source/network_cmds/network_cmds-329.2.2/


1
Sono stato in grado di configurare con successo Murus per limitare Skype 8 su OS X 10.14 Mojave usando le istruzioni qui: murusfirewall.com/forum/viewtopic.php?t=428
Jon Schneider

1

il gocciolamento è ciò che stai cercando.

L'unico problema è che non supporta gli eseguibili che utilizzano kqueue e non supporta gli eseguibili collegati staticamente. iTunes dovrebbe andare bene.


1
Non ho potuto ottenere il gocciolamento 1.0.6 o 1.0.7 da costruire. Dopo aver eseguito ./configure ricevo un errore che dice che non è possibile trovare libevent. Ho installato libevent tramite MacPorts e ho avuto lo stesso errore quando ho provato di nuovo.
dotHTM

Le versioni di @Kio> 1.06 non vengono create a causa di problemi con la chiamata a poll(). Quelli più anziani dovrebbero funzionare comunque.
John T,

4
Ho scaricato il trucco 1.0.5, ho eseguito "$ sudo ./configure" e ho ottenuto il seguente errore proprio come prima: "configura: errore: libevent non trovato". Ho controllato e MacPorts ha installato libevent. Inoltre, non sono così appassionato di software che non è stato aggiornato da anni.
dotHTM


0

Recentemente ho scoperto (e sto ancora provando) Vallum per avere il controllo delle mie app:

È un MacOS Application Firewall che ti consente di limitare quali app possono usare Internet. Finora è davvero fluido, ho appena creato un profilo predefinito che consente tutto ciò a cui voglio avere accesso e un profilo Hotspot mobile che limita più app quando sono in viaggio.


Aggiornamento: non sono stato in grado di " limitare " la larghezza di banda per le app che utilizzano Vallum , solo di impostare profili diversi in cui limitare più / meno app.


3
non sembra consentire affatto la
limitazione

@GJ. vero, non sono stato in grado di vedere quell'abilità neanche ... finora posso solo consentire a un'app di accedere alla rete o no. Ho impostato diversi profili come "throttles" per la mia soluzione a questo.
skplunkerin,

0

Il modo migliore per limitare la larghezza di banda su macOS è usare Dummynet, che è integrato nel kernel macOS e funziona con il filtro pacchetti pf. A mio avviso, l'unico modo per ottimizzare efficacemente la larghezza di banda in base al processo è quello di identificare quali porte locali sono vincolate dal processo e quindi creare le regole pf dummynet corrispondenti. Per quanto ne so l'unica app macOS che offre questa opzione è Scudo (sono lo sviluppatore di Scudo, Vallum e Murus). Scudo 1.0 beta 3 è attualmente disponibile gratuitamente, ulteriori informazioni sull'ottimizzazione della larghezza di banda per processo di Scudo sono disponibili qui: http://www.murusfirewall.com/forum/viewtopic.php?f=2&t=1919&p=3281#p3281


Ho provato questo e sembra funzionare. Questo è ora in beta 6 (beta 3 non funzionerà più) - murusfirewall.com/forum/viewtopic.php?f=2&t=1949 Mi piace Network Monitor che ti consente di aggiungere al firewall e limitare la larghezza di banda.
f01
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.