Spletna stran uporablja piškotke za boljšo uporabniško izkušnjo in spremljanje statistike obiskov (Google Analytics).
Z nadaljno uporabo spletne strani ali klikom na "Strinjam se", se strinjate z uporabo piškotkov.
Piškotki in njihova uporaba

Padec Kitajskega zidu oz. VPN in (reverse) proxy na Synology NAS

...ali kako zaobiti omejitve, ki jih predstavljajo državni ali korporativni požarni zidovi

Objavil Blaž Kristan 1.12.2014 @ 23:20
Oznake: NAS, server, Synology, web

No, čisto prvi šok je bil to, da sem v 1 uri porabil celoten znesek (60€) na podatkovnem roamingu na telefonu ter tako takoj ostal brez interneta, vsaj dokler nisem našel prvega WiFija. In tu se je začelo ...

Že prvi poskusi nalaganja Twitterja na hotelskem WiFiju so bili jalovi, v firmi pa se je žalostna resnica samo še potrdila - dostop do socialnih omrežij (in še marsičesa, med drugim Googla) je na Kitajskem onemogočen.

 

Najprej sem seveda poskusil na telefonu preko VPN, ki ga imam vzpostavljenega doma. Žal brez uspeha, pa sem poskusil tako PPTP kot L2TP in dvakrat preveril, da je označen send all traffic. K sreči imam doma tudi SSH strežnik, zato sem na računalniku sprobal še tunel preko njega.

ssh -D 8888 user@host.example.com

Tokrat je zadeva delala, če sem le v brskalniku nastavil SOCKS proxy na localhost:8888. Tako sem za silo dobil neomejen inernet, a žal le na računalniku.

Ker me je mučilo zakaj Twitter ne dela preko VPN sem malo raziskoval in izkaže se, da Kitajci filtrirajo in spreminjajo DNS promet. Že najenostavnejši ping je pokazal naslednje:

TwitFace

Ja res je, na kitajskem sta Facebook in Twitter eno. :D

Proxy strežnik

Torej sem poleg VPN potreboval še proxy strežnik. Žal na telefonu nisem mogel uporabiti SSH trika, zato sem raziskal ali lahko morda na svoj Synology NAS namestim proxy strežnik. Izkaže se, da je Apache (spletni) strežnik že hkrati proxy strežnik (in tudi reverse proxy) ob primerni konfiguraciji.

Konfiguriranje opravimo s SSH (ali Telnet) dostopom do NAS:

ssh root@nas_ip_naslov

Za uspešen vklop proxy modula je potrebno naslednje (Synology DSM5):

$ vi /etc/httpd/conf/httpd.conf-user

V konfiguracijsko datoteko je potrebno dodati proxy module:

...
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_connect_module modules/mod_proxy_connect.so
LoadModule proxy_http_module modules/mod_proxy_http.so
...

... in na koncu še datoteko, kjer bomo ustrezno konfigurirali proxy.

...
Include conf/extra/httpd-proxy.conf

Ta datoteka originalno ne obstaja, zato jo kreiramo:

$ vi /etc/httpd/conf/extra/httpd-proxy.conf
Vsebina pa se glasi:
ProxyRequests On
ProxyVia On
<Proxy *>
  Order deny,allow
  Deny from all
  Allow from 192.168 10.0 10.1 10.2
</Proxy>

Zadevščina poskrbi, da je proxy strežnik dostopen le znotraj LAN omrežja in ne tudi od zunaj. Proxy dosegljiv od zunaj je zelo slaba ideja! V kolikor imate drugačno lokalno omrežje, je potrebno popraviti IP naslov v vrstici Allow from.

Po restartu Apache strežnika in nastavitvi proxy strežnika pri VPN povezavi na telefonu je stvar stekla in surfal sem lahko tudi s telefonom.

$ /sbin/initctl stop httpd-user
$ /sbin/initctl start httpd-user

VPN nastavitve

Kot pri vsaki stvari, je tudi tu en ampak. Žal to deluje le za aplikacije, ki prepoznajo VPN in proxy nastavitve (npr. Safari), česar pa originalni Twitter klient na iPhonu ne zna. :(

Reverse proxy strežnik

Hkrati, ko sem raziskoval delovanje proxy strežnika na Apache, sem zasledil, da zna rokovati tudi z reverse proxy nastavitvami. In kje nam to prav pride?

Recimo, da imamo na LAN omrežju še en spletni strežnik katerega ne želimo direktno izpostaviti internetu oz. želimo do njega dostopati prav tako preko porta 80 (ali 443) kot do glavnega strežnika ali pa imamo spletno aplikacijo, ki ne deluje na portu 80 ne bi pa radi odpirali dodatnega porta na routerju. V takem primeru nastavim glavni strežnik, da deluje kot reverse proxy strežnik. Ob ustreznikonfiguraciji seveda!

Konfiguracija reverse proxya je macle zahtevnejša, saj poleg konfiguracije Apache zahteva tudi dodajanje novih zapisov v DNS ali pa imeti domeno na DNS strežniku ki servira t.i. wildcard domene, npr. *.domain.com. Tak primer je npr. Synology MyDS.me.

Za moj primer bom vzel, da želim navzven izpostaviti Synology Download Station (torrent klient), ki ga lahko namestim kot paket v DSM. Download Station lahko konfiguriramo, da deluje kot samostojna spletna aplikacija na portu 8000. V DNS pa bomo za moj primer vpisali torrent.domain.com. Hkrati bomo zaradi varnosti (vendarle gre za dostop do intranetnega strežnika) preusmerili ves promet na SSL povzavo.

Najprej moramo pripraviti virtualni spletni strežnik. To sicer lahko storimo v nadzorni plošči DSM, žal pa tam ne moremo vnesti vseh potrebnih nastavitev, zato bomo to uredili ročno.

$ vi /etc/httpd/sites-enabled-user/httpd-vhost.conf-user

V datoteko na koncu dodamo:

<VirtualHost *:80>
  ServerName torent.domain.com
  <Location />
    RedirectPermanent / https://torrent.domain.com/
  </Location>
</VirtualHost>

S čimer smo dosegli, da se naslov http://torrent.domain.com preusmeri na https://torrent.domain.com.

Sledi konfiguracija virtualnega strežnika, ki deluje preko šifrirane povezave. Ti imajo svojo konfiguracijsko datoteko:

$ vi /etc/httpd/sites-enabled-user/httpd-ssl-vhost.conf-user

Prav tako na koncu, dodamo naslednje:

<VirtualHost *:443>
  ServerName torrent.domain.com
  SSLCipherSuite HIGH:MEDIUM
  SSLProtocol all -SSLv2
  SSLCertificateFile /usr/syno/etc/ssl/ssl.crt/server.crt
  SSLCertificateKeyFile /usr/syno/etc/ssl/ssl.key/server.key
  SSLEngine on
  SSLProxyEngine on
  ProxyRequests Off
  ProxyVia Off
  <Proxy *>
    Order deny,allow
    Allow from all
  </Proxy>
  ProxyPass / http://localhost:8000/
  ProxyPassReverse / http://localhost:8000/
</VirtualHost>

Tako smo izpostavili Download Station torrent klienta, ki sicer deluje na portu 8000, kot virtualni strežnik na naslovu https://torrent.domain.com.

 

Komentarji

* Komentarje mora odobriti admin.