Router

From A-Eskwiki
Jump to: navigation, search


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.

De router die in gebruik is, is naast zijn eigen IP op het IP-adres 10.14.3.1 (vm-netstack.a-eskwadraat.nl) te benaderen. Dit adres wordt gebruikt als default route op alle andere computers. Een backup-router zou dit snel kunnen overnemen als ernst uitvalt, maar dat is op het moment van schrijven nog niet geïmplementeerd.

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

DHCP server

Alle computers in het netwerk krijgen hun IP-adres van de router via DHCP. Zie dnsmasq voor details.

Reverse Proxy

De reverse proxy zorgt ervoor dat bezoekers van de websites, die gehost worden bij A-Eskwadraat, terecht komen bij de juiste webserver. Verder is dit het SSL-eindpunt zodat er verbindingen met https mogelijk zijn, zonder dat op iedere webserver het certificaat hoeft te staan. We gebruiken hiervoor nginx. Iedere webserver heeft een aparte file voor de configuratie in /etc/nginx/conf.d/ met de extensie conf.

Als je website door de vm-www-dmz wordt gehost en je wilt deze in de router toevoegen, doe dit in het bestand vm-www-dmz.aeslist.

Als je website op een eigen virtuele machine bij A-Eskwadraat staat is het volgende commando te gebruiken vanuit /etc/nginx/conf.d om een subdomein te maken:

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;
    }
}

Vergeet niet om de configuratie in salt op te slaan als je deze aanpast.

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