Virtuele Machine: funproxy: Difference between revisions

From NURDspace
Jump to navigation Jump to search
No edit summary
No edit summary
 
(5 intermediate revisions by 3 users not shown)
Line 1: Line 1:
=== Wat ===
Om members een publiek endpoint te geven is een vm opgezet die poort 80,443 en 51820 exposed naar een publiek IP-adres. Deze VM, vernoemd naar member [[User:Fun | Fun]], is net als de andere vm's te benaderen met LDAP.  
Om members een publiek endpoint te geven is een vm opgezet die poort 80,443 en 51820 exposed naar een publiek IP-adres. Deze VM, vernoemd naar member [[User:Fun | Fun]], is net als de andere vm's te benaderen met LDAP.  


Gebruik volgende commandos om in te loggen en om vervolgens wachtwoordloos in te loggen.
Verander de username "fun" naar je eigen username.
<code>
ssh -o ForwardAgent=yes -J fun@space.nurdspace.nl fun@funproxy.vm.nurd.space
ssh-copy-id -o ProxyJump=fun@space.nurdspace.nl fun@funproxy.vm.nurd.space
</code>
=== Software stack ===
De software stack voor deze service bestaat uit een drietal containers, die dmv een compose file opgestart worden. Het hart van deze applicatie is Pangolin, een service die het mogelijk maakt om services die in jouw eigen netwerk draaien te verbergen achter het ip adres van de funproxy. HTTP richting de clients word afgehandeld door Traefik, terwijl Gebril een wireguard tunnel manager is. Het starten en stoppen van deze software stack word gedaan dmv een systemd unit file genaamt `funproxy`. De unit file roept onderwater `podman` aan met de `compose` plugin. Ook is de unit file geconfigureerd om de service te starten tijdens het booten, en de service zal automatisch herstart worden als deze crashed.
Om de service te starten:
<code>
<code>
ssh -J fun@space.nurdspace.nl fun@funproxy.vm.nurd.space
sudo systemctl start funproxy
</code>
 
Om de service te stoppen:
<code>
sudo systemctl stop funproxy
</code>
 
Om de logging te bekijken
<code>
sudo journalctl -fu funproxy
</code>
</code>


Line 13: Line 39:
A    example.org      185.31.228.86
A    example.org      185.31.228.86
</code>
</code>
=== NAT hairpinning ===
Om te voorkomen dat NAT hairpinning een probleem word op de space voor domeinen die via funproxy lopen, word er DNS spoofing toegepast voor de domeinen die geconfigureerd zijn binnen pangolin. Dmv deze dns spoofing word het externe ip adres wat geconfigureerd staat in deze domeinen omgezet naar het interne ip adres van `funproxy.vm.nurd.space`. Hiervoor draait op `funproxy.vm.nurd.space` een script genaamt `/usr/local/sbin/generate_funproxy_domain_config.sh`. Dit script leest de database van pangolin uit en genereert een configuratie file. Deze configuratie file word dmv `rsync` aangeboden aan de NURDspace dns servers. Deze servers halen de configuratie op, en voegen deze toe aan hun eigen configuratie. Dit proces loopt iedere 5 minuten.


=== Pangolin ===
=== Pangolin ===
Line 18: Line 47:


=== Newt ===
=== Newt ===
De publiek benaderbare instantie van Pangolin maakt door middel van een WireGuard tunnel verbinding met jouw eigen server. Je kunt een bestaand WireGuard netwerk gebruiken maar het gemakkelijker om Newt te draaien. Dit is een reverse-proxy en WireGuard tunnel in een eenvoudige Docker Image.
De publiek benaderbare instantie van Pangolin maakt door middel van een WireGuard tunnel verbinding met jouw eigen server. Je kunt een bestaand WireGuard netwerk gebruiken maar het is gemakkelijker om Newt te draaien. Dit is een reverse-proxy en WireGuard tunnel in een eenvoudige Docker Image.


<gallery>
<gallery>

Latest revision as of 00:37, 18 October 2025

Wat

Om members een publiek endpoint te geven is een vm opgezet die poort 80,443 en 51820 exposed naar een publiek IP-adres. Deze VM, vernoemd naar member Fun, is net als de andere vm's te benaderen met LDAP.

Gebruik volgende commandos om in te loggen en om vervolgens wachtwoordloos in te loggen. Verander de username "fun" naar je eigen username.


ssh -o ForwardAgent=yes -J fun@space.nurdspace.nl fun@funproxy.vm.nurd.space


ssh-copy-id -o ProxyJump=fun@space.nurdspace.nl fun@funproxy.vm.nurd.space

Software stack

De software stack voor deze service bestaat uit een drietal containers, die dmv een compose file opgestart worden. Het hart van deze applicatie is Pangolin, een service die het mogelijk maakt om services die in jouw eigen netwerk draaien te verbergen achter het ip adres van de funproxy. HTTP richting de clients word afgehandeld door Traefik, terwijl Gebril een wireguard tunnel manager is. Het starten en stoppen van deze software stack word gedaan dmv een systemd unit file genaamt `funproxy`. De unit file roept onderwater `podman` aan met de `compose` plugin. Ook is de unit file geconfigureerd om de service te starten tijdens het booten, en de service zal automatisch herstart worden als deze crashed.

Om de service te starten: sudo systemctl start funproxy

Om de service te stoppen: sudo systemctl stop funproxy

Om de logging te bekijken sudo journalctl -fu funproxy

DNS

Een eigen domeinnaam is een voorwaarde om je eigen services benaderen. Met DuckDNS of CloudFlare tunnels hoeft dat niet, want dan gebruik je hun domein. De auteur van dit artikel gebruikt porkbun.com en is daar erg tevreden mee. Om gebruik te maken van de NurdSpace, dan moet je de DNS Records van je domein instellen en verwijzen naar het IP van de NurdSpace. Let op dat de NurdSpace meerdere IP's heeft op dezelfde aansluiting, alleen het IP hieronder beland uit bij de funproxy vm.

A *.example.org 185.31.228.86

A example.org 185.31.228.86

NAT hairpinning

Om te voorkomen dat NAT hairpinning een probleem word op de space voor domeinen die via funproxy lopen, word er DNS spoofing toegepast voor de domeinen die geconfigureerd zijn binnen pangolin. Dmv deze dns spoofing word het externe ip adres wat geconfigureerd staat in deze domeinen omgezet naar het interne ip adres van `funproxy.vm.nurd.space`. Hiervoor draait op `funproxy.vm.nurd.space` een script genaamt `/usr/local/sbin/generate_funproxy_domain_config.sh`. Dit script leest de database van pangolin uit en genereert een configuratie file. Deze configuratie file word dmv `rsync` aangeboden aan de NURDspace dns servers. Deze servers halen de configuratie op, en voegen deze toe aan hun eigen configuratie. Dit proces loopt iedere 5 minuten.

Pangolin

Is een applicatie die draait op de VM waardoor je eenvoudig tunnels en port-forwards naar lokaal-draaiende services kunt opzetten en configureren. Er draait één enkele Pangolin instantie die te benaderen is op pangolin.rammelkruid.nl. Een inlog kan je kan krijgen via Fun of Eis-T, die maakt dan ook een organisatie aan voor je.

Newt

De publiek benaderbare instantie van Pangolin maakt door middel van een WireGuard tunnel verbinding met jouw eigen server. Je kunt een bestaand WireGuard netwerk gebruiken maar het is gemakkelijker om Newt te draaien. Dit is een reverse-proxy en WireGuard tunnel in een eenvoudige Docker Image.