GNU/Linux >> Znalost Linux >  >> Linux

Použití tc ke zpoždění paketů pouze na jednu IP adresu

Řešení 1:

Zvolená odpověď je nesprávná/neúplná. Čelil jsem podobnému problému, zvolená odpověď poskytla určitou pomoc, ale ne dost.

Za prvé, následující příkaz není ve skutečnosti potřeba.

tc qdisc del dev eth0 root

'Odstraní' kořenový disk qdisc, ale okamžitě bude nahrazen diskem pfifo_fast (takže neztratíte připojení).

Druhý příkaz:

tc qdisc add dev eth0 root handle 1:prio

Nahradí pfifo_fast qdisc prio. Ve výchozím nastavení má fronta prio 3 pásma (0, 1, 2), z nichž každé je spravováno jednou třídou (1:1, 1:2 a 1:3).

Pakety budou odeslány do jednoho z těchto pásem pomocí pole TOS balíčku IP. Tato konfigurace se zobrazí, když spustíte:

tc qdisc ls

při pohledu na hodnoty 'priomap'.

Poté přidáte netem qdisc:

tc qdisc add dev eth0 parent 1:1 handle 2:netem delay 500 ms

Tímto příkazem zdržíte veškerý provoz směřující do pásma 1:1 (dokud nebude filtr na svém místě).

Existují však dvě upozornění:

  • Váš provoz může mít jinou hodnotu TOS a poté může být odeslán do jiného pásma.
  • Prio qdisc lze nakonfigurovat tak, aby provoz šel do jiného pásma.

Následující vyřešilo můj problém tak, aby nebyl ovlivněn netem, když není použit filtr. Místo výše uvedených kroků jsem provedl:

tc qdisc add dev eth0 root handle 1:prio priomap 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2

To odešle veškerý provoz ve výchozím nastavení do pásma 1:3.

Poté jsem přidal pravidlo pro zpoždění provozu:

tc qdisc add dev eth0 parent 1:1 handle 10:netem delay 100ms 10ms

Tím se vytvoří qdisc v pásmu 0, ale protože veškerý provoz jde do pásma 3, neovlivnilo mě to.

Poté jsem přidal filtr:

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dst 10.0.0.1/32 match ip dport 80 0xffff flowid 1:1

Nyní s filtrem bude ovlivněna pouze zvolená IP/port, protože přesměrujeme zvolený provoz do pásma 0.

Veškerý ostatní provoz zůstává nedotčen, protože nadále proudí do pásma 3.

Řešení 2:

Dobře, vyřešil jsem svůj vlastní problém. Ukazuje se, že pokud provedete první 3 řádky výše (ty "tc qdisc"), zdrží se všechny pakety, protože ještě nejsou žádné filtry. 4. řádek jej změní tak, aby zpožďoval pouze pakety z této jediné IP adresy. Lze přidat další řádky filtru a přidat další adresy IP do seznamu „zpožděných“. Takže:nevytvářejte řádek "netem delay", aniž by na něj ukazoval filtr.


Linux
  1. Jak provést příkaz Ping pouze pro N počet paketů

  2. Fail2Ban Howto:Blokování IP adresy pomocí Fail2ban a IPTables

  3. Příklady použití příkazu tcpdump pro řešení problémů se sítí

  1. Jak změnit MAC adresu pomocí macchangeru na Kali Linuxu

  2. Jak získat konkrétní adresu paměti pomocí C

  3. Jak získat MAC adresu vašeho stroje pomocí programu C?

  1. Jak změnit adresu webu WordPress v phpmyadmin pomocí SQL

  2. Najít pouze první výskyt pouze pomocí Grepu?

  3. Odstraňování jednoduchých a dvojitých uvozovek v řetězci pouze pomocí bash / standardních příkazů Linuxu