Permalänk
Medlem

iptables, routa eth1 till eth0

Sitter och pillar med ett projekt i iptables. Har klurat ut de grundläggande sakerna och lyckats med ett par script. Jag har en burk kopplad till eth1 som är det inre kortet, och dess trafik på port 80 och 53 ska routas vidare till eth0 som är det yttre kortet.

Kan nått geni här ge mig ett exempel på hur en sådan regel skulle se ut? Jag har testat alla möjliga script jag hittat på nätet och läst lite i boken, men känner inte att jag får grepp om det.

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Medlem

Hmm, på din beskrivning tycker jag det låter som om du försöker göra det åt fel håll...
Hursomhelst, följande bör lösa det du vill göra:

iptables -t nat -A PREROUTING --proto tcp --in-interface eth0 --destination-port 80 --jump DNAT --to ip.till.intern.maskin

iptables -t nat -A PREROUTING --proto tcp --in-interface eth0 --destination-port 53 --jump DNAT --to ip.till.intern.maskin

iptables -t nat -A PREROUTING --proto udp --in-interface eth0 --destination-port 53 --jump DNAT --to ip.till.intern.maskin

Edit: Värt att tillägga är att du även måste tillåta denna trafik i dina FORWARD-regler.

Permalänk
Medlem

Fel håll? Om jag omformulerar det då: Jag har en burk bakom brandväggen som ska komma ut på nätet, till att börja med räcker vanlig webb för att testa att det fungerar. Till detta behöver jag port 53 och 80.

Ditt script ovan, routar det ALL trafik på p80 till intern IP (Jag vill kunna surfa direkt från brandväggen också)? Eller gör iptables NAT automatiskt om med utbyte av portar osv innan paketen skickas vidare?

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Medlem

Aha, då förstår jag.
Med detta dokument bör du inte ha några problem att få till det:
http://www.netfilter.org/documentation/HOWTO//NAT-HOWTO.html

Permalänk
Medlem

Vettigaste howto'n hittils, jag tycker ändå saker fattas. Jag har iaf fattat att det är SNAT jag ska använda. Men alla script jag hittat hittils ser ut ungefär såhär:

iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 1.2.3.4

SNAT'ar det ALLA paket som går ut på eth0 då? Borde det inte stå eth1 nånstans... typ "det som kommer in på eth1 ska SNAT'as"?

SNAT ändrar source IP, och det ska väl ändras till brandväggens IP-adress antar jag. Fattar den själv när paket kommer tillbaka att den ska ändra IPn och skicka ut det på eth1? Det verkar inte stå om det nånstans....

Såhär ser min nuvarande regel ut (policy ALLOW):

iptables -t nat -A POSTROUTING -s 192.168.199.3 -o eth0 -j SNAT --to 192.168.0.20

Om du kan utveckla det där med att det måste finnas med i FORWARDING vore jag tacksam, det står nämligen inget om det i howto'n efer vad jag kan se.

Visa signatur

ecce
#NATisNotASecurityFeature

Permalänk
Medlem

Du kan läsa en kort beskrivning om hur NAT fungerar på susning.nu: http://susning.nu/NAT
Berätta gärna lite mer om hur ditt nät ser ut och så. Vad jag förstår så vill du bara ha vanlig masqueradeing, och det är ingen direkt rymdteknik. Men dina beskrivningar gör det lite svårt ändå, no offense.

Permalänk
Medlem

Hittade ett ganska bra och kort script, eth0 är den externa enheten mot internet medans eth1 är den som går till LANet. Om du vill kunna surfa på den datorn som sitter kopplad till eth1 behöver du inte forwarda port 80 till den datorn med det här scriptet eftersom den tillåter allt ut, dvs från eth1 till eth0, men tillåter endast det du säger åt den att prerouta in.

#First we flush our current rules iptables -F iptables -t nat -F #Then we lock our services so they only work from the LAN iptables -I INPUT 1 -i eth1 -j ACCEPT iptables -I INPUT 1 -i lo -j ACCEPT iptables -A INPUT -p UDP --dport bootps -i ! eth1 -j REJECT iptables -A INPUT -p UDP --dport domain -i ! eth1 -j REJECT #Allow ceration connections iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT #(Optional) Allow access to our ssh server from the WAN iptables -A INPUT -p TCP --dport 22 -i eth0 -j ACCEPT #Drop TCP / UDP packets to privileged ports iptables -A INPUT -p TCP -i ! eth1 -d 0/0 --dport 0:1023 -j DROP iptables -A INPUT -p UDP -i ! eth1 -d 0/0 --dport 0:1023 -j DROP #Finally we add the rules for NAT iptables -I FORWARD -i eth1 -d 192.168.0.0/255.255.0.0 -j DROP iptables -A FORWARD -i eth1 -s 192.168.0.0/255.255.0.0 -j ACCEPT iptables -A FORWARD -i eth0 -d 192.168.0.0/255.255.0.0 -j ACCEPT iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE #Tell the kernel that ip forwarding is OK echo 1 > /proc/sys/net/ipv4/ip_forward for f in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 1 > $f ; done iptables -t nat -A PREROUTING -p tcp --dport 20:25 -i eth0 -j DNAT --to 1.2.3.4 iptables -t nat -A PREROUTING -p udp --dport 20:25 -i eth0 -j DNAT --to 1.2.3.4

Visa signatur

Hur man installerar program i *nix | There is no Swedish conspiracy

these days you can't use the Web at 2400 baud because the ads are 24KB - Bill Joy

Permalänk
Medlem

ni suger ju, sluta hjälp om ni inte vet vad ni snackar om...

okej.. först behöver du aktivera ip_forwarding, vilket du gör genom:
echo 1 > /proc/sys/net/ipv4/ip_forward

sedan, vill du SNATa all trafik som åker ut ur eth0(det som är mot internet)
här finns det ett annat bra target som heter MASQUERADE som gör samma sak, fast dynamiskt.
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

sedan, ett bra sätt att sätta upp vilken trafik som får passera är detta:

iptables -P FORWARD DROP
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -i eth1 -j ACCEPT # 23423423423434234234234
(så att ingen kan sk. "firewalka", men alla från det lokala nätet kan ansluta utåt)

om du sen vill att bara port 80 och 53 ska forwardeas får du snarare byta ut den magnifika raden
som jag så fint markerade med "23423423423434234234234" mot:
iptables -I FORWARD -p tcp --dport 80 -i eth1 -j ACCEPT
iptables -I FORWARD -p udp --dport 53 -i eth1 -j ACCEPT #dns kör över udp, förutom vid IXFR-överföringar

Visa signatur

pub 1024D/6600D334 2006-03-29
Key fingerprint = 72B7 2466 1864 C5DF 4A01 A74D A438 7C46 6600 D334

Permalänk
Medlem

Är det inte bättre att du kör ebtables istället för iptables för detta ändamålet?
http://ebtables.sourceforge.net/

Permalänk
Medlem

ebtables är för bryggning och opererar på ethernet-nivå, absolut inte vad han vill ha, nej.

och definitivt inte om han vill matcha på portar eller SNATa trafik.

Visa signatur

pub 1024D/6600D334 2006-03-29
Key fingerprint = 72B7 2466 1864 C5DF 4A01 A74D A438 7C46 6600 D334