blog.dasrecht.net

With a min of max the opt!

Deine IP? – ip.nrdy.ch


Letztlich sass ich mit Marcel im Zug und wir unterhielten uns über unsere kleinen Side-Projects. Er ist derzeit grad an etwas coolem dran (mehr verrate ich hier nicht, das ist ihm überlassen).

Jedenfalls muss er irgendwoher möglichst einfach die IP kriegen. “Es gibt aber schon 10000 solche Dienste!” klar gibt’s das, jedoch wollte ich mal schauen wie schwierig/einfach sowas zu bewerkstelligen ist.

Nach dem Vorbild von Major welcher icanhazip.com betreibt habe ich ip.nrdy.ch zusammengestellt. Die Technik dahinter ist simpel*. Vorne dran ist ein HAProxy der ein RoundRobin Loadbalancing macht. Hintendran sind zwei Nginx mit einer einfachen Konfiguration welche die IP and den Browser zurückschickt.

technik ip.nrdy.ch

Nginx Konfiguration

Die Konfiguration ist absichtlich so ausgelegt, dass ich auch direkte Anfragen welche nicht über den Loadbalancer gehen direkt abhandeln könnte. Alles das über den Loadbalancer geht landet im X\Forwarded\For den rest kann man direkt mit der IP beantworten.

server {
listen 80;
location / {
    default_type text/plain;
    if ($http_x_forwarded_for){
        return 200 "$http_x_forwarded_for\n";
    }
    if ($remote_addr){
    return 200 "$remote_addr\n";
    }
  }
}

Aber wieso ein Loadbalancer?

Because I can 😉 Nein, erstens gings grad einfacher so und zweitens kann ich so einen Teil der Abfragen auf ein RaspberryPi verteilen das am Internet hängt. Zudem macht der HAProxy alle paar Sekunden einen Check ob die Backends noch da sind. Falls das RaspberryPi mal neugestartet wird, nimmt der HAProxy dieses aus dem Pool und schickt die Anfragen auf den anderen Server weiter. Zudem kann ich über den HAProxy ein Rate-Limiting einbauen oder IP’s sperren falls jemand zu viele Anfragen schicken sollte.

Und nun, bedienen Sie sich : ip.nrdy.ch

Und nein, es kann noch kein IPv6 kommt aber noch.

*im Sinne von “overengineered” Simpel


3 responses to “Deine IP? – ip.nrdy.ch”