Sziasztok!
Eth0.101 interface-en szeretnenk limitalni a le es felmeno forgalmat.
Azt olvastam, hogy TC-vel lehet ilyesmit csinalni, de csak a lefele forgalmat szabalyoza es a felfele menetet nem.
Van valakinek javaslata, hogy hogyan lehetne korlatozni a le es fel forgalmat?
Es IP cimtol fuggetlenul szeretnenk, csak az adot VLAN-t. ingress es egress-t.
Koszi!
- 701 megtekintés
Hozzászólások
korlátozni (pontosabb queue-t ill. scheduler-t) csak egress tudsz.
Miután a megfelelő class-okat és qdisc-eket elkészítetted, már csak match-elni kell:
/sbin/tc filter add dev eth0 protocol ip parent 2:0 prio 1 u32 match ip dst a.b.c.d flowid 2:0c0d
Uezt az out interface-re is.
Ha pisztolyt fognak a fejemhez, akkor sem tudom megmondani, hogy a TC esetén a root device az eth0 vagy külön tree-ket tudsz-e felhúzni a külön VLAN-okra.
Nyilván utóbbi lenne a logikus, de pár perc alatt Te is ki tudod próbálni...
- A hozzászóláshoz be kell jelentkezni
eth0 a root, a vlan interfeszeknek nincs queue-juk
- A hozzászóláshoz be kell jelentkezni
Ha most konkretan ezt probaljuk:
tc qdisc add dev eth3.101 root handle 1: htb default 30
tc class add dev eth3.101 parent 1: classid 1:1 htb rate 10mbit
tc class add dev eth3.101 parent 1: classid 1:2 htb rate 10mbit
tc filter add dev eth3.101 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.101/32 flowid 1:1
tc filter add dev eth3.101 protocol ip parent 1:0 prio 1 u32 match ip src 192.168.0.101/32 flowid 1:2
eth3.101 en siman megy a korlatozas lefele, de csak a forras IP fele. Meg nem ertjuk, hogy mit csinaljunk hogy a teljes interface-re legyen a szabaly es ne csak adott IP-re. gondolom match IP src es dst-t kene modositani valamire...
Felfele nem mukodik a dolog, nyilvan mert ingress-re nem lehet ugyan ezen az interface-en. Valaki azt javasolta, hogy csinaljunk egy bridge interface-t eth3.101 re es azon szurjuk a felfele meno forgalmat.
WAN interface van, de ott VLAN nincs felhuzva es anelkul nem hiszem, hogy tudnank szurni.
- A hozzászóláshoz be kell jelentkezni
WAN interface van, de ott VLAN nincs felhuzva es anelkul nem hiszem, hogy tudnank szurni.
A VLAN interfészen bejövő csomagra ráteszel egy markert és amikor a WAN interfészen kimegy, akkor a markerra matchelsz.
- A hozzászóláshoz be kell jelentkezni
Ezt ezt hogy? :)
- A hozzászóláshoz be kell jelentkezni
iptables -A PREROUTING -t mangle -i eth0.240 -j MARK --set-mark 240
...
tc filter add dev eth1 parent 1:0 protocol ip handle 240 fw flowid 1:240
Innentől a dolog teljesen IP cím-független.
- A hozzászóláshoz be kell jelentkezni
Hat benazunk nagyon :) de elvileg ez igy mukodik ingress
iptables -A PREROUTING -t mangle -i eth3.101 -j MARK --set-mark 101
tc qdisc add dev eth2 root handle 1:0 htb default 10
tc class add dev eth2 parent 1:0 classid 1:1 htb rate 10mbit
tc filter add dev eth2 protocol ip parent 1:0 handle 101 fw flowid 1:1
mostmar csak egress-re kell megcsinalni.
- A hozzászóláshoz be kell jelentkezni
ha javasolhatom, próbáld meg NE keverni a tree-ket.
azaz legyen egy tree az egyik interface-hez ÉS EGY MÁSIK a másik interface-hez.
- A hozzászóláshoz be kell jelentkezni
Hat igen, csak meg az egress en gondolkodunk hogy hogy is nezne ki a szabaly, ha nem ip re hanem interface re szeretnenk korlatozni eth3.101 en.
esetleg van otlete valakinek hogy hogyan kene? Azt is mark al iptables-en?
- A hozzászóláshoz be kell jelentkezni
pl minden kimenő (forward, nem output) csomagot mark-olsz? :-)
- A hozzászóláshoz be kell jelentkezni
Ez igy nem mukodik:
iptables -A FORWARD -i eth3.101 -j MARK --set-mark 101
tc qdisc add dev eth3.101 root handle 1:0 htb default 10
tc class add dev eth3.101 parent 1:0 classid 1:1 htb rate 10mbit
tc filter add dev eth3.101 protocol ip parent 1:0 handle 101 fw flowid 1:1
Ez igen, de nem MARK-al van, es valahogy azzal szeretnenk iptables-bol, FORWARD rol, de nem sikerul
tc qdisc add dev eth3.101 root handle 1:0 htb default 10
tc class add dev eth3.101 parent 1:0 classid 1:10 htb rate 10mbit prio 0
- A hozzászóláshoz be kell jelentkezni
mangle táblában próbáld PREROUTING és POSTROUTING chain-ekben
- A hozzászóláshoz be kell jelentkezni
Megvan!
ingress (Letoltes / Inbound)
iptables -A PREROUTING -t mangle -i eth3.101 -j MARK --set-mark 101
tc qdisc add dev eth2 root handle 1:0 htb default 10
tc class add dev eth2 parent 1:0 classid 1:1 htb rate 10mbit
tc filter add dev eth2 protocol ip parent 1:0 handle 101 fw flowid 1:1
egress (Feltoltes / Outbound)
iptables -A POSTROUTING -t mangle -o eth3.101 -j MARK --set-mark 101
tc qdisc add dev eth3.101 root handle 1:0 htb default 10
tc class add dev eth3.101 parent 1:0 classid 1:1 htb rate 10mbit
tc filter add dev eth3.101 protocol ip parent 1:0 handle 101 fw flowid 1:1
- A hozzászóláshoz be kell jelentkezni
na várj, korlatozas lefele, de csak a forras IP fele - itt valami árulás van.
forrás helyett cél IP-t akartál írni, ugye?
többször mondták, hogy csak egress interface-n tudsz korlátozni.
jelen esetben neked az úgy működne, hogy az egress interface az eth1 (mondjuk)
arra ugyanígy megcsinálod a szabályokat (1: helyett 2: lesz)
és IDE teszed az src match -t, valamint a parent 2:0 lesz, a flowid pedig 2:1
a lartc.org-on frankón el tudod olvasni az egésznek a miértjét.
az utolsó sor jelen esetben úgy lenne helyes, hogy:
tc filter add dev eth3.101 protocol ip parent 1:0 prio 1 u32 match ip dst 192.168.0.102/32 flowid 1:2
ebben az esetben a két egymás mellett lévő "leaf" azonos prioritással bír, és egyenlő arányban lesz megosztva köztük a sávszélesség.
"WAN interface van, de ott VLAN nincs felhuzva es anelkul nem hiszem, hogy tudnank szurni."
nem kell VLAN a szűréshez. a VLAN egy "virtuális" interface. azért is volt (számomra) kétséges, hogy a tree root az a fizikai interface-hez kapcsolódik-e, vagy nem. Én azt tartanám logikusnak, hiszen két VLAN interface között is simán lehet "versenyhelyzet".
- A hozzászóláshoz be kell jelentkezni
Pontosabban a vanilla linux kernelben nem lehet csak egress-t álltítani.
Ahhoz hogy egress és igress irányt tudj korlátozni ahhoz imq kell
https://github.com/imq/linuximq
De ehhez kernelt kell fordítani és elég sok munkát számolj hozzá.
- A hozzászóláshoz be kell jelentkezni
Pontosabban meglévő kernelhez elég a modult hozzáfordítani.
Fedora 42, Thinkpad x280
- A hozzászóláshoz be kell jelentkezni
Egy interfészen csak az egress forgalmat tudod szabályozni, de ha a szabályzás egy gatewayen történik, ott jellemzően van (legalább) két interfészed, pl. egy WAN és egy LAN. A felhasználó szemszögéből letöltés irány a LAN interfészen lesz egress, a feltöltés irány pedig a WAN interfészen lesz egress, tehát, tudod szabályozni mindkét irányt, csak nem ugyanazon az interfészen.
- A hozzászóláshoz be kell jelentkezni
sub
- A hozzászóláshoz be kell jelentkezni
Szia!
Nem tudom működik-e a következő, próbáld ki
# bridge létrehozása #
ovs-vsctl addbr br0
ovs-vsctl addbr brvlan100
ovs-vsctl addbr brvlan101
...
# bridge -be interfészek hozzáadása #
ovs-vsctl add-port br0 eth0
ovs-vsctl add-port brvlan100 eth0.100
ovs-vsctl add-port brvlan101 eth0.101
...
# bridge ip-je, L3 #
ifconfig brvlan100 $ip
ifconfig brvlan101 $ip
...
# QOS hozzáadása portra #
ovs-vsctl -- set Port eth0.101 qos=@newqos -- \
--id=@newqos create QoS type=linux-htb other-config:max-rate=10000000 queues=0=@q0 -- \
--id=@q0 create Queue other-config:min-rate=10000000 other-config:max-rate=10000000
# QOS törlése a portról #
ovs-vsctl clear Port eth0.101 qos
- A hozzászóláshoz be kell jelentkezni