Den Thu, 17 Aug 2006 17:20:03 +0200 skrev Jesper Staun Hansen:
>
>
> Kent Friis wrote:
>> Den Thu, 17 Aug 2006 15:09:56 +0200 skrev Jesper Staun Hansen:
>>> Jeg har lidt problemer med at forstå iptables sande mening her:
>>> Jeg har to servere, placeret på samme lan.
>>> Server 1: Koblet op til internettet (internet opkobling 1) gennem lan'et
>>> alle porte pegende imod sig. Dette er Debian serveren med iptables.
>>> Denne har kun et netkort
>>> Server 2: Koblet op til lan og en til internettet (internet opkobling 2)
>>> dog kun port 80 og remote desktop porten. Kører med windows. Denne har
>>> to netkort
>>>
>>> Min tanke er at jeg igennem port 684 (tilfælgedig port) i server 1, skal
>>> koble videre til server 2's port 22.
>>>
>>> Kan beskrives således:
>>> Internettet <==> Server 1 (port 684) <==> Server 2 (port 22)
>>>
>>> Derfor har jeg eksperimenteret med følgende linjer på server 1:
>>> # iptables -A PREROUTING -d server1 -i eth0 -p tcp -m tcp --dport 684 -j
>>> DNAT --to-de stination server2:22
>>
>> Hvordan peger server2's default gateway? Mod server1 eller direkte ud
>> på internettet?
>>
>> Hvis det er det sidste, vil server1 ikke se svaret, og derfor ikke få
>> mulighed for at fjerne sin NAT-oversættelse igen. Svaret går direkte
>> fra server2 til klienten, som derfor ser et ip-nummer den ikke kender
>> ("hvem har ringet dig op?"), sender en TCP RESET, hvorved server2
>> afbryder forbindelsen.
>>
>> Du er nødt til at sørge for at retur-trafikken kommer tilbage forbi
>> server1, enten ved default gateway, policy routing (den port her
>> skal den vej) på server2, eller ved at kombinere DNAT med SNAT på
>> server1.
>>
>> Mvh
>> Kent
>
> Det havde jeg ikke engang overvejet... lille doh og kvaje bajer
>
> Får følgende tanke:
> # iptables -t nat -A PREROUTING -d server1 --dport 684 -j DNAT
> --to-destination server2:22
> # iptables -t nat -A POSTROUTING -s server2 --sport 22 -j SNAT
> --to-destination server1:684
>
> Det virker lidt uholdbart, men ville de to linjer mon virke i sig selv?
-s server2
Det ser ud til at du har misforstået hvordan SNAT virker. Det er stadig
de indkommende pakker der skal NAT'es (så samme pakke rammer begge
regler, og får derved ændret både source og destination (ja, det
kan man godt)). Så det skal stadig være -d.
--sport 22
Samme problem. Det er --dport.
--to-destination
SNAT bruger --to-source, DNAT bruger --to-destination. Og --to-source
kan nøjes med ip-adresse, og bruger så en dynamisk port. Lad være med
at angive et fast port-nummer, ellers får du bare problemer med at
du kun kan have en forbindelse til maskinen.
Overvej derudover at skifte --sport ud med et check for pakker til
server2 der ikke kommer fra lokalnettet, eller bare der ikke kommer
fra server1. Så behøver du kun at angive --sport i DNAT linien, og
kan tilføje flere DNAT-linier uden at røre ved SNAT.
Mvh
Kent
--
"So there I was surrounded by all these scary creatures
They were even scarier than what Microsoft call features"
- C64Mafia: Forbidden Forest (Don't Go Walking Slow).