Soort Bridge maken onder Linux

Pagina: 1
Acties:

  • titan_pi8
  • Registratie: Januari 2004
  • Laatst online: 07-02 20:14
Hallow,

Ik wil het volgende maken:
Een pc met 2 NIC die alle pakketjes van de ene NIC naar de andere doorstuurt en andersom, maar die sommige packetjes voorang geeft. Dit zou normaal te doen moeten zijn met Iptables, nietwaar?
Ik heb Iptables geinstalleerd met alle opties (in de kernel) die ik nodig heb voor traffic shaping (QoS). Maar hoe stel ik Iptables, d.m.v. Shorewall, nu in zodat ie alle packetjes van eth0 naar eth1 stuurt en andersom?

Dat is dus het eerste punt, als dat lukt, dan wil ik dat hij bepaalde packetjes (afhankelijk van de inkomende/uitgaande interface en de poorten) voorrang geeft.

Ik gebruik Debian en heb redelijk wat ervaring met Shorewall...

Thx!

Verwijderd

Kijk eens naar bridge, dat is hier speciaal voor gemaakt.
http://bridge.sourceforge.net/
apt-get install bridge.

  • titan_pi8
  • Registratie: Januari 2004
  • Laatst online: 07-02 20:14
Thx, dat ziet er inderdaad precies uit wat ik moet hebben.

Ken je toevallig een soort front-end hiervoor zoals shorewall voor iptables?

  • elTigro
  • Registratie: November 2000
  • Laatst online: 10:42

elTigro

Es un Gringo!

Denk je trouwens dat dat echt nodig gaat zijn?
Wil je echt QOS of wil je gwoon dat sommige pakketjes van een bepaalde pc sneller zijn dan een andere? (omdat jij toch meer van internet snapt dan je zusje/vriendin/moeder/opvoeder/poes)
Want volgens mij kost het niet zo veel (cpu-tijd) om te bridgen hoor. onze bridge staat geloof ik voor zo'n 80-90 % idle te wezen zelfs met firewalling aan. om dan de ene voorrrang te geven op de ander lijkt mij (in mijn oneindig eindige wijsheid) nou niet echt nuttig...

[ Voor 14% gewijzigd door elTigro op 08-06-2005 17:39 . Reden: was wel erg onduidelijk... ]

Lazlo's Chinese Relativity Axiom:No matter how great your triumphs or how tragic your defeats --approximately one billion Chinese couldn't care less.


  • titan_pi8
  • Registratie: Januari 2004
  • Laatst online: 07-02 20:14
De reden voor QoS is:

Ik wil deze pc onder andere gebruiken voor op LANs. Deze pc zal dan 'leechen' en dus vaak de volledige beschikbare netwerkbandbreedte gebruiken.
Een ander PC om te gamen wordt op de andere NIC gehangen, deze pc moet altijd voorrang krijgen zodat er zo weinig mogelijk lag optreedt.

Mmh ik vind niet direct en front-end, en die ebtables vind ik nogal ingewikkeld :p...

  • elTigro
  • Registratie: November 2000
  • Laatst online: 10:42

elTigro

Es un Gringo!

okay, maar dat kun je ook wel voor het grootste deel met iptables oplossen toch?
je hebt dan twee vershillende "chains" die je moet editen. zorg datje FORWARD chain de hoogste prioriteit krijgt en je bent in princiepe klaar
(ik zal is kijkenof ik onze rules makkelijk kan te pakken krijgen.)

/edit:
okay, gevonden.
Wij hebben gewoon een bridge met de iptables patch erin (kernel 2.4), geconfigureerd via brctl.
code:
1
2
3
4
[root@fw]# brctl  show
bridge name bridge id       STP enabled interfaces
br0     8000.0030482746ea   no      eth0
                                                            eth1


Verder: $EBT is natuurlijk de ebtables binary

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if [ "$BLOCK_NON_IPV4" = "1" ]; then
ec 3 BLOCKING NON-IPV4
$EBT -F
$EBT -P FORWARD DROP
$EBT -A FORWARD -p IPv4 -j ACCEPT
$EBT -A FORWARD -p ARP -j ACCEPT
$EBT -A FORWARD --log-level info --log-ip --log-prefix "FIREWALL NONIP: "
$EBT -P INPUT DROP
$EBT -A INPUT -p IPv4 -j ACCEPT
$EBT -A INPUT -p ARP -j ACCEPT
$EBT -A INPUT --log-level info --log-ip --log-prefix "FIREWALL NONIP: "
$EBT -P OUTPUT DROP
$EBT -A OUTPUT -p IPv4 -j ACCEPT
$EBT -A OUTPUT -p ARP -j ACCEPT
$EBT -A OUTPUT --log-level info --log-ip --log-prefix "FIREWALL NONIP: "
else
ec 3 NOT BLOCKING NON-IPV4
fi


/edit2: oeps.. nog even.. het bovenstaande is omdat wij alleen maar ipv4 verkeer nog gebruiken. de rest mag dus weg. zonder deze info komt het nogal vaag over natuurlijk.

Na dit mooie stukje werk 8) gaan we verder met het definieren van de rules voor iptables.

iptables -A FORWARD -p tcp -j DROP ofzo :P
hoop dat je er iets aan hebt.

[ Voor 85% gewijzigd door elTigro op 08-06-2005 18:44 ]

Lazlo's Chinese Relativity Axiom:No matter how great your triumphs or how tragic your defeats --approximately one billion Chinese couldn't care less.


  • titan_pi8
  • Registratie: Januari 2004
  • Laatst online: 07-02 20:14
Voorlopig heb ik dit in /etc/network/interfaces:

(maakt volgens mij nog geen gebruik van ebtables):

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
auto br0
iface br0 inet dhcp
        pre-up ifconfig eth0 0.0.0.0 up
        pre-up ifconfig eth1 0.0.0.0 up
        pre-up brctl addbr br0
        pre-up brctl stp br0 off
        pre-up brctl addif br0 eth0
        pre-up brctl addif br0 eth1
        post-down ifconfig eth0  down
        post-down ifconfig eth1  down
        post-down brctl delif br0 eth0
        post-down brctl delif br0 eth1
        post-down brctl delbr br0


nu nog ebtables configureren om de ene pc voorrang te geven.


Hiermee wordt dus automatisch de bridge geset bij het booten.

[ Voor 8% gewijzigd door titan_pi8 op 08-06-2005 19:27 ]


  • elTigro
  • Registratie: November 2000
  • Laatst online: 10:42

elTigro

Es un Gringo!

nee klopt. dit is alleen brctl aanroepen. Dus hier wordt alleen de bridge gemaakt.

Lazlo's Chinese Relativity Axiom:No matter how great your triumphs or how tragic your defeats --approximately one billion Chinese couldn't care less.


  • titan_pi8
  • Registratie: Januari 2004
  • Laatst online: 07-02 20:14
Dit heeft wel als nadeel dat het even duurt voordat br0 zijn ip-address krijgt via DHCP want voor enkele packets/seconden staan eth0 eth1 in 'learning mode' en kunnen ze niets verzenden/ontvangen. Pas na enkele seconden krijgt de pc zijn DHCPOffer.
Is er een manier om dit te veranderen zodat eth0 en eth1 direct geïnitialiseerd zijn ofzo? Of is dat niet mogelijk en moet ik gewoon aanvaarden dat dit enkele seconden duurt?

Ik ga vandaag de traffic shaping proberen te laten werken.

  • titan_pi8
  • Registratie: Januari 2004
  • Laatst online: 07-02 20:14
Die traffic shaping lukt mij toch niet zo goed. Weet er iemand hoe ik dit het beste kan doen? Met ebtables of via brctl de priority voor een interface hoger zettten of voor beide interfaces?

Hoe werkt die 'tc' eigenlijk?

[ Voor 4% gewijzigd door titan_pi8 op 11-06-2005 12:25 ]


  • titan_pi8
  • Registratie: Januari 2004
  • Laatst online: 07-02 20:14
Nu heb ik de volgende regels gemaakt:

code:
1
2
3
4
5
ebtables -A FORWARD -j mark --set-mark 1
tc qdisc add dev eth0 root handle 1: prio
tc qdisc add dev eth1 root handle 2: prio
tc filter add dev eth0 parent 1: protocol ip handle 1 fw flowid 1:1
tc filter add dev eth1 parent 2: protocol ip handle 1 fw flowid 2:1


Maar het werkt niet, de regels hebben totaal geen invloed.

Testmethode:

Notebook ----- LinuxBridge ----Switch --- Switch ---- FTP SERVER


De notebook hangt dus aan de bridge waar ik bovenstaande commando's op heb ingegeven, notebook hangt aan eth1, de switch aan eth0. Alles wat van eth0 naar eth1 en andersom moet gaan krijgt een mark 1, die lees ik uit met tc filter en zet die pakketjes in class 1:1 en 2:1 (de classes met de hoogste prioriteit). Normaal zou de notebook toch veel sneller moeten kunnen FTP'n naar die FTP server, maar dat is niet het geval. De notebook en de LinuxBridge halen gelijke snelheden.

Weet er iemand wat ik fout doe?
Pagina: 1