HTTP tunnel maken met Apache

Recent is het meekijken.info platform neergezet. Met dit systeem kunnen gebruikers eenvoudig een ticket aanmaken en servicemedewerkers mee laten kijken op zijn/haar desktop. Het project bestaat uit een site, crm en desktopapplicatie. Uiteraard worden zowel Windows als OSX ondersteund.

Om het ook toegankelijk te laten zijn voor mensen achter een http-proxy, is er ondersteuning toegevoegd voor verbindingen via een http-tunnel.

Het implementeren ging redelijk vlot, er moesten twee punten worden opgepakt,
  1. configuratie van de apache server voor het toestaan/ondersteunen van de tunnel
  2. client-side verbinden via de proxy

1. Tunnel configureren in Apache

Uiteraard moeten hiervoor mod_proxy & mod_proxy_connect modules geïnstalleerd zijn.

<VirtualHost *:80>
    ServerName tunnelvhost.company.nl

    DocumentRoot /var/www/html

    # alleen 'CONNECT' toestaan
    RewriteEngine On
    RewriteCond %{REQUEST_METHOD} !^CONNECT [NC]
    RewriteRule ^/(.*)$ - [F,L]

    ProxyRequests On
    ProxyMaxForwards 15

    # alleen tunnels naar poort 8077 toestaan
    AllowCONNECT 8077
    # standaard alles blokkeren
    <Proxy *>
        Order deny,allow
        Deny from all
    </Proxy>
    # tunnels naar tunnelvhost.company.nl toestaan
    <ProxyMatch (tunnelvhost\.company\.nl)>
        Order allow,deny
        Allow from all
    </ProxyMatch>
</VirtualHost>



2. Client-side aanpassingen

De client-side code van meekijken.info is gemaakt in C++. Handmatig wordt een socket(2) gemaakt waarmee de verbinding tot stand komt. Aan de applicatie hoeven maar enkele wijzigingen te worden gemaakt. Er moet nu verbonden worden met poort 80 van de webserver en het CONNECT commando moet worden meegegeven,

CONNECT tunnelvhost.company.nl:8077 HTTP/1.1
Host: tunnelvhost.company.nl

Vervolgens wordt de http-response header uitgelezen,

HTTP/1.0 200 Connection Established
Proxy-agent: Apache/2.4.25 (Debian)

Nadat deze header is uitgelezen, is de tunnel tot stand gebracht en werkt de verbinding als of er direct een verbinding is gemaakt op poort 8077.

- Bent u opzoek naar een Php of Java programmeur voor uw website of applicatie? (freelance / detachering)
- Heeft u alleen enkele tickets, of gehele projecten in de planning?

Kijk hier voor meer informatie of neem contact op.
Sitemap | Op onze producten & diensten zijn onze algemene voorwaarden van toepassing