Avatar billede fralle.dk Nybegynder
30. oktober 2004 - 22:50 Der er 3 kommentarer og
1 løsning

Bridge masquerade problem.

Hej,

Jeg har konstrueret et antal device drivere (dev1 - dev3), der tilgåes fra et userspace program via et packet interface. Alle devices er koblet på en bridge (br0) med en statisk IP addresse 192.168.0.1/24, og en kørende DHCP server. Herudover har jeg et eksternt interface (eth0), med en dynamisk IP addresse.

Nu vil jeg gerne have lavet adgang fra de 3 devices til eth0 med
samtidig anvendelse af IP masquerading, og fandt et eksempel på
nettet med et lignende setup (se figur 7b):

http://ebtables.sourceforge.net/br_fw_ia/br_fw_ia.html#section4

Jeg har prøvet at anvende nedenstående efter at bridgen er sat op med interfaces, DHCP server og IP addresse, men uden held:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -j MASQUERADE

echo '1' > /proc/sys/net/ipv4/ip_forward

Jeg ved ikke om årsagen til problemet er, at IP forwarding sker i IP stack'en og dermed ikke virker med et PF_PACKET interface, da det er en direkte lag 2 socket mellem device driveren og userspace applikationen.

På forhånd mange tak for hjælpen!
Avatar billede langbein Nybegynder
31. oktober 2004 - 10:29 #1
"Jeg har konstrueret et antal device drivere (dev1 - dev3), der tilgåes fra et userspace program via et packet interface. Alle devices er koblet på en bridge (br0) med en statisk IP addresse 192.168.0.1/24, og en kørende DHCP server."

og ..

"Herudover har jeg et eksternt interface (eth0), med en dynamisk IP addresse."

Dette høres litt mystisk ut, synes jeg. (Synes det likner litt på en selvmotsigelse.)

Er det eventuelt 3 kort i maskinen ? (To for br1 og ett for eth0 ?)

Forsøkte å eksperimentere litt med å kombinere bridge og router i den samme maskinen, for litt siden, men det ville ikk kjøre. Bridge for seg og router for seg kjørte fint. Fikk ikke til en løsning der bridge og router utvekslet data med hverandre (men er fremdeles på jakt etter en løsning der dette kan la seg gjøre.)

Bruker du ellers modifisert 2.4.x kernel eller 2.6.x kernel ?

Når det gjelder iptables setningene så er det i alle fall et par iøefallende feil:

iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT

Det finnes i det hele ikke noen filtering chain som heter postrouting. Den trafikk som settes opp via postrouting filtreres vha forward chain.

-d 192.168.0.0/24 Denne adressen får vel uansett ikke blitt rett. Man kan ikke source natte inn til sitt eget lokalnettverk selv om man så hadde noen servere kjørende der inne.

For source nat / masquerade ut så må det event bli noe slikt:

iptables -t nat -A FORWARD -s 192.168.0.0/24 -j ACCEPT

Hva er det slags drivere du ellers holder på å lage ? Høres spennede ut .. :)
Avatar billede fralle.dk Nybegynder
31. oktober 2004 - 11:40 #2
Hej langbein. Tak for din respons!

"Dette høres litt mystisk ut, synes jeg. (Synes det likner litt på en selvmotsigelse.)"

"Er det eventuelt 3 kort i maskinen ? (To for br1 og ett for eth0 ?)"

Jeg har som sagt konstrueret 3 device drivere (dev1 - dev3), der har en IP stack implementeret i userspace. Derfor bruger jeg en AF_PACKET socket til driveren, idet
at jeg ønsker at køre uden om Linux IP stack'en. Der er kun et reelt ethernet kort i maskinen - nemlig eth0.

"Bruker du ellers modifisert 2.4.x kernel eller 2.6.x kernel ?"

Jeg har patchet min 2.4.17 kernel med bridge-nf patchen, for at kunne bruge iptables med bridged interfaces. Er det ikke også nødvendigt?

"Det finnes i det hele ikke noen filtering chain som heter postrouting. Den trafikk som settes opp via postrouting filtreres vha forward chain."

Det er rigtigt at der ikke findes en filtering chain som hedder POSTROUTING, men det jeg ønsker er ikke filtering men i stedet NAT, hvor POSTROUTING er en af de 3 chains.

Håber ovenstående var svar nok.
Avatar billede langbein Nybegynder
04. november 2004 - 00:02 #3
".. i det at jeg ønsker at køre uden om Linux IP stack'en."

Nå er jeg langt fra sikker i min sak, men jeg trodde at det var nettop slik tingene kjører i en standard 2.4.x kernel og at det er derfor man må patche den. (Som bridge så kjører den på en slik måte at iptables/firewall rules bypasses. 2.6.x kernel sender som bridge trafikken via iptables/firewall rules.)

"iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.0/24 -j ACCEPT"

En slik konstruksjon har jeg aldri noen gang sett, av det som jeg kan huske. Synes det ser ut som halparten av en postrouting rule og halvparten av en filtering rule. Det kan vel godt hende det fungerer allikevell (??)

Generelt .. man må bare teste ut tingene, systematisk og "step by step".

Pleier først å sette alle policies helt åpne, dvs alle firewalling rules er åpne. Så er det å sette opp alle forwarding rules "bridge rules" eller hva det måtte være, slik at trafikken kjører ufiltrert. Når trafikken kjører så er det så å stenge av med filtering rules slik at det bare er den ønskede trafikk som slipper gjennom.

Forsøkte å eksperimentere med en 3 port bridge router løsning for litt siden, men fikk ikke bridge og router til å snakke med hverandre. Kan godt hende at det kan la seg gjøre. (Og problemstillingen må vel bli parallelt litt den samme ??)
Avatar billede fralle.dk Nybegynder
30. marts 2005 - 15:08 #4
Spørgsmål lukket.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester