iptables (igen) med jobbig port forward och mac-filter

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Mar 2004

iptables (igen) med jobbig port forward och mac-filter

hej igen,

jag fortsätter med mitt firewall script.

jag har problem med att ansluta till windows remotedesktop.
tanken är att jag har två datorer bakom min NAT och vill kunna köra remote desktop mot båda av dem.
jag tänkte att om man ansluter som vanligt (över port 3389) så kommer man till dator 1 och om man ansluter till port 3390 så kommer man till dator 2.
hur får jag det rätt i iptables-reglerna om jag INTE vill ändra port som dator 2 lyssnar på?

den andra frågan angående mac-filtrering är att jag sitter på ett nätverk där våra datorer identifieras av mac-adresserna. nu när jag har två datorer bakom nat så ser alltså de datorerna ut att vara samma dator (då de får NAT-boxens externa mac-adress).
Alltså vill jag få det till att NAT-boxen ändrar sin mac-adress när den agerar åt dator 2.
Och att den samtidigt uppfattar att trafik till dator 2's mac-adress ska snappas upp av han själv och sen förmedlas vidare.

Förstår ni vad jag menar?
Tack på förhand!

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2003

Re: iptables (igen) med jobbig port forward och mac-filter

Citat:

Ursprungligen inskrivet av blomko
hej igen,

jag fortsätter med mitt firewall script.

jag har problem med att ansluta till windows remotedesktop.
tanken är att jag har två datorer bakom min NAT och vill kunna köra remote desktop mot båda av dem.
jag tänkte att om man ansluter som vanligt (över port 3389) så kommer man till dator 1 och om man ansluter till port 3390 så kommer man till dator 2.
hur får jag det rätt i iptables-reglerna om jag INTE vill ändra port som dator 2 lyssnar på?

den andra frågan angående mac-filtrering är att jag sitter på ett nätverk där våra datorer identifieras av mac-adresserna. nu när jag har två datorer bakom nat så ser alltså de datorerna ut att vara samma dator (då de får NAT-boxens externa mac-adress).
Alltså vill jag få det till att NAT-boxen ändrar sin mac-adress när den agerar åt dator 2.
Och att den samtidigt uppfattar att trafik till dator 2's mac-adress ska snappas upp av han själv och sen förmedlas vidare.

Förstår ni vad jag menar?
Tack på förhand!

Går det inte att ställa destinationsporten i iptables borde du byta omgående till något vettigare...

Det jag tror du vill är dock att få något sånt här

riktigt ip:port -> dator2:annanport?

Lek: Intel 6700K@4.4Ghz 16GB, 240GB*4,950 Pro 256, 980TIx1. 3xDell Ultrasharp "23
Server: Intel 2400@3.1Ghz 16GB, 35TB ZFS. FreeBSD
Laptop: MBPr 13" i7

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Mar 2004

Jo, det är ju så jag har det, men det fungerar inte fullt ut.

Så här ser min regel ut:
$IPTABLES -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 3390 -j DNAT --to-destination $KLIENT2_IP:3389
$IPTABLES -A FORWARD -d $KLIENT2_IP -p tcp -m tcp --dport 3390 -o $INTERNAL -j ACCEPT

men det fungerar inte.. jag måste nog ha med något som talar om att det som kommer från port 3390 på klient2 ska skickas ut på 3389 mot $EXTERNAL. och den regeln vet jag inte hur jag ska formulera.

Trädvy Permalänk
Medlem
Plats
Stockholm
Registrerad
Mar 2003
Citat:

Ursprungligen inskrivet av blomko
Jo, det är ju så jag har det, men det fungerar inte fullt ut.

Så här ser min regel ut:
$IPTABLES -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 3390 -j DNAT --to-destination $KLIENT2_IP:3389
$IPTABLES -A FORWARD -d $KLIENT2_IP -p tcp -m tcp --dport 3390 -o $INTERNAL -j ACCEPT

men det fungerar inte.. jag måste nog ha med något som talar om att det som kommer från port 3390 på klient2 ska skickas ut på 3389 mot $EXTERNAL. och den regeln vet jag inte hur jag ska formulera.

Måste nog ta och vara dryg och säga att såhär enkelt ska det vara istället.

rdr on $ext_if proto tcp from any to any port 4321 -> $somebox port 1234

:/

Dock kanske det är något fel på din syntax, att kolla på det där gav mig cancer ärligt talat... när det kan vara så mycket enklare.

Dock skulle jag tro att du ska köra två forwards bara och inte dra in NAT i det hela om det inte behövs. (Vet inte hur "start"-raden för NAT ser ut för iptables)

Lek: Intel 6700K@4.4Ghz 16GB, 240GB*4,950 Pro 256, 980TIx1. 3xDell Ultrasharp "23
Server: Intel 2400@3.1Ghz 16GB, 35TB ZFS. FreeBSD
Laptop: MBPr 13" i7

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Mar 2004

Tråkigt att få cancer av att titta på en syntax bara
jag känner inte igen det du skriver, är det pf?

hur som helst så vet jag att de reglerna jag skrivit fungerar om man ska använda sig av samma port på de olika sidorna av NAT-boxen, det jag vill veta är hur jag ska få tillbaks det som sänds på 3389 från klient2 till port 3390 på det externa nic:et i NAT-boxen. Det känns som att det borde vara något med POSTROUTING involverat.

Men jag ska prova din idé om två forward senare också.

Trädvy Permalänk
Medlem
Registrerad
Apr 2002

$IPTABLES -t nat -A PREROUTING -p tcp -i $EXTERNAL --destination-port 3390 -j DNAT --to-destination $KLIENT2_IP:3389
$IPTABLES -A FORWARD -p tcp -i $EXTERNAL --destination-port 3389 --destination $KLIENT2_IP -j ACCEPT

den använder jag, funkar fint

h170i-plus i5 6600 2x8gb ddr3l 850 pro 256gb
Don't argue with an idiot. He will drag you down to his level, and beat you with experience.

Trädvy Permalänk
Medlem
Plats
Svedala
Registrerad
Apr 2002

Prerouting verkar innan forward, alltså måste man sätta sina forward-regler till att matcha det man får från prerouting.
På samma sätt som du sätter din forwardreglel att matcha den omskrivna destinationsadressen måste du också matcha den omskrivna destinationsporten.

Neco: Dissa inte iptables när du uppenbarligen inte har använt det själv. Visst kan syntaxen se krånglig ut till en början, men det är väldigt flexibelt när man är van vid det.
Jag ska inte säga om det är bättre eller sämre än pf eftersom jag knappt jobbat med pf, jag föreslår att du gör detsamma...

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Mar 2004
Citat:

Ursprungligen inskrivet av nillon
Prerouting verkar innan forward, alltså måste man sätta sina forward-regler till att matcha det man får från prerouting.
På samma sätt som du sätter din forwardreglel att matcha den omskrivna destinationsadressen måste du också matcha den omskrivna destinationsporten.

Jo.
Har du lust att renskriva det där med mina förutsättningar så att iptables förstår?

Trädvy Permalänk
Medlem
Plats
Svedala
Registrerad
Apr 2002

Ska försöka göra det lite tydligare.

Om vi tittar på dina regler:

$IPTABLES -t nat -A PREROUTING -i $EXTERNAL -p tcp --dport 3390 -j DNAT --to-destination $KLIENT2_IP:3389
$IPTABLES -A FORWARD -d $KLIENT2_IP -p tcp -m tcp --dport 3390 -o $INTERNAL -j ACCEPT

Vi säger att det externa ip't på din maskin är 123.123.123.123, och KLIENT2_IP är 10.0.0.2. Det som händer när ett paket kommer till 123.123.123.123 på port 3390 är att det först kommer in i prerouting-kedjan, och där skrivs paketet om till att det ska till 10.0.0.2, port 3389, innan det kommer in i forward-kedjan. Därför måste du ange --dport till 3389 i forward. Blev det tydligare nu?

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Mar 2004

ok, nu är jag med.
Men det är väl som jag förstår fortfarande ett problem kvar;
nämligen att det som klient2 skickar på port 3389 måste ju sen tillbaks till port 3390 och ut på det externa ip:t.
Är det då jag ska använda mig av POSTROUTING på något sätt?

Trädvy Permalänk
Medlem
Plats
Svedala
Registrerad
Apr 2002

Det ska inte behövas, iptables håller själv rätt på det.

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Mar 2004
Citat:

Ursprungligen inskrivet av nillon
Det ska inte behövas, iptables håller själv rätt på det.

Tyvärr så verkar det inte göra det.. det fungerar inte.. Det blir timeout när man försöker ansluta till datorn.

Trädvy Permalänk
Medlem
Plats
Linköping
Registrerad
Okt 2004

*mumlar något om shorewall*

Computer science is no more about computers than astronomy is about telescopes.

Trädvy Permalänk
Medlem
Plats
/bin/bash
Registrerad
Mar 2002

Tänkte inte göra något större oväsen av mig utan bara spoonfeed. Såhär ser min DC forwarding ut, ändra på portar och ip-adress så blir det nog bra för dig med.

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 1412 -j DNAT --to-destination 192.168.2.30:1412
iptables -t nat -A PREROUTING -i eth1 -p udp -m udp --dport 1412 -j DNAT --to-destination 192.168.2.30:1412

Givetvis måste du öppna porten också, iptables -A INPUT -s 0/0 --dport 1412 -j ACCEPT and so on and so forth. eth1 ör för övring mitt WAN interface.

Så jag skulle väl föreslå.
iptables -t nat -A PREROUTING -i $WAN_KORT -p tcp -m tcp --dport 1234 -j DNAT --to-destination 10.0.0.2:4321
iptables -t nat -A PREROUTING -i $WAN_KORT -p tcp -m tcp --dport 1235 -j DNAT --to-destination 10.0.0.3:4321

Cisco - Linux - VMWare
-- Citera mig om ni vill få återkoppling --

Trädvy Permalänk
Medlem
Plats
Göteborg
Registrerad
Mar 2004

Tack för all hjälp, men jag kan verkligen inte få det att fungera.
Jag vet att det går att logga in på klient2 iaf (eftersom det fungerar på det interna nätverket) så där kan felet inte vara.
Men det måste vara något annat jag har missat helt enkelt, men jag kan verkligen inte se vad.
Alla policies är satta till DROP om det är ngn ledtråd.

Trädvy Permalänk
Medlem
Plats
Svedala
Registrerad
Apr 2002

Sätt log-regler i iptables om du inte redan har det, kolla sedan i loggarna... det är nog det bästa tips jag kan ge dig.