Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#26  2014-01-30 15:44:32

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Te wysokie % fixnąłem przez ustalenie innych numerów klas:

Kod:

Interfaces                     | RX bps       pps     %| TX bps       pps     %
->lo                           |    507B        9      |    507B        9
  eth0                         |   1.12MiB    778      |  26.01KiB    428
    qdisc 1: (htb)             |      0         0      |  23.86KiB    428
      cls none (u32)           |      0         0      |      0         0
      cls 8000: (u32)          |      0         0      |      0         0
      cls 8000:800 (u32)       |      0         0      |      0         0
    qdisc ffff: (ingress)      |      0         0      |   1.11MiB    778
      cls none (u32)           |      0         0      |      0         0
      cls 8000: (u32)          |      0         0      |      0         0
      cls 8000:800 (u32)       |      0         0      |      0         0
  ifb0                         |  23.86KiB    428      |  23.86KiB    428
    qdisc 1: (htb)             |      0         0      |  23.86KiB    428
      class 1:1 (htb)          |      0         0      |  23.86KiB    428   21%
        class 1:2 (htb)        |      0         0      |      0         0    0%
        class 1:3 (htb)        |      0         0      |  23.86KiB    428   78%
        class 1:4 (htb)        |      0         0      |      0         0    0%
  ifb1                         |   1.13MiB    786      |   1.13MiB    786
    qdisc 2: (htb)             |      0         0      |   1.13MiB    786
      class 2:1 (htb)          |      0         0      |   1.13MiB    786   100%
        class 2:2 (htb)        |      0         0      |      0         0    0%
        class 2:3 (htb)        |      0         0      |      0         0    0%
        class 2:4 (htb)        |      0         0      |   1.13MiB    786   380%

Zamiast 3800% jest 380% i jak widać na korzeniu jest 100% a nie 1000%, czyli tak jak być powinno, teraz jakoś te pakiety przychodzące trzeba wrzucić do kolejki 2:3, bo póki co tylko wychodzące trafiają tam gdzie trzeba 1:3

Offline

 

#27  2014-01-30 19:35:31

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Dziwna sprawa z tym w sumie. Zrobiłem mały test by sprawdzić czy zmarkowane pakiety powracają i są łapane przez iptables:

Kod:

# iptables -t mangle -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -i ifb1 -m connmark --mark 0x3 -j ACCEPT
-A PREROUTING -i ifb0 -m connmark --mark 0x3 -j ACCEPT
-A PREROUTING -i eth0 -m connmark --mark 0x3 -j ACCEPT
-A OUTPUT -o ifb0 -m owner --uid-owner 1000 -j CONNMARK --set-xmark 0x3/0xffffffff
-A OUTPUT -o ifb1 -m owner --uid-owner 1000 -j CONNMARK --set-xmark 0x3/0xffffffff
-A OUTPUT -o eth0 -m owner --uid-owner 1000 -j CONNMARK --set-xmark 0x3/0xffffffff
-A POSTROUTING -o ifb0 -m connmark --mark 0x3 -j CLASSIFY --set-class 0001:0003
-A POSTROUTING -o ifb1 -m connmark --mark 0x3 -j CLASSIFY --set-class 0001:0003
-A POSTROUTING -o eth0 -m connmark --mark 0x3 -j CLASSIFY --set-class 0001:0003

Są 3 interfejsy i tylko eth0 działa prawidłowo.

Kod:

Every 1.0s: iptables -t mangle -nvL                                                                                                                           Thu Jan 30 19:30:25 2014

Chain PREROUTING (policy ACCEPT 328 packets, 38261 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 ACCEPT     all  --  ifb1   *       0.0.0.0/0            0.0.0.0/0            connmark match  0x3
    0     0 ACCEPT     all  --  ifb0   *       0.0.0.0/0            0.0.0.0/0            connmark match  0x3
  532  717K ACCEPT     all  --  eth0   *       0.0.0.0/0            0.0.0.0/0            connmark match  0x3

Chain INPUT (policy ACCEPT 860 packets, 755K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 650 packets, 47327 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 CONNMARK   all  --  *      ifb0    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK set 0x3
    0     0 CONNMARK   all  --  *      ifb1    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK set 0x3
  348 17255 CONNMARK   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK set 0x3

Chain POSTROUTING (policy ACCEPT 650 packets, 47327 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 CLASSIFY   all  --  *      ifb0    0.0.0.0/0            0.0.0.0/0            connmark match  0x3 CLASSIFY set 1:3
    0     0 CLASSIFY   all  --  *      ifb1    0.0.0.0/0            0.0.0.0/0            connmark match  0x3 CLASSIFY set 1:3
  358 17667 CLASSIFY   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            connmark match  0x3 CLASSIFY set 1:3

Na moje oko to te pakiety co trafiają do ifb1 nie mają pojęcia co robić. Może coś z tym trzeba popracować bardziej?

Kod:

tc filter add dev eth0 parent ffff: protocol ip prio 10 u32 match ip src  0.0.0.0/0 flowid 2:1 action mirred egress redirect dev ifb1

Offline

 

#28  2014-01-30 19:49:27

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Spróbuj po dodaniu nowej  ponowić regułę z atrybutem

Kod:

-j CONNMARK  --save-mark

a przed użyciem na karcie ifb użyć

Kod:

-j  CONNMARK  --restore-mark

Ostatnio edytowany przez Jacekalex (2014-01-30 19:50:01)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#29  2014-01-30 20:22:31

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Po dodaniu czego i gdzie i co gdzie użyć? xD

Kod:

# iptables -t mangle -I PREROUTING 1 -j CONNMARK  --restore-mark
# iptables -t mangle -A POSTROUTING -j CONNMARK  --save-mark

tak?

Kod:

# iptables -t mangle -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -j CONNMARK --restore-mark --nfmask 0xffffffff --ctmask 0xffffffff
-A PREROUTING -i ifb1 -m connmark --mark 0x3 -j ACCEPT
-A PREROUTING -i ifb0 -m connmark --mark 0x3 -j ACCEPT
-A PREROUTING -i eth0 -m connmark --mark 0x3 -j ACCEPT
-A OUTPUT -o ifb0 -m owner --uid-owner 1000 -j CONNMARK --set-xmark 0x3/0xffffffff
-A OUTPUT -o ifb1 -m owner --uid-owner 1000 -j CONNMARK --set-xmark 0x3/0xffffffff
-A OUTPUT -o eth0 -m owner --uid-owner 1000 -j CONNMARK --set-xmark 0x3/0xffffffff
-A POSTROUTING -o ifb0 -m connmark --mark 0x3 -j CLASSIFY --set-class 0001:0003
-A POSTROUTING -o ifb1 -m connmark --mark 0x3 -j CLASSIFY --set-class 0001:0003
-A POSTROUTING -o eth0 -m connmark --mark 0x3 -j CLASSIFY --set-class 0001:0003
-A POSTROUTING -j CONNMARK --save-mark --nfmask 0xffffffff --ctmask 0xffffffff

Kod:

Every 1.0s: iptables -t mangle -nvL                                                                                                                           Thu Jan 30 20:20:01 2014

Chain PREROUTING (policy ACCEPT 1199 packets, 1205K bytes)
 pkts bytes target     prot opt in     out     source               destination
 1199 1205K CONNMARK   all  --  *      *       0.0.0.0/0            0.0.0.0/0            CONNMARK restore
    0     0 ACCEPT     all  --  ifb1   *       0.0.0.0/0            0.0.0.0/0            connmark match  0x3
    0     0 ACCEPT     all  --  ifb0   *       0.0.0.0/0            0.0.0.0/0            connmark match  0x3
    0     0 ACCEPT     all  --  eth0   *       0.0.0.0/0            0.0.0.0/0            connmark match  0x3

Chain INPUT (policy ACCEPT 1199 packets, 1205K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 921 packets, 76659 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 CONNMARK   all  --  *      ifb0    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK set 0x3
    0     0 CONNMARK   all  --  *      ifb1    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK set 0x3
  599 39000 CONNMARK   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK set 0x3

Chain POSTROUTING (policy ACCEPT 921 packets, 76659 bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 CLASSIFY   all  --  *      ifb0    0.0.0.0/0            0.0.0.0/0            connmark match  0x3 CLASSIFY set 1:3
    0     0 CLASSIFY   all  --  *      ifb1    0.0.0.0/0            0.0.0.0/0            connmark match  0x3 CLASSIFY set 1:3
  599 39000 CLASSIFY   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            connmark match  0x3 CLASSIFY set 1:3
  921 76659 CONNMARK   all  --  *      *       0.0.0.0/0            0.0.0.0/0            CONNMARK save

Jeśli tak, to ciągle jest to samo.

Offline

 

#30  2014-01-30 20:42:57

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Kod:

iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner p2p -j CONNMARK --set-mark 2
iptables -t mangle -A OUTPUT -o eth0 -m owner --uid-owner p2p -j CONNMARK --save-mark

Kod:

iptables -t mangle -A POSTROUTING -o eth0 -m connmark --mark 2 -j CONNMARK --resore-mark
iptables -t mangle -A POSTROUTING -o eth0 -m connmark --mark 2 -j CLASSIFY --set-class 1:2

A jak tak zrobisz, to co będzie?


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#31  2014-01-30 20:48:49

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Nie lecą pakiety do POSTROUTING:

Kod:

Every 1.0s: iptables -t mangle -nvL                                                                                                                           Thu Jan 30 20:47:41 2014

Chain PREROUTING (policy ACCEPT 5972 packets, 8763K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain INPUT (policy ACCEPT 5972 packets, 8763K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 3493 packets, 169K bytes)
 pkts bytes target     prot opt in     out     source               destination
 3359  156K CONNMARK   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK set 0x2
 3353  155K CONNMARK   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            owner UID match 1000 CONNMARK save

Chain POSTROUTING (policy ACCEPT 3493 packets, 169K bytes)
 pkts bytes target     prot opt in     out     source               destination
    0     0 CONNMARK   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            connmark match  0x2 CONNMARK restore
    0     0 CLASSIFY   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0            connmark match  0x2 CLASSIFY set 1:2

Offline

 

#32  2014-01-30 21:35:45

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

To może cel

Kod:

-j MARK

w łańcuchu PREROUTING  i dopasowanie fwmark w tc?


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#33  2014-01-30 22:05:35

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Takie coś?

Kod:

# tc filter add dev ifb1 parent 2:0 protocol ip prio 3 handle 3 fw classid 2:3
# iptables -t mangle -A PREROUTING  -j MARK --set-mark 3

Kod:

Every 1.0s: iptables -t mangle -nvL                                                                                                                           Thu Jan 30 21:59:24 2014

Chain PREROUTING (policy ACCEPT 1256 packets, 1236K bytes)
 pkts bytes target     prot opt in     out     source               destination
 1256 1236K MARK       all  --  *      *       0.0.0.0/0            0.0.0.0/0            MARK set 0x3

Chain INPUT (policy ACCEPT 1256 packets, 1236K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 957 packets, 83676 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain POSTROUTING (policy ACCEPT 957 packets, 83676 bytes)
 pkts bytes target     prot opt in     out     source               destination

Próbuje na całym ruchu teraz ale alej to samo:

Kod:

Interfaces                     | RX bps       pps     %| TX bps       pps     %
->lo                           |     82B        0      |     82B        0
  eth0                         |   1.07MiB    745      |  38.68KiB    532
    qdisc 1: (htb)             |      0         0      |  37.15KiB    532
      cls none (u32)           |      0         0      |      0         0
      cls 8000: (u32)          |      0         0      |      0         0
      cls 8000:800 (u32)       |      0         0      |      0         0
    qdisc ffff: (ingress)      |      0         0      |   1.06MiB    745
      cls none (u32)           |      0         0      |      0         0
      cls 8000: (u32)          |      0         0      |      0         0
      cls 8000:800 (u32)       |      0         0      |      0         0
  ifb0                         |  37.20KiB    533      |  37.20KiB    533
    qdisc 1: (htb)             |      0         0      |  37.15KiB    532
      class 1:1 (htb)          |      0         0      |  37.15KiB    532   32%
        class 1:2 (htb)        |      0         0      |      0         0    0%
        class 1:3 (htb)        |      0         0      |      0         0    0%
        class 1:4 (htb)        |      0         0      |  37.15KiB    532   122%
  ifb1                         |   1.06MiB    732      |   1.06MiB    732
    qdisc 2: (htb)             |      0         0      |   1.06MiB    732
      class 2:1 (htb)          |      0         0      |   1.06MiB    732   93%
        class 2:2 (htb)        |      0         0      |      0         0    0%
        class 2:3 (htb)        |      0         0      |      0         0    0%
        class 2:4 (htb)        |      0         0      |   1.06MiB    732   354%
      cls none (fw)            |      0         0      |      0         0
      cls :3 (fw)              |      0         0      |      0         0

Zrobiłem dokładnie to samo dla pakietów wychodzących:

Kod:

# tc filter add dev ifb0 parent 1:0 protocol ip prio 3 handle 3 fw classid 1:3
# iptables -t mangle -A OUTPUT  -j MARK --set-mark 3

I tu działa.  xD

Nie wiem czemu na ingress nie chce wejść. :]

Ostatnio edytowany przez morfik (2014-01-30 22:15:30)

Offline

 

#34  2014-01-30 22:45:22

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

A na interfejsie ifb - np na wyjściu z ifb0 też nie łapie.

Może tam

Kod:

$ipt -t mangle -A OUTPUT -o ifb0 -j MARK ...

i potem tc fwmark - kolejka na ifb0?

Iproute potrafi klasyfikować ruch wyłącznie wychodzący, dlatego wirtualne interfejsy.
Jeśli na nim są kolejki, to może tam też fw? chociaż gdzieś kiedyś czytałem,
że ifb jest przed firewallem, i to też może nic nie dać, ale diabelnie dawno to było.

Jak kompilujesz jajka i iptables, to zobacz, czy dasz radę znaleźć łątki imq
- tam to się dużo łatwiej robiło, bo przekierowanie na interfejs IMQ robiło się firewallem w dowolnym momencie.

Ja ostatnio takie gimnastyki robiłem z IMQ, i chodziło nawet grzecznie.

Ostatnio edytowany przez Jacekalex (2014-01-30 23:02:27)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#35  2014-01-30 23:02:06

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

U mnie iptables w ogóle nie łapie tych interfejsów ifb0, ifb1, nieważne co by była za reguła i gdzie by ona była, to i tak po sprecyzowaniu -i albo -o na któryś z tych interfejsów, od razu pakiety przestają wpadać do tej reguły.

Jak trochę odpocznę to popatrzę na to IMQ, cokolwiek to jest. xD

Offline

 

#36  2014-01-30 23:08:48

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Zobacz jeszcze to:
https://home.regit.org/netfilter-en/netfilter-connmark/

W komentach ktoś dawał przykład z tablicami routingu, może się czegoś dowiesz.

Albo poczekaj trochę, właśnie wychodzi nftables - może tam pójdzie łatwiej.

Bo te cholerne limity zawsze chodzą na OUTPUTach, dlatego nieźle nadają się na router.
Za to w ogóle nie nadają się na desktop przez to.

Wygląda na to,że na ifb musisz filtry robić samym tc.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#37  2014-01-31 11:31:13

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

W komciach pod tym linkiem https://home.regit.org/netfilter-en/netfilter-connmark/ napisali, że:

Is important to note that ingress policy occurs way before mangle PREROUTING so the mark will never be available in the policier to match against it.

i pewnie dlatego się tego nie da zrobić przez iptables i trzeba robić to przez tc filter jak to napisał tutaj facet http://wampir.mroczna-zaloga.org/archives/77-ifb-zamiast-imq.html :

IMQ przemawiało do mnie nieco bardziej z tego powodu, że ruch do "urządzenia" można było kierować przez reguły iptables, w przypadku IFB ruch należy kierować przez filtry tc z pakietu iproute,

No i faktycznie przy pomocy:

Kod:

root:~# tc filter add dev ifb1 parent 2: protocol ip prio 10 u32 match ip sport 80 0xffff classid 2:3

przekierował w końcu ruch przychodzący z  na 2:3

Ale tym to chyba qbittorrenta nie złapie. xD

Offline

 

#38  2014-01-31 23:13:10

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

No to mam nowe jajko z obsługą tych urządzeń imq i iptables z celem -j IMQ

teraz tak, czy do interfejsu eth0 mam jakieś qdisc podpinać, czy obecnie tylko operować na imq0 i imq1? Czyli skrypt od tworzenia kolejek by wyglądał jak poniżej:

Kod:

ip link set imq0 up
ip link set imq1 up

tc qdisc add dev imq0 root handle 1: htb default 4
tc class add dev imq0 parent 1:0 classid 1:1 htb rate 950kbit ceil 950kbit 
tc class add dev imq0 parent 1:1 classid 1:2 htb rate 450kbit ceil 950kbit prio 5
tc class add dev imq0 parent 1:1 classid 1:3 htb rate 250kbit ceil 950kbit prio 0
tc class add dev imq0 parent 1:1 classid 1:4 htb rate 250kbit ceil 950kbit prio 2
tc filter add dev imq0 parent 1:0 protocol ip prio 10 u32 match ip dst 0.0.0.0/0 flowid 1:1

tc qdisc add dev imq1 root handle 2: htb default 4
tc class add dev imq1 parent 2:0 classid 2:1 htb rate 9500kbit ceil 9500kbit
tc class add dev imq1 parent 2:1 classid 2:2 htb rate 4500kbit ceil 9500kbit prio 5
tc class add dev imq1 parent 2:1 classid 2:3 htb rate 2500kbit ceil 9500kbit prio 0
tc class add dev imq1 parent 2:1 classid 2:4 htb rate 2500kbit ceil 9500kbit prio 2
tc filter add dev imq1 parent 2:0 protocol ip prio 10 u32 match ip src 0.0.0.0/0 flowid 2:1

Na imq0 jest ruch wychodzący a na imq1 przychodzący.

Dodałem póki co dwie reguły w mangle:

Kod:

# iptables -t mangle -S
-P PREROUTING ACCEPT
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P OUTPUT ACCEPT
-P POSTROUTING ACCEPT
-A PREROUTING -j IMQ --todev 1
-A POSTROUTING -j IMQ --todev 0

Z tego co widzę, to ruch się rozdzielił:

Kod:

Interfaces                     | RX bps       pps     %| TX bps       pps     %
->lo                           |    267B        1      |    267B        1
  eth0                         |   1.07MiB    832      | 107.13KiB    483
    qdisc none (pfifo_fast)    |      0         0      | 104.93KiB    483
  imq0                         |  96.59KiB    474      |  98.97KiB    487
    qdisc 1: (htb)             |      0         0      |  98.97KiB    487
      cls none (u32)           |      0         0      |      0         0
      cls 8000: (u32)          |      0         0      |      0         0
      cls 8000:800 (u32)       |      0         0      |      0         0
      class 1:1 (htb)          |      0         0      |  98.97KiB    487   85%
        class 1:2 (htb)        |      0         0      |      0         0    0%
        class 1:3 (htb)        |      0         0      |      0         0    0%
        class 1:4 (htb)        |      0         0      |  98.97KiB    487   324%
  imq1                         |   1.06MiB    831      |   1.05MiB    826
    qdisc 2: (htb)             |      0         0      |   1.05MiB    826
      cls none (u32)           |      0         0      |      0         0
      cls 8000: (u32)          |      0         0      |      0         0
      cls 8000:800 (u32)       |      0         0      |      0         0
      class 2:1 (htb)          |      0         0      |   1.05MiB    826   93%
        class 2:2 (htb)        |      0         0      |      0         0    0%
        class 2:3 (htb)        |      0         0      |      0         0    0%
        class 2:4 (htb)        |      0         0      |   1.05MiB    826   353%

Jak i gdzie go teraz klasyfikować?

Offline

 

#39  2014-01-31 23:48:24

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Kod:

cat /home/local/bin/markerimqdebug
#!/bin/bash


/sbin/modprobe imq numdevs=2
/sbin/ip link set imq0 up
/sbin/ip link set imq1 up

# echo "reguła 1" 
iptables -t mangle -F
# echo "reguła 2" 
iptables -t mangle -X

# echo "reguła 3" 
iptables -t mangle -A PREROUTING -m layer7 --l7proto skypetoskype -j MARK --set-mark 10
# echo "reguła 4" 
iptables -t mangle -A PREROUTING -m layer7 --l7proto skypeout -j MARK --set-mark 10
# echo "reguła 5" 
iptables -t mangle -A POSTROUTING -m layer7 --l7proto skypetoskype -j MARK --set-mark 10
# echo "reguła 6" 
iptables -t mangle -A POSTROUTING -m layer7 --l7proto skypeout -j MARK --set-mark 10
# echo "reguła 7" 
iptables -t mangle -A PREROUTING -m layer7 --l7proto sip -j MARK --set-mark 10
# echo "reguła 8" 
iptables -t mangle -A PREROUTING -m layer7 --l7proto h323 -j MARK --set-mark 10
# echo "reguła 9" 
iptables -t mangle -A POSTROUTING -m layer7 --l7proto sip -j MARK --set-mark 10
# echo "reguła 10" 
iptables -t mangle -A POSTROUTING -m layer7 --l7proto h323 -j MARK --set-mark 10
# echo "reguła 11" 
iptables -t mangle -A PREROUTING -m layer7 --l7proto jabber -j MARK --set-mark 20
# echo "reguła 13" 
iptables -t mangle -A POSTROUTING -m layer7 --l7proto jabber -j MARK --set-mark 20
# echo "reguła 14" 
iptables -t mangle -A PREROUTING -m layer7 --l7proto shoutcast -j MARK --set-mark 30
# echo "reguła 15" 
iptables -t mangle -A PREROUTING -m layer7 --l7proto quicktime -j MARK --set-mark 30
# echo "reguła 16" 
iptables -t mangle -A PREROUTING -p tcp --sport http -j MARK --set-mark 30
# echo "reguła 17" 
iptables -t mangle -A PREROUTING -p tcp --sport https -j MARK --set-mark 30
# echo "reguła 18" 
iptables -t mangle -A POSTROUTING -p tcp --sport http -j MARK --set-mark 30
# echo "reguła 19" 
iptables -t mangle -A POSTROUTING -p tcp --sport https -j MARK --set-mark 30
# echo "reguła 20" 
iptables -t mangle -A POSTROUTING -m layer7 --l7proto shoutcast -j MARK --set-mark 30
# echo "reguła 21" 
iptables -t mangle -A POSTROUTING -m layer7 --l7proto quicktime -j MARK --set-mark 30
# echo "reguła 22" 
iptables -t mangle -A PREROUTING -m layer7 --l7proto ftp -j MARK --set-mark 50
# echo "reguła 23" 
iptables -t mangle -A POSTROUTING -m layer7 --l7proto ftp -j MARK --set-mark 50
# echo "reguła 24" 
iptables -t mangle -A PREROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 70
# echo "reguła 25" 
iptables -t mangle -A POSTROUTING -m layer7 --l7proto bittorrent -j MARK --set-mark 70
# echo "reguła 26" 
iptables -t mangle -A POSTROUTING -p tcp --dport pop3s -m iprange --src-range 193.17.41.0-193.17.41.255 -j MARK --set-mark 40
# echo "reguła 27" 
iptables -t mangle -A POSTROUTING -p tcp --dport ssmtp -m iprange --src-range 193.17.41.0-193.17.41.255 -j MARK --set-mark 40
# echo "reguła 28" 
iptables -t mangle -A PREROUTING  -j MARK --set-mark 40
# echo "reguła 29" 
iptables -t mangle -A POSTROUTING  -j MARK --set-mark 40
# echo "reguła 30" 
iptables -t mangle -A PREROUTING  -j IMQ --todev 0
# echo "reguła 31" 
iptables -t mangle -A PREROUTING  -j IMQ --todev 1

W jakiejś tam przeszłości to nawet działało.
Ale mam w zapasie XX wersji tego skrypta, i już nie pamiętam, która była ostateczna :DDD

Więc musisz trochę pokombinować we własnym zakresie. :D
To było, zanim bliżej poznałem moduł CONNMARK.
Reguły  28 i 29 mogą nadpisywać wcześniejsze marki, jeśli się coś takiego zdarzy,
to będzie je trzeba zrobić jakoś inaczej, albo olać, bo i tak ruch niesklasyfikowany trafia do kolejki domyślnej.
I do tego kolejki na imq:

Kod:

#!/bin/bash
#set -x
IN='imq0'
OUT='imq1'
DOWNLOAD='10mbit'
UPLOAD='1mbit'

tc=`which tc`
$tc qdisc del root dev $IN 2> /dev/null
$tc qdisc add dev $IN root handle 1:0 htb default 70 r2q 1 
#kolejki dzielące pasmo (tutaj wyłącznie priorytet kolejek) - priorytety dla poszczególnych protokołów sieciowych (layer7).
$tc class add dev $IN parent 1:0 classid 1:10 htb rate $DOWNLOAD ceil $DOWNLOAD prio 1
$tc class add dev $IN parent 1:0 classid 1:20 htb rate $DOWNLOAD ceil $DOWNLOAD prio 2
$tc class add dev $IN parent 1:0 classid 1:30 htb rate $DOWNLOAD ceil $DOWNLOAD prio 3
$tc class add dev $IN parent 1:0 classid 1:40 htb rate $DOWNLOAD ceil $DOWNLOAD prio 4
$tc class add dev $IN parent 1:0 classid 1:50 htb rate $DOWNLOAD ceil $DOWNLOAD prio 5
$tc class add dev $IN parent 1:0 classid 1:60 htb rate $DOWNLOAD ceil $DOWNLOAD prio 6
$tc class add dev $IN parent 1:0 classid 1:70 htb rate $DOWNLOAD ceil $DOWNLOAD prio 7

echo "# download - filtry.
$tc filter add dev $IN parent 1:0 protocol ip handle 10 fw classid 1:10
$tc filter add dev $IN parent 1:0 protocol ip handle 20 fw classid 1:20
$tc filter add dev $IN parent 1:0 protocol ip handle 30 fw classid 1:30
$tc filter add dev $IN parent 1:0 protocol ip handle 40 fw classid 1:40
$tc filter add dev $IN parent 1:0 protocol ip handle 50 fw classid 1:60
$tc filter add dev $IN parent 1:0 protocol ip handle 60 fw classid 1:60
$tc filter add dev $IN parent 1:0 protocol ip handle 70 fw classid 1:70

echo "# download - SFQ - zasada sprawiedliwego podziału pasma - to powinno załatwić sprawę."
#algorytm mieszający rozdziela pasmo równomiernie na poszczególne aktywne połączenia.
$tc qdisc add dev $IN parent 1:10 handle 10:0 sfq perturb 10
$tc qdisc add dev $IN parent 1:20 handle 20:0 sfq perturb 10
$tc qdisc add dev $IN parent 1:30 handle 30:0 sfq perturb 10
$tc qdisc add dev $IN parent 1:40 handle 40:0 sfq perturb 10
$tc qdisc add dev $IN parent 1:50 handle 50:0 sfq perturb 10
$tc qdisc add dev $IN parent 1:60 handle 60:0 sfq perturb 10
$tc qdisc add dev $IN parent 1:70 handle 70:0 sfq perturb 10



echo "UPLOAD"
$tc qdisc del root dev $OUT 2> /dev/null
$tc qdisc add dev $OUT root handle 1:0 htb default 70 r2q 
#kolejki dzielące pasmo (tutaj wyłącznie priorytet kolejek) - priorytety dla poszczególnych protokołów sieciowych (layer7).
$tc class add dev $OUT parent 1:0 classid 1:10 htb rate $UPLOAD ceil $UPLOAD prio 1
$tc class add dev $OUT parent 1:0 classid 1:20 htb rate $UPLOAD ceil $UPLOAD prio 2
$tc class add dev $OUT parent 1:0 classid 1:30 htb rate $UPLOAD ceil $UPLOAD prio 3
$tc class add dev $OUT parent 1:0 classid 1:40 htb rate $UPLOAD ceil $UPLOAD prio 4
$tc class add dev $OUT parent 1:0 classid 1:50 htb rate $UPLOAD ceil $UPLOAD prio 5
$tc class add dev $OUT parent 1:0 classid 1:60 htb rate $UPLOAD ceil $UPLOAD prio 6
$tc class add dev $OUT parent 1:0 classid 1:70 htb rate $UPLOAD ceil $UPLOAD prio 7

echo "# upload - filtry  FIltry raczej nie będa Ci potrzebne (chyba, że do oznaczenia pakietów z serwera www) - oznaczysz łatwo, używając modułu owner do iptables."
$tc filter add dev $OUT parent 1:0 protocol ip handle 10 fw classid 1:10
$tc filter add dev $OUT parent 1:0 protocol ip handle 20 fw classid 1:20
$tc filter add dev $OUT parent 1:0 protocol ip handle 30 fw classid 1:30
$tc filter add dev $OUT parent 1:0 protocol ip handle 40 fw classid 1:40
$tc filter add dev $OUT parent 1:0 protocol ip handle 50 fw classid 1:60
$tc filter add dev $OUT parent 1:0 protocol ip handle 60 fw classid 1:60
$tc filter add dev $OUT parent 1:0 protocol ip handle 70 fw classid 1:70

echo "# upload - SFQ  - zasada sprawiedliwego podziału pasma - to powinno załatwić sprawę."
#algorytm mieszający rozdziela pasmo równomiernie na poszczególne aktywne połączenia.
$tc qdisc add dev $OUT parent 1:10 handle 10:0 sfq perturb 10
$tc qdisc add dev $OUT parent 1:20 handle 20:0 sfq perturb 10
$tc qdisc add dev $OUT parent 1:30 handle 30:0 sfq perturb 10
$tc qdisc add dev $OUT parent 1:40 handle 40:0 sfq perturb 10
$tc qdisc add dev $OUT parent 1:50 handle 50:0 sfq perturb 10
$tc qdisc add dev $OUT parent 1:60 handle 60:0 sfq perturb 10
$tc qdisc add dev $OUT parent 1:70 handle 70:0 sfq perturb 10

Może coś się z tego uda urodzić ;)

Ostatnio edytowany przez Jacekalex (2014-02-01 00:06:31)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#40  2014-02-01 00:49:23

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Ha, udało się, w końcu jakiś sukces. xD Poniżej dowód:

Kod:

Interfaces                     | RX bps       pps     %| TX bps       pps     %
->lo                           |    834B        9      |    834B        9
  eth0                         |   1.15MiB    886      |  90.75KiB    709
    qdisc none (pfifo_fast)    |      0         0      |  89.46KiB    709
  imq0                         |  72.35KiB    690      |  80.57KiB    718
    qdisc 1: (htb)             |      0         0      |  80.57KiB    718
      cls :2 (fw)              |      0         0      |      0         0
      cls :3 (fw)              |      0         0      |      0         0
      cls none (u32)           |      0         0      |      0         0
      cls 8000: (u32)          |      0         0      |      0         0
      cls 8000:800 (u32)       |      0         0      |      0         0
      class 1:1 (htb)          |      0         0      |  80.57KiB    718   69%
        class 1:2 (htb)        |      0         0      |  69.21KiB    487   126%
        class 1:3 (htb)        |      0         0      |  11.34KiB    230   37%
        class 1:4 (htb)        |      0         0      |     17B        0    0%
  imq1                         |   1.14MiB    892      |   1.13MiB    881
    qdisc 2: (htb)             |      0         0      |   1.13MiB    881
      cls :2 (fw)              |      0         0      |      0         0
      cls :3 (fw)              |      0         0      |      0         0
      cls none (u32)           |      0         0      |      0         0
      cls 8000: (u32)          |      0         0      |      0         0
      cls 8000:800 (u32)       |      0         0      |      0         0
      class 2:1 (htb)          |      0         0      |   1.13MiB    881   100%
        class 2:2 (htb)        |      0         0      | 513.41KiB    430   93%
        class 2:3 (htb)        |      0         0      | 644.88KiB    449   211%
        class 2:4 (htb)        |      0         0      |    256B        0    0%

Poniżej setup:

W skrócie to 1:2 i 2:2 to qbittorrent, 1:3 i 2:3 to morfik, a 1:4 i 2:4 to domyślne. Ruch wyłapany po userach/grupach przez reguły w iptables.

Tak wygląda tc:

Kod:

ip link set imq0 up
ip link set imq1 up

tc qdisc add dev imq0 root handle 1: htb default 4
tc class add dev imq0 parent 1:0 classid 1:1 htb rate 950kbit ceil 950kbit 
tc class add dev imq0 parent 1:1 classid 1:2 htb rate 450kbit ceil 950kbit prio 5
tc class add dev imq0 parent 1:1 classid 1:3 htb rate 250kbit ceil 950kbit prio 0
tc class add dev imq0 parent 1:1 classid 1:4 htb rate 250kbit ceil 950kbit prio 2
tc filter add dev imq0 parent 1:0 protocol ip prio 10 u32 match ip dst 0.0.0.0/0 flowid 1:1

tc qdisc add dev imq1 root handle 2: htb default 4
tc class add dev imq1 parent 2:0 classid 2:1 htb rate 9500kbit ceil 9500kbit
tc class add dev imq1 parent 2:1 classid 2:2 htb rate 4500kbit ceil 9500kbit prio 5
tc class add dev imq1 parent 2:1 classid 2:3 htb rate 2500kbit ceil 9500kbit prio 0
tc class add dev imq1 parent 2:1 classid 2:4 htb rate 2500kbit ceil 9500kbit prio 2
tc filter add dev imq1 parent 2:0 protocol ip prio 10 u32 match ip src 0.0.0.0/0 flowid 2:1

Oraz filtry od markowania - łapią znaczki 2 i 3 i wrzucają do odpowiednich kolejek wychodzących i wchodzących:

Kod:

tc filter add dev imq0 protocol ip parent 1:0 prio 1 handle 2 fw classid 1:2
tc filter add dev imq0 protocol ip parent 1:0 prio 1 handle 3 fw classid 1:3
tc filter add dev imq1 protocol ip parent 2:0 prio 1 handle 2 fw classid 2:2
tc filter add dev imq1 protocol ip parent 2:0 prio 1 handle 3 fw classid 2:3

Iptables:

Kod:

# iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 1
# iptables -t mangle -A PREROUTING -j CONNMARK  --restore-mark
# iptables -t mangle -A POSTROUTING -m owner --gid-owner p2p -j MARK --set-mark 2
# iptables -t mangle -A POSTROUTING -m owner --uid-owner morfik -j MARK --set-mark 3
# iptables -t mangle -A POSTROUTING -m owner --uid-owner root -j MARK --set-mark 3
# iptables -t mangle -A POSTROUTING -j CONNMARK  --save-mark
# iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 0

Konieczne są te --save-mark i --restore-mark. Po usunięciu tych wpisów pakiety nie lądują we właściwych kolejkach przychodzących.

Idę się upić. xD Jutro jeszcze testy i może jakiś artykuł się z tego zrobi.

Offline

 

#41  2014-02-01 01:01:07

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Art o imq?
Strata czasu, do >3.13 już raczej nie będzie pasować.

Raczej popisz trochę do dewów netfiltera, żeby w nftables dało się oznaczać connmarkiem output, żeby mark był widoczny w obu kierunkach, i całe tc łatwo przytulić do tych marków w obu kierunkach.
A najlepiej, gdyby connmark dało się ustawić w mechanizmie cgroup, wtedy prio i traffic osobno dla każdego programu, to będzie banalna sprawa.

Bo na razie to jest trochę dłubanie paluchem prawej nogi w lewym uchu. ;P

Nftables ma być solidną konkurencją dla PFa z OpenBSD, a PF ma moduły do zarządzania pasmem, i działa to w nim bardzo sympatycznie.

I nie czaję, dlaczego wszędzie masz PRIO 1,jeśli masz gotowy mechanizm,
żeby torrenta i p2p puścić na niższym priorytecie, voipy i komunikatory na najwyższym, a resztę na średnim -domyślnym.

To akurat jest  optymalne rozwiązanie o tyle, że priorytety są kluczowe w dzialaniu sieci.

Ostatnio edytowany przez Jacekalex (2014-02-01 01:04:48)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#42  2014-02-01 01:27:56

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

O wszystkim raczej, o imq, ifb, o ruchu wychodzącym i wchodzącym, o klasyfikowaniu via cgroup, iptables i tc, o znakowaniu i takie bajery, żeby było pod ręką jakbym tak kiedyś potrzebował. xD A jak wyjdzie nowy kernel to dorobię inny text.

A co do priorytetów, to są przecie ustawione tam przy kolejkach. To nie wystarczy? W tych filtrach też musi być?

Offline

 

#43  2014-02-01 01:34:11

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Priorytety? niby są, jeśli  działa, to ok.

Piszesz howto?
Faktycznie, tylko piszesz je zazwyczaj na kilka tematów na raz, przez co ich przydatność jest znacznie skromniejsza, niż gdybyś wyczerpał jeden pojedynczy temat w jednym arcie.
To taka moja skromna opinia....


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#44  2014-02-01 01:55:17

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Jak ktoś chce jeden temat to ma od tego man. xD Ja raczej chcę to sobie poskładać by mi to nigdzie nie uciekło, bo później zapomnę jak to zrobiłem i znów będę siedział godzinami. xD

Offline

 

#45  2014-02-01 04:22:05

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Man to trochę mało.
Próbuj pisać howto tak, żeby wyczerpywało dane zagadnienie, nie próbuj z jednego arta robić wiki dla całego systemu.

Umiar jest moim zdaniem potrzebny dlatego, że człowiek konfiguruje zazwyczaj jedną lub dwie usługi, anie cały system równocześnie.

Np napisałeś tutek o instalacji na szyfrowanym LVM.
Ja kiedyś stawiałem coś podobnego, i takich tutków, jak twój przerobiłem chyba z trzydzieści, i instalacja trwała tydzień.

Ale jak poszukałem inaczej, tzn wg jednego tutka szyfrowana partycja, wg drugiego lvm, potem debootstrap, i na koniec boot i initramfs, to w trzy godziny wszystko działało.

Dlatego takie tutki jak Twoje i użytkownikabuntu omijam na kilometr. ;)

Pozdro
;-)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#46  2014-02-01 16:06:54

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Tzn wiesz, jak ja sobie stawiałem nowy system z okazji zmiany architektury na amd64, to jechałem według tego swojego poradnika, nic tylko kopiując kolejne linijki, czasem tylko patrząc na opis czy aby jestem w dobrym miejscu, no bo ja to napisałem to mniej wiecej wiem co artykuł zawiera tylko przez patrzenie po akapitach, czy poleceniach. Ale generalnie to 10min i udało mi się odtworzyć system według tego textu, także nie wiem z czym miałeś problem. Nie było feedbacka to się proszę nie czepiać. SOA#1 xD

Co do samego wątku to jest mały bug i pewnie by to się nie wydało gdyby nie fakt, że qbittorrenta odpalam póki co przez user:group morfik:p2p, i te marki się nakładają, bo pierw nakłada mark 2 na grupę p2p a potem mark 3 na usera morfik. W efekcie wszystko leci do grup 1:3 i 2:3. Ja się zastanawiam jak mi to wczoraj działało. xD

W każdym razie trzeba nieco regułki w iptables pozmieniać:

Kod:

iptables -t mangle -A PREROUTING -i eth0 -j IMQ --todev 1
iptables -t mangle -A PREROUTING -j CONNMARK  --restore-mark

iptables -t mangle -N IMQ-OUT
iptables -t mangle -A POSTROUTING -o eth0 -j IMQ-OUT
iptables -t mangle -A IMQ-OUT -m owner --gid-owner p2p -j MARK --set-mark 2
iptables -t mangle -A IMQ-OUT -m owner --gid-owner p2p -j RETURN
iptables -t mangle -A IMQ-OUT -m owner --uid-owner morfik -j MARK --set-mark 3
iptables -t mangle -A IMQ-OUT -m owner --uid-owner morfik -j RETURN
iptables -t mangle -A IMQ-OUT -m owner --uid-owner root -j MARK --set-mark 3
iptables -t mangle -A IMQ-OUT -m owner --uid-owner root -j RETURN
iptables -t mangle -A POSTROUTING -j CONNMARK  --save-mark
iptables -t mangle -A POSTROUTING -o eth0 -j IMQ --todev 0

Czyli w nowym łańcuchu są znakowane pakiety i zaraz po oznakowaniu zwracane do POSTROUTING i tam już marki zapisywane i wysyłane dalej. Bez tego -j RETURN to pakiety sobie przemierzają wszystkie reguły w tabeli i temu taki problem powstał. W sumie gdybym miał usera p2p zamiast morfik, to pewnie nawet bym o tym nie wiedział, a tak to nawet lekko się zoptymalizowało to przechodzenie reguł.

Zbędne są również te dwa filtry:

Kod:

# tc filter add dev imq0 parent 1:0 protocol ip prio 10 u32 match ip dst 0.0.0.0/0 flowid 1:1
# tc filter add dev imq1 parent 2:0 protocol ip prio 10 u32 match ip src 0.0.0.0/0 flowid 2:1

Wystarcza same:

Kod:

tc filter add dev imq0 protocol ip parent 1:0 prio 1 handle 2 fw classid 1:2
tc filter add dev imq0 protocol ip parent 1:0 prio 5 handle 3 fw classid 1:3
tc filter add dev imq1 protocol ip parent 2:0 prio 3 handle 2 fw classid 2:2
tc filter add dev imq1 protocol ip parent 2:0 prio 7 handle 3 fw classid 2:3

Ostatnio edytowany przez morfik (2014-02-01 20:56:10)

Offline

 

#47  2014-02-01 21:26:29

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

Tak sobie patrze na ten ruch i mnie zastanawia jedna rzecz. Jeśli mam 2 kolejki i obie wysyłają i pobierają coś, to wszystko jest ok ale jeśli bym dał na full upload w qbittorrencie i próbował coś pobrać przez qbittorrenta, to nie bardzo chce pobierać. Dopiero jak mu przykręcę upload w kliencie to zaczyna pobierać dane. Ja wiem, że jeśli się pobiera dane to i pakiety są również wysyłane ale jak odróżnić te pakiety wysyłane przy pobieraniu od tych wysyłanych przy wysyłaniu? xD  I jak nadać im priorytety?

Próbowałem przez te priorytety na tc filter:

Kod:

tc filter add dev imq0 protocol ip parent 1:0 prio 1 handle 2 fw classid 1:2
tc filter add dev imq0 protocol ip parent 1:0 prio 5 handle 3 fw classid 1:3
tc filter add dev imq1 protocol ip parent 2:0 prio 3 handle 2 fw classid 2:2
tc filter add dev imq1 protocol ip parent 2:0 prio 7 handle 3 fw classid 2:3

że niby to miałoby ustawić priorytet na wyjście qbittorrenta na 1, wejście na 3, czyli wyższe niż na wyjściu ale to nie działa. Da radę to w jakiś sposób ogarnąć?

Offline

 

#48  2014-02-02 05:35:04

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Może Qbittorent  ma jakieś zwyczaje, że równocześnie nie odpala maksimum dla downloadu i uploadu?

Generalnie klienty torrenta pobierają i wysyłają małe porcje danych, które sklejają na miejscu, więc to formalnie jest możliwe.
Sprawdź na Deluge lub Transmission, czy są takie same objawy, zanim
zaczniesz kopać w ustawieniach sieciowych.

A poza tym, jeśli markujesz w conntrack na podstawie GID, to po prostu na imq0 i imq1 robisz inne kolejki lub priorytety dla tego marka p2p, powinno działać.

IMQ  idealne nie jest, tu też mogą być jakieś jaja, choć w przypadku Qbittorenta wygląda, jakby program się nie wyrabiał z albo z szyfrowaniem, albo z liczeniem pakietów, czy czymś innym.

Pryz okazji, jak w w jaju ustawiłeś IMQ (after-nat,before-nat)?
tam masz 4 opcje.

Ostatnio edytowany przez Jacekalex (2014-07-10 09:02:58)


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

#49  2014-02-02 05:54:01

  morfik - Cenzor wirtualnego świata

morfik
Cenzor wirtualnego świata
Skąd: ze WSI
Zarejestrowany: 2011-09-15
Serwis

Re: [SOLVED] Priorytet pakietów sieciowych

W qbittorrencie można sobie sprecyzować ile ma pobierać i wysyłać max, ja mam brak limitów na jednym i drugim.

Co do imq, to nie ruszałem domyślnych ustawień, czyli AB

  | Choosing this option will make IMQ hook like this:
  | PREROUTING:   After NAT                                   
  | POSTROUTING:  Before NAT

Offline

 

#50  2014-02-02 06:06:10

  Jacekalex - Podobno człowiek...;)

Jacekalex
Podobno człowiek...;)
Skąd: /dev/random
Zarejestrowany: 2008-01-07

Re: [SOLVED] Priorytet pakietów sieciowych

Ja wiem, że można precyzyjnie ustawić, ale nie debugowałem qbittorenta, żeby sprawdzić, czy on się wyrabia jak należy z takimi czy innymi ustawieniami.
Dlatego poradziłem sprawdzić na innym kliencie, czy jest to samo,
bo teraz nawet nie wiadomo, czy coś w podsystemie sieciowym, czy humory qbittorenta.

Bo to, że programy miewają czasem różne humory, to u mnie nie podlega dyskusji. :D

Sieć, to też nie tylko twój komp, ale także ustawienia i kolejki u ISP,
i tam na 100% są obcięte tak czy inaczej torrenty, bo w przeciwnym wypadku ta sieć by czasami w ogóle nie działała.

A jak masz interakcje zachowania samego programu, kolejek w kompie i kolejek u ISP, to jest po prostu szukanie igły w stogu siana.
Ja podejrzewam, że na portach torrenta albo na łączach per/pacjent masz limit ilości równoczesnych połączeń (u ISP), i tu może być też powód, że maks wysyłania ogranicza liczbę dostępnych połączeń dla pobierania.


W demokracji każdy naród ma taką władzę, na jaką zasługuje ;)
Si vis pacem  para bellum  ;)       |       Pozdrawiam :)

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
Nas ludzie lubią po prostu, a nie klikając w przyciski ;-)