Difference between revisions of "Router"
(→Firewall) |
(→Reverse Proxy) |
||
Line 43: | Line 43: | ||
==Reverse Proxy== | ==Reverse Proxy== | ||
− | De reverse proxy zorgt ervoor dat bezoekers van de websites, die gehost worden bij A-Eskwadraat, terecht komen | + | De reverse proxy zorgt ervoor dat bezoekers van de websites, die gehost worden bij A-Eskwadraat, terecht komen bij de juiste webserver. We gebruiken hiervoor [http://nginx.org/ nginx]. Iedere webserver heeft een aparte file voor de configuratie in /etc/nginx/conf.d/ met de extensie conf. |
+ | |||
+ | Voor het eenvoudig aanmaken van een subdomein bij a-eskwadraat is het volgende commando te gebruiken vanuit /etc/nginx/conf.d: | ||
+ | sed 's/template/{virtuele machine}/g' vm.template > vm-{virtuele machine}.conf | ||
+ | Daarbij wordt de volgende template gebruikt: | ||
+ | ##Vervang hier alle verwijzingen met template naar de naam de virtuele machine | ||
+ | # vm-template | ||
+ | upstream vm-template { | ||
+ | server vm-template:80; # Should be IP | ||
+ | } | ||
+ | |||
+ | server { | ||
+ | #listen 80; # accepteer poort 80 | ||
+ | include /etc/nginx/conf.d/https.common; # accepteer ssl verbinding met a-eskwadraat certificaat | ||
+ | |||
+ | server_name template.a-eskwadraat.nl; | ||
+ | |||
+ | access_log /var/log/nginx/access-vm-template.log main; | ||
+ | error_log /var/log/nginx/error-vm-template.log; | ||
+ | root /usr/share/nginx/html; | ||
+ | index index.html; | ||
+ | |||
+ | location / { | ||
+ | proxy_pass http://vm-template; | ||
+ | include /etc/nginx/conf.d/proxy.common; | ||
+ | } | ||
+ | } | ||
+ | |||
+ | ===Redirects=== | ||
+ | Naast dat nginx gebruikt wordt als reverse proxy, zorgt deze ook voor de verwijzingen. Deze zijn te vinden in /etc/nginx/conf.d/www-redirects.conf. Een voorbeeld functie van het redirecten is al het verkeer voor http://a-es2.nl wordt doorverwezen naar https://www.a-eskwadraat.nl. | ||
==Yum Cache== | ==Yum Cache== |
Revision as of 14:31, 6 May 2015
Contents
Router
De router is de spin in ons netwerk. Hij bepaalt welke diensten beschikbaar zijn en hoe je die kunt benaderen. Hierbij is de router verantwoordelijk voor het afhandelen van al het inkomende en uitgaande dataverkeer van A-Eskwadraat. Op het moment zijn Ernst en oclaude de huidige routers.
Firewall
Voor de firewall maken we gebruik van shorewall. De config is terug te vinden in salt, en in /etc/shorewall op Ernst en oclaude zelf. Shorewall zorgt voor de iptables regels die de daadwerkelijke firewall vormen.
Zones
Een firewall bestaat uit meerdere zones. Deze zijn er om onderscheid te maken tussen verschillende bronnen/bestemmingen. Op dit moment maken we gebruik van de zones firewall(fw), extern(ext) en intern(int). Het is ook mogelijk om zones binnen een zone aan te maken zoals voor virtuele machines(vm) die binnen de interne zone zitten, echter gebruiken we deze nog niet. De configuratie voor de zones is te vinden in /etc/shorewall/zones. Een voorbeeld zoals deze op het moment van schrijven staat ingesteld:
#{zone} {type} fw firewall ext ipv4 int ipv4 vm:int ipv4
Interfaces
De interfaces van de router zijn in te stellen in /etc/shorewall/interfaces. Hierbij maken we onderscheid tussen intern(int) en extern(ext). Een voorbeeld zoals deze op oclaude staat ingesteld:
#{zone} {interface} {opties} ext enp4s0 blacklist,norfc1918 int enp3s0 dhcp,routeback
Variabelen
Voor het gemak zijn er in shorewall enkel variabelen te gebruiken. Deze variabelen zijn in te stellen in /ets/shorewall/params. Bijvoorbeeld voor vm-mail:
#{naam}={waarde} VM_MAIL=10.14.3.6
Port Forward
De port forwards worden door de firewall geregeld in /etc/shorewall/rules. Deze file bevat alle speciale regels, waar port forwards dus ook toe behoren. Een portforward bestaat uit 2 regels, namelijk een regel voor verkeer afkomstig van het internet en een regel voor verkeer afkomstig van het interne netwerk. Daarnaast is er voor verkeer afkomstig van het interne netwerk een speciale masq regel nodig, welke ervoor zorgt dat het verkeer via de router loopt in plaats van direct.
Extern voorbeeld
Voorbeeld regel voor externe forward in /etc/shorewall/rules, hierbij wordt de externe tcp-poort 25 doorgestuurd naar poort 25 van vm-mail:
#{soort} {bron} {bestemming} {tcp/udp} {inkomende poort} DNAT ext int:$vm-mail:25 tcp 25
Intern voorbeeld
Voorbeeld regel voor interne forward in /etc/shorewall/rules, hierbij wordt de interne tcp-poort 25 doorgestuurd naar poort 25 van vm-mail, hierbij wordt de bron van het pakket omgezet naar de het externe ip van de router:
#{soort} {bron} {bestemming} {tcp/udp} {inkomende poort} {bron poort} {bron} DNAT int int:$vm-mail:25 tcp 25 - $EXT_IP_VIRT
Om wijziging van de bron van het pakket te laten werken moet er ook een overeenkomstige regel aangemaakt worden /etc/shorewall/masq:
#{interface:bestemming} {oorsprong} {bron} {tcp/udp} {poort} enp3s0:$VM_MAIL $INT_RANGE $EXT_IP_VIRT tcp 25
Reverse Proxy
De reverse proxy zorgt ervoor dat bezoekers van de websites, die gehost worden bij A-Eskwadraat, terecht komen bij de juiste webserver. We gebruiken hiervoor nginx. Iedere webserver heeft een aparte file voor de configuratie in /etc/nginx/conf.d/ met de extensie conf.
Voor het eenvoudig aanmaken van een subdomein bij a-eskwadraat is het volgende commando te gebruiken vanuit /etc/nginx/conf.d:
sed 's/template/{virtuele machine}/g' vm.template > vm-{virtuele machine}.conf
Daarbij wordt de volgende template gebruikt:
##Vervang hier alle verwijzingen met template naar de naam de virtuele machine # vm-template upstream vm-template { server vm-template:80; # Should be IP } server { #listen 80; # accepteer poort 80 include /etc/nginx/conf.d/https.common; # accepteer ssl verbinding met a-eskwadraat certificaat server_name template.a-eskwadraat.nl; access_log /var/log/nginx/access-vm-template.log main; error_log /var/log/nginx/error-vm-template.log; root /usr/share/nginx/html; index index.html; location / { proxy_pass http://vm-template; include /etc/nginx/conf.d/proxy.common; } }
Redirects
Naast dat nginx gebruikt wordt als reverse proxy, zorgt deze ook voor de verwijzingen. Deze zijn te vinden in /etc/nginx/conf.d/www-redirects.conf. Een voorbeeld functie van het redirecten is al het verkeer voor http://a-es2.nl wordt doorverwezen naar https://www.a-eskwadraat.nl.