Přesměrování TCP portu bez použití iptables

Odkazy na zajímavé články ze světa Linuxu.
Zamčeno
Uživatelský avatar
xsouku04
Administrátor
Příspěvky: 8146
Registrován: pát 15. říj 2010 11:11:44
Bydliště: Brno
Kontaktovat uživatele:

Přesměrování TCP portu bez použití iptables

Příspěvek od xsouku04 »

Pokud potřebujete na chvíli přesměrovat TCP port třeba jen proto, aby jste mohli provést nastavení zařízení za natem, můžete to udělat i bez použití iptables příkazem socat

Kód: Vybrat vše

socat TCP-LISTEN:444,fork TCP:81.32.43.128:80
Tento příkaz přesměruje místní port 444 na danou ip adresu port 80.

Více dokumentace zde http://www.cyberciti.biz/faq/linux-unix ... orwarding/

Příklady na manuálové stránce zde: http://www.dest-unreach.org/socat/doc/s ... l#EXAMPLES

Podobné s přidaným šifrováním a serverem, který dělá prostředníka (tunel) je ssh tunel.
O tom se můžete dočíst třeba zde.
http://www.mactech.com/articles/mactech ... index.html
Jeden příklad za všechny.

Příklad použití ssh tunelu. Právě se mi stalo, že můj poskytoval internetu mi blokuje tcp spojení na něktéré ip adresy .
Jako třeba wiki.4smart.cz nebo root.cz Je to záhada, nedělá to schávlně, nikdo neví čím to. Jako dočasné řešení je pro pne tedy tunel.
Na serveru 4smart stačí napsat příkaz.

Kód: Vybrat vše

ssh -N -R 9090:77.93.202.9:80 domaciucet@81.245.14.37 -p 35
Po zadání tohoto příkazu budu vyzván na svoje domácí heslo.
Tohle je opravdu zvláštní případ, ale pro vysvětlení principu to snad postačuje
77.93.202.9:80 - ip adresa na internetu kterou chci zpřístupnit z domu z lokální sítě. V tomto konkrétním případě je to wiki.4smart.cz
9090 port na mém počítači doma. Záměrně volím vyšší port, protože na ten má přístup i neroot.
81.245.14.37 -p 35 - adresa mého domácího stroje, port 35 je ssh port přesměrován na můj domácí pracovní počítač s linuxem

a výsledek ?

Nyní stačí když doma na svém počítač napíši http:/localhost:990 a objeví se stránka naší wiki.4smart.cz.
Můj poskytovatel internetu na mne nyní navíc nemůže špehovat, protože data se forwardují šifrovaným tunelem.
Pokud by na dané ip adrese fungovalo více domén, a vám se zobrazovala jiná než požadujete, postupujte podle návodu zde.
http://forum.odorik.cz/viewtopic.php?f=12&t=423

Abych se tedy z domu dostal na http://www.root.cz (můj poskytovatel internetu netbox mi jej nyní blokuje) přidám si do
/etc/hosts řádek

Kód: Vybrat vše

127.0.0.1       www.root.cz
Dále jako root na svém domácím počítači spustím. Čímž řeknu, že domána http://www.root.cz se má nyní hledat na localhostu.

Kód: Vybrat vše

socat TCP-LISTEN:80,fork TCP:127.0.0.1:8080
čímž si lokální port 80 přesměruji na lokální port 8080, kde mi začíná tunel. Tohle je zde jen proto, že mám zakázané se hlásit
na domácí počítač jako root. A porty 1-1024 má dovolené používat jen root. (nemohu na něj tedy napojit tunel přímo)

Tunel pak spustím na serveru 4smart příkazem:

Kód: Vybrat vše

ssh -N -R 8080:www.root.cz:80 domaciucet@81.245.14.37 -p 35
Kdybych se mohl domů hlásit jako root nepotřeboval bych spouštět aplikaci socat, stačilo by jen

Kód: Vybrat vše

ssh -N -R 80:www.root.cz:80 root@81.245.14.37 -p 35
A nyní když ve svém prohlížeči napíši http://www.root.cz, zobrazí se mi stránky root.cz, data ale půjdou šifrovaným tunelem přes 4smart. (pokud bych ale zadal do prohlížeče rovnou 127.0.0.1 root.cz to pozná a přesměruje mě na jiné stránky, proto musím z adat rovnou doménu)

Aby tunel přes nekvalitní router/NAT sám od sebe po jisté době nečinnosti neodumřel, předejte na serveru s 4smart do souboru
/etc/ssh/ssh_config
řádek

Kód: Vybrat vše

ServerAliveInterval 120
Vám se ale asi většinou bude hodit obrácené použití, kdy budete chtít využít veřejnou adresu na 4smart aby jste se dostali ke svému linuxovému notebooku na neveřejné adrese a bez forwardování portů. Stačí když se notebook podobným způsobem přihlásí na 4smart (pomocí klíčů to může být automatizované) a vy takto vytvoříte tunel z veřejné adresy 4smart do svého notebooku za několika naty i firewally. Tohle si asi zaslouží vlastní článek na novinku na 4smart.


Přesměrování portů lze použít i obráceně ve tvaru:

Kód: Vybrat vše

ssh -f user@personal-server.com -L 2000:smpt.personal-server.com:25 -N
Podrobnosti:
http://www.revsys.com/writings/quicktip ... unnel.html
Zamčeno