Veřejná IP adresa přes VPS


#1

Zdravím. Můj poskytovatel nenabízí veřejnou IP adresu, ale rád bych s tím něco udělal. Napadlo mě, že když mám VPS s veřejnou IP adresou, dalo by se to vyřešit tím, že z Turrise udělám tunel (ať už ssh nebo OpenVPN) na VPS, kde bude běžet OpenVPN server. Turris pak v takovém scénaři bude fungovat jako OpenVPN klient, že? Jaký je prosím zhruba postup v případě, že bych několik konkrétních portů na VPS chtěl forwardovat na Turris?


#2

Zdravím.
Použití SSH vs OpenVPN se dost zásadně liší ve složitosti.

SSH tunel je mnohem jednodušší na zprovoznění. Vy zřejmě potřebujete takzvaný reverzní tunel z Turrisu na vaše VPS. Více informací a ve větším detailu naleznete zde.

OpenVPN tunel si nejprve zprovozněte, server musíte mít na VPS a Turrise jen jako klienta. Jakmile budete mít tunel v provozu, musíte upravit nastavení IP tables na serveru. Měl byste je nastavit, aby forwardovaly port z veřejného rozhraní VPS na IP adresu Turrise ve VPN tunelu a současně správně přepisovaly cílové adresy. Více info zde.


#3

Díky za odpověď! Druhý odkaz je přesně to, co jsem potřeboval. Ještě mi není jasná jedna věc: v momentě, kdy bude Turris připojen jako klient k OpenVPN serveru na VPS a já se přes internet připojím jako další klient k VPN, uvidím lokální síť na úrovni Turrisu včetně dalších zařízení nebo jen Turris samotný? Nebo bych musel vytvořit další OpenVPN spojení uvnitř OpenVPN, kde bude Turris figurovat jako server a já budu jeho rozhraní tunelovat až na VPS vůči internetu?


#4

Nemáte zač, občas místní otázky vnímám jako příležitost si některé problémy více nastudovat.

OpenVPN v režimu TUN v defaultu neumožňuje komunikaci mezi klienty a klienti se vzájemně nevidí. Musel byste to explicitně povolit. V případě, že byste to povolil, zařízení na lokální síti za Turrisem stejně neuvidíte, protože vám na Turrisu běží NAT.

Možná je pro vás vhodné prozkoumat OpenVPN režim TAP (Layer 2 OSI) a tím pádem možnost mít VPS a další OpenVPN klienty jako další stroje v LAN.


#5

Ještě jednou díky, nakonec jsem se rozhodl (z důvodu jednoduchosti) použít reverzní SSH tunel, kterým jsem zpřístupnil OpenVPN server na Turrisu skrze VPS.

Kdyby někoho zajímalo, jak na to:

  1. OpenVPN server na Turrisu je třeba ve Forisu přepnout na TCP (UDP skrz SSH neprojde).
  2. Na Turrisu jsem otevřel tunel: ssh -f -N -T -R 0.0.0.0:11194:localhost:1194 x.x.x.x, kde x.x.x.x je IP adresa VPS. Ono 0.0.0.0 zaručí, že VPS bude na portu 11194 reagovat nejen z vnitřní sítě, ale i zvenku.
  3. Zároveň je nutné na VPS upravit v /etc/ssh/sshd_config direktivu GatewayPorts na clientspecified.
  4. V konfiguraci pro klienta stažené z Forisu stačí změnit direktivu remote na remote x.x.x.x 11194.

Mám akorát ještě dotaz ohledně samotného tunelu. Momentálně ho pouštím jako root, ale předpokládám, že to není nejlepší nápad. Asi bych jak na Turrisu, tak na VPS měl vytvořit konkrétního uživatele jen pro účel tohoto tunelu, že? Vzniká pak nějaký problém z hlediska práv s ohledem na OpenVPN? A druhá věc - kam je na Turrisu nejlepší vložit skript pro spouštění tunelu? Do etc/rc.local?

A vlastně mi vrtá hlavou ještě jedna věc: když se k OpenVPN serveru připojím (přes Tunnelblick), dostanu se jak na adrese 192.168.1.1, tak na adrese 10.111.111.1 k Forisu. Nerozumím, proč je dostupný na obou adresách? Druhá věc je, že mám ve vnitřní síti LXC kontejner na adrese 192.168.1.127 a čekal jsem, že po připojení na VPN bude také dostupný, ať už na adrese 192.168.1.127 nebo 10.111.111.127, ale není. Je třeba ještě něco nastavit?

Děkuji!


#6

Pro tunel je vhodné mít speciálního uživatele, asi na obou koncích - určitě ale na VPS, kam se jako root nyní přihlašujete. Přímé přihlášení na root byste měl zakázat.

Foris je zřejmě nastavený tak, že naslouchá na 0.0.0.0 (všech rozhraních), takže zmíněné chování je normální. Předpokládám, že 10.111.111.1 je adresa OpenVPN serveru v tunelu, ačkoliv to explicitně nezmiňujete.

Pro přístup do lokální sítě musíte zřejmě nastavit forwarding mezi LAN a tunelem. Zkuste pročíst zde.


#7

V tom já osobně nevidím obecně problém, pokud je alespoň pro roota zakázáno přihlášení přes heslo (což je snad běžný default). Ale pro účel tunelu z vyššího portu (> 1024) je myslím root zbytečný, takže na toto bych taky radši použil omezeného uživatele (alespoň na straně VPS).