/ Forside / Teknologi / Operativsystemer / Linux / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Linux
#NavnPoint
o.v.n. 11177
peque 7911
dk 4814
e.c 2359
Uranus 1334
emesen 1334
stone47 1307
linuxrules 1214
Octon 1100
10  BjarneD 875
Package manipulation med iptable? (Forward~
Fra : Jesper Staun Hansen


Dato : 17-08-06 14:10

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
# iptables -A INPUT -i eth0 -j ACCEPT
# iptables -A INPUT -i eth1 -p tcp -m limit --limit 1/sec -m tcp -j LOG
# iptables --log-prefix "tcp connection: "
# iptables -A INPUT -i eth0 -p tcp -m limit --limit 1/sec -m tcp -j LOG
--log-prefix "tcp connection: "
# iptables -A FORWARD -i eth0 -j ACCEPT
# iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A FORWARD -i eth0 -p tcp -m tcp --dport 22 -j ACCEPT
# iptables -A OUTPUT -o eth0 -j ACCEPT

dog er jeg gået fuldstændig fast her. Den såkaldte log siger heller
intet. (cat /var/log/* | grep -i 'connection')

Nogen der kan give mig et spark i den rigtige retning?

 
 
Kent Friis (17-08-2006)
Kommentar
Fra : Kent Friis


Dato : 17-08-06 15:50

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
--
"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).

Jesper Staun Hansen (17-08-2006)
Kommentar
Fra : Jesper Staun Hansen


Dato : 17-08-06 16:20



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?

Kent Friis (17-08-2006)
Kommentar
Fra : Kent Friis


Dato : 17-08-06 17:40

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).

Søg
Reklame
Statistik
Spørgsmål : 177577
Tips : 31968
Nyheder : 719565
Indlæg : 6409070
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste