Internet Info, s.r.o. Lupa Měšec Podnikatel Root Zdroják DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Tuneluji, tuneluješ, tunelujeme: přesměrování portů

V následující sérii článků probereme různé metody přesměrovávání toku dat v sítích. Začneme jednoduchým přesměrováním portů a skončíme až u vytváření VPN pomocí šifrovaných tunelů.

Tweetni to Twitter Jaggni to! Jagg Del.icio.us Delicious

Přesměrovávání

Občas není nutné zavádět přímo tunelování, postačí přesměrování portů (port forwarding). To jest: Aplikace si myslí, že se spojuje na port P1 na počítači C1, ale data tohoto spojení jsou na onom počítači odchycena a poslána „tunelem“ na druhý počítač. Otamtud vede druhé spojení, které data dopraví na port P2 počítače C2. Lépe to ukazuje následující obrázek:



Přesměrování portů pomocí SSH

Nejprve se podíváme na přesměrování pomocí SSH. Příkaz ssh má nepovinné parametry:

-L port1:host2:port2

a

-R port1:host2:port2

Je-li zadán některý z nich, začne ssh po vytvoření spojení poslouchat na TCP portu port1. Je-li zadán parametr -L, poslouchá na počítači, ze kterého se spojujete (lokálním), je-li zadán -R, poslouchá na počítači, na nějž se spojujete (vzdáleném). Pokud na dotyčný port přijde spojení, SSH ho protuneluje svým šifrovaným kanálem („vedle“ normálního přenosu příkazů) a z počítače na druhém konci tunelu (v případě -L vzdáleného, u -R lokálního) se spojí na port port2 počítačehost2. K čemu to může být dobré?

Podívejte se na následující obrázek:


Představte si, že jste doma na počítači Poc1. Ve firmě máte na počítači Poc2 SSH konto a na počítači Poc3 poštu přístupnou přes POP3. Chcete mít ke své poště přístup i z domova, a to i offline, tedy si ji chcete stahovat k sobě. Pokud použijete obyčejné POP3, půjde vaše heslo přes celý internet v otevřené podobě a navíc POP3 port počítače Poc3 nemusí být zvenku vůbec dostupný. Proto můžete zadat příkaz:

lemming@Poc1:~$ ssh -L pop3:Poc3:pop3 Poc2

Po dobu, po kterou bude aktivní toto spojení, můžete z firmy stahovat poštu připojením se na „pop3 server“ na vašem lokálním počítači. Heslo půjde po Internetu zašifrované v SSH kanálu.

Další příklad:



Váš správce sítě zakazuje přístup na některé weby (třeba root.cz ;-). Ale máte povolen SSH přístup ven na počítač Poc2 a na portu 3128 počítače Poc3 běží proxy server, který můžete využívat. Zadáte tedy příkaz:

lemming@Poc1:~$ ssh -L 3128:Poc3:3128 Poc2

Pak stačí v browseru nastavit jako proxy servery localhost:3128 a můžete browsit bez omezení. Zde také vidíte první příklad opravdového „tunelování“ – vytvořeným tunelem projdete omezením (například firewallem) jako nůž máslem.

Užitečnou a v praxi často využívanou možností tunelování přes SSH je tunelování XWindows spojení. XWindows umí už „od přírody“ zobrazovat aplikaci na jiném počítači, než na kterém běží. Bohužel, data takto přenášená po síti nejsou nijak zabezpečena proti odposlechu a/nebo manipulaci. Proto se velmi hodí přepínač -X příkazu ssh. Zadáte-li (z XWindows, t.j. třeba z xtermu nebo rxvt):

lemming@Poc1:~$ ssh -X Poc2

budou všechny X aplikace, spuštěné z tohoto spojení na vzdáleném stroji, zobrazovány na vaší obrazovce. Data budou přenášena SSH tunelem a budou tedy zajištěna proti odposlechu i proti manipulaci. Toto nastavení si můžete zapnout jako implicitní pomocí direktivy ForwardX11 yes v souboru ~/.ssh/config. Jen bych chtěl upozornit, že tunelování XWindows spojení je možné zakázat nastavením serveru, proto přepínač nemusí fungovat se všemi počítači.

Na závěr bych jen dodal, že bohužel podle mých zkušeností není přesměrovávání pomocí SSH zcela spolehlivé. Pokud bylo spuštěno, vždy mi po několika dnech spadlo – SSH na portu stále poslouchalo, ale spojení nebylo přenášeno. Možná je tato chyba již opravena, nevím, v poslední době jsem přes SSH nic dlouhodobě netuneloval.

Přesměrování pomocí iptables

Další možností přesměrovávání portů nebo i celých adres je přesměrování pomocí iptables. Příkladem příkazu, který zavede přesměrování, může být třeba:

iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.5:80

Tento příkaz přesměruje port 80 na lokálním počítači na port 80 počítače 192.168.1.5.  Můžeme to využít například v případě, kdy máme pouze jednu veřejnou adresu a chceme, aby WWW server dostupný zvenku neběžel na firewallu.  Spustíme ho tedy na počítači 192.168.1.5 v de­militarizované zóně a na firewallu nastavíme výše uvedené přesměrování.

Výhodou tohoto způsobu je fakt, že přesměrování lze nastavit nejen pro lokální počítač, ale i pro počítač, jenž je přes firewall pouze routován:

iptables -t nat -A PREROUTING -i eth0 -p tcp -d 123.45.67.89 --dport 80 -j DNAT --to 123.45.67.90:80

Tímto způsobem přesměrujeme pakety jdoucí na port 80 počítače …89 na port 80 počítače …90. Může se nám to hodit třeba v případě, kdy potřebujeme zobrazovat chybovou (informační) stránku po dobu, kdy je počítač …89 dole:


Není cílem tohoto článku být manuálem k iptables, přesto alespoň v krátkosti rozeberu parametry tohoto příkladu:

  • iptables – Příkaz pro manipulaci s iptables
  • -t nat – Budeme pracovat s tabulkou NAT
  • -A PREROUTING – Pravidlo přidáme to řetězce (chainu) PREROUTING
  • -i eth0 – Budeme pracovat pouze s pakety přicházejícími přes zařízení eth0 (vnější) …
  • -p tcp – …používajícími protokol TCP …
  • -d 123.45.67.89 – …jdoucími na počítač s tímto IP …
  • –dport 80 – … na port 80.
  • -j DNAT – Takovýmto paketům přepiš cílovou adresu …
  • –to 123.45.67.90:80 – … na toto IP na port 80.

Těm bystřejším z vás už jistě došlo, že aby vše fungovalo, je nutné přepisovat i zdrojovou adresu paketů, jdoucích opačným směrem. Na to není třeba tvořit pravidlo, to si zajistí iptables samy.

Pokud vynecháme čísla portů, můžeme přesměrovat celý provoz adresy na nějakou jinou, například veřejné IP na počítač v interní síti:

iptables -t nat -A PREROUTING -i eth0 -p tcp -d 123.45.67.80 -j DNAT --to 192.168.1.5

Tím jsme probrali různé možnosti přesměrovávání portů. Existují i jiné aplikace, které jej umožňují, například redir, jejich použití je obdobné jako ve výše uvedených příkladech. Příště se už podíváme na tunelování veškerého síťového provozu.

Školení: SQL pro začátečníky

Kdo nezná jazyk SQL jako kdyby nebyl. Tak lze stručně charakterizovat dnešní význam SQL v IT. Pokud se chcete naučit tento jazyk, tak navštivte naše školení SQL. Školení je určené začátečníkům, a proto se začíná od skutečných základů.

Kromě samotného SQL se účastíci školení seznámí i se základy PostgreSQL, což je databáze, která se díky své shodě se standardem ANSI SQL a komfortem, který poskutuje svým uživatelům, zvlášť hodí pro výuku SQL.

Podrobnější informace a přihláška

Ohodnoťte jako ve škole:
Průměrná známka 3,10

Přehled názorů

super clanek
shamot 2. 7. 2003 00:03
Nový
Dobry clanek, doufam, ze bude jeste vic do hloubky
Lada 2. 7. 2003 07:43
Nový
├ 
Re: Dobry clanek, doufam, ze bude jeste vic do hlo
stuff 2. 7. 2003 07:53
Nový
└ 
Re: Dobry clanek, doufam, ze bude jeste vic do hloubky
Michal Kara 2. 7. 2003 10:29
Nový
 
└ 
Re: Dobry clanek, doufam, ze bude jeste vic ...
Neldor 2. 7. 2003 12:26
Nový
neni tu chyba?
Nob 2. 7. 2003 08:05
Nový
└ 
Re: neni tu chyba?
anonymní uživatel 2. 7. 2003 09:37
Nový
 
└ 
Re: neni tu chyba?
bigsam 3. 7. 2003 11:33
Nový
Už se těším na pokračování.
Frn 2. 7. 2003 08:33
Nový
└ 
Re: Už se těším na pokračování.
Michal Kara 2. 7. 2003 10:44
Nový
Velmi pekne
Filip Huška 2. 7. 2003 08:43
Nový
└ 
Re: Velmi pekne
networ 2. 7. 2003 09:37
Nový
pekne
rooter 2. 7. 2003 09:04
Nový
Presmerovanie na pc s neverejnou ip
qwerty 2. 7. 2003 09:22
Nový
├ 
Re: Presmerovanie na pc s neverejnou ip
iko 2. 7. 2003 09:36
Nový
├ 
Re: Presmerovanie na pc s neverejnou ip
Noxius 2. 7. 2003 10:20
Nový
├ 
Re: Presmerovanie na pc s neverejnou ip
RWS 2. 7. 2003 10:32
Nový
│
└ 
Re: Presmerovanie na pc s neverejnou ip
qwerty 2. 7. 2003 10:36
Nový
│
 
├ 
Re: Presmerovanie na pc s neverejnou ip
RWS 2. 7. 2003 13:35
Nový
│
 
└ 
Re: Presmerovanie na pc s neverejnou ip
Lukas Kunc 3. 7. 2003 16:24
Nový
└ 
Re: Presmerovanie na pc s neverejnou ip
kait 2. 7. 2003 17:39
Nový
 
└ 
Re: Presmerovanie na pc s neverejnou ip
qwerty 2. 7. 2003 20:07
Nový
 
 
├ 
Re: Presmerovanie na pc s neverejnou ip
kait 3. 7. 2003 10:11
Nový
 
 
│
└ 
Re: Presmerovanie na pc s neverejnou ip
qwerty 3. 7. 2003 16:20
Nový
 
 
└ 
znamost
yerabine 20. 11. 2005 17:07
Nový
Iptables
networ 2. 7. 2003 09:39
Nový
Spolehlivost SSH tunelu
RWS 2. 7. 2003 10:26
Nový
├ 
Re: Spolehlivost SSH tunelu
networ 2. 7. 2003 12:50
Nový
│
└ 
Re: Spolehlivost SSH tunelu
RWS 2. 7. 2003 13:42
Nový
│
 
└ 
Re: Spolehlivost SSH tunelu
Jan Martinek 3. 7. 2003 08:23
Nový
│
 
 
└ 
Re: Spolehlivost SSH tunelu
sss 3. 7. 2003 09:50
Nový
└ 
Re: Spolehlivost SSH tunelu
networ 2. 7. 2003 12:55
Nový
 
└ 
Re: Spolehlivost SSH tunelu
Michal Kubeček 4. 7. 2003 03:54
Nový
Port forwarding v SSH - Problemy
seth 2. 7. 2003 10:50
Nový
└ 
Re: Port forwarding v SSH - Problemy
Jerry (bez trojky) 2. 7. 2003 15:01
Nový
 
└ 
Re: Port forwarding v SSH - Problemy
seth 2. 7. 2003 18:04
Nový
 
 
└ 
Re: Port forwarding v SSH - Problemy
Jerry (bez trojky) 2. 7. 2003 18:47
Nový
ssh?
Agent Smith 2. 7. 2003 11:03
Nový
└ 
Re: ssh?
seth 2. 7. 2003 11:26
Nový
 
└ 
stunnel
ad 2. 7. 2003 12:05
Nový
 
 
├ 
Re: stunnel
RWS 2. 7. 2003 13:38
Nový
 
 
│
├ 
Re: stunnel
seth 2. 7. 2003 14:02
Nový
 
 
│
├ 
Re: stunnel
Michal Kubeček 4. 7. 2003 03:39
Nový
 
 
│
└ 
Re: stunnel
Jake 7. 7. 2003 18:51
Nový
 
 
└ 
Re: stunnel
Michal Kara 2. 7. 2003 15:30
Nový
L2TP ?
svina leniva 2. 7. 2003 11:18
Nový
Stunnel
Marek 2. 7. 2003 11:27
Nový
SSH Portforwarding - TCP versus UDP
seth 2. 7. 2003 11:45
Nový
├ 
Re: SSH Portforwarding - TCP versus UDP
mm 3. 7. 2003 01:17
Nový
├ 
Re: SSH Portforwarding - TCP versus UDP
Michal Kubeček 4. 7. 2003 03:49
Nový
│
└ 
Re: SSH Portforwarding - TCP versus UDP
seth 4. 7. 2003 09:35
Nový
└ 
Re: SSH Portforwarding - TCP versus UDP
Michal Kubeček 4. 7. 2003 03:53
Nový
SSH tunel v rc skriptech
Aloisius 2. 7. 2003 13:18
Nový
├ 
Re: SSH tunel v rc skriptech
seth 2. 7. 2003 14:11
Nový
├ 
Re: SSH tunel v rc skriptech
Petr 2. 7. 2003 15:35
Nový
└ 
Re: SSH tunel v rc skriptech
rajo 4. 7. 2003 20:25
Nový
Jak vyresit ICQ?
MIREK 2. 7. 2003 13:34
Nový
├ 
Re: Jak vyresit ICQ?
RWS 2. 7. 2003 14:07
Nový
│
└ 
Re: Jak vyresit ICQ?
MIREK 2. 7. 2003 14:22
Nový
├ 
Re: Jak vyresit ICQ?
seth 2. 7. 2003 14:08
Nový
│
└ 
Re: Jak vyresit ICQ?
seth 2. 7. 2003 14:09
Nový
├ 
Re: Jak vyresit ICQ?
badza 2. 7. 2003 14:23
Nový
│
├ 
Re: Jak vyresit ICQ?
networ 2. 7. 2003 15:00
Nový
│
└ 
Re: Jak vyresit ICQ?
MIREK 2. 7. 2003 15:25
Nový
│
 
└ 
Re: Jak vyresit ICQ?
MIREK 2. 7. 2003 15:56
Nový
├ 
Re: Jak vyresit ICQ?
petr 2. 7. 2003 23:20
Nový
│
└ 
Re: Jak vyresit ICQ?
Mirek 3. 7. 2003 01:25
Nový
├ 
Re: Jak vyresit ICQ?
pixall 8. 7. 2003 10:41
Nový
├ 
Re: Jak vyresit ICQ?
lukash 16. 4. 2005 21:32
Nový
└ 
Re: Jak vyresit ICQ?
Peto 12. 5. 2006 17:48
Nový
ssh
hanz 2. 7. 2003 14:04
Nový
├ 
Re: ssh
Jerry (bez trojky) 2. 7. 2003 15:05
Nový
└ 
Re: ssh
Ferret 3. 7. 2003 10:38
Nový
 
└ 
Re: ssh
Pedro 3. 7. 2003 17:34
Nový
Jee, vono to fakt funguje!
stemar 2. 7. 2003 15:13
Nový
Tunel pristupny zvenku?
gbl 2. 7. 2003 15:29
Nový
├ 
Re: Tunel pristupny zvenku?
Michal Kara 2. 7. 2003 15:34
Nový
└ 
Re: Tunel pristupny zvenku?
seth 2. 7. 2003 16:37
Nový
 
└ 
Re: Tunel pristupny zvenku?
gbl 2. 7. 2003 17:11
Nový
 
 
├ 
Re: Tunel pristupny zvenku?
seth 2. 7. 2003 17:41
Nový
 
 
└ 
Re: Tunel pristupny zvenku?
seth 2. 7. 2003 18:16
Nový
 
 
 
└ 
Re: Tunel pristupny zvenku?
seth 2. 7. 2003 18:43
Nový
Skripting v ssh klientu na PC?
Tom Tobula 2. 7. 2003 17:08
Nový
├ 
Re: Skripting v ssh klientu na PC?
gbl 2. 7. 2003 17:14
Nový
├ 
Re: Skripting v ssh klientu na PC?
Jerry (bez trojky) 2. 7. 2003 17:46
Nový
│
└ 
Re: Skripting v ssh klientu na PC?
Tom Tobula 2. 7. 2003 22:50
Nový
│
 
└ 
Re: Skripting v ssh klientu na PC?
Jerry (bez trojky) 3. 7. 2003 01:21
Nový
│
 
 
└ 
Re: Skripting v ssh klientu na PC?
PeS 3. 7. 2003 10:53
Nový
│
 
 
 
└ 
Re: skripting + účet pro shutdown + omezení iface
Tom Tobula 3. 7. 2003 12:25
Nový
│
 
 
 
 
└ 
Re: skripting + účet pro shutdown + omezení iface
Pichi 3. 7. 2003 13:09
Nový
│
 
 
 
 
 
└ 
Re: skripting + účet pro shutdown + omezení iface
Michal Kara 3. 7. 2003 16:49
Nový
│
 
 
 
 
 
 
└ 
Re: skripting + účet pro shutdown + omezení iface
Pichi 4. 7. 2003 12:54
Nový
└ 
Re: Skripting v ssh klientu na PC?
petr 2. 7. 2003 23:33
Nový
 
└ 
Re: Skripting v ssh klientu na PC?
Jerry (bez trojky) 3. 7. 2003 01:19
Nový
 
 
└ 
Re: Skripting v ssh klientu na PC?
Tom Tobula 3. 7. 2003 20:50
Nový
 
 
 
└ 
Re: Skripting v ssh klientu na PC?
petr 3. 7. 2003 21:54
Nový
NAT <--> inet <--> NAT
petr 3. 7. 2003 09:31
Nový
VPN koncentrator
Jan Nejman 3. 7. 2003 10:06
Nový
Komprimovane tunely
Petrik 3. 7. 2003 11:04
Nový
└ 
Re: Komprimovane tunely
Michal Kara 3. 7. 2003 14:17
Nový
 
├ 
Re: Komprimovane tunely
xx 3. 7. 2003 14:52
Nový
 
└ 
Re: Komprimovane tunely
Jerry (bez trojky) 3. 7. 2003 17:08
Nový
FTP
Jan 3. 7. 2003 18:48
Nový
└ 
Re: FTP
Tom Tobula 3. 7. 2003 21:23
Nový
 
└ 
Re: FTP
Jan 4. 7. 2003 14:28
Nový
 
 
├ 
Re: FTP
Tom Tobula 4. 7. 2003 18:02
Nový
 
 
└ 
Re: FTP
rajo 4. 7. 2003 20:43
Nový
SSL tunel
Jindra 7. 7. 2003 17:50
Nový
└ 
Re: SSL tunel
Michal Kubeček 12. 7. 2003 18:54
Nový
 
└ 
Re: SSL tunel
Jindra 14. 7. 2003 17:11
Nový
Posta na FW
Martin 31. 7. 2003 14:26
Nový
firewall
Marek 1. 11. 2004 21:23
Nový
ssh port forwarding vs stunnel
lusvobus 8. 2. 2006 11:13
Nový
nevíte někdo jak na to?
Pete 28. 7. 2006 12:15
Nový
Jak můžete napsat spojení XWindows
Spajk 10. 1. 2007 21:13
Nový
Prosím pomoc
mikmikel 30. 5. 2011 22:13
Nový
       

Tento text je již více než dva měsíce starý. Chcete-li na něj reagovat v diskusi, pravděpodobně vám již nikdo neodpoví. Pro řešení aktuálních problémů doporučujeme využít naše diskusní fórum.

Zasílat nově přidané příspěvky e-mailem