Freifunk-Gateway aufsetzen/Routing-ins-Internet

Aus Freifunk Franken
Wechseln zu:Navigation, Suche

Einleitung

Es gibt verschiedene Möglichkeiten Traffic ins Internet zu routen.

  • Einen anderen Router ins Internet routen lassen und dessen angebotene Route nutzen.
  • Direkt am eigenen Server ins Internet routen
  • Über einen VPN Anbieter ins Internet routen


Über Babel an ein FFF-Exit-Gateway

IPv4

Babel trägt automatisch die von anderen Routern announcte "default-Route" in die 'fff' Tabelle ein.

Dadurch werden die Pakete, für die keine bessere ("more specific") Route gefunden wurde zu dem Server geleitet, der diese "default-Route" announct hat.

Es sollte darauf geachtet werden, dass die Option net.ipv4.icmp_errors_use_inbound_ifaddr (siehe oben) gesetzt ist. Ansonsten passieren lustige Dinge mit MTU, die dazu führen können, dass manche Seite nicht laden.

Außerdem sollte MSS Clamping aktiviert werden, damit auch Webseiten funktionieren, die ICMP Pakete blockieren (pfui!). Dafür kann in /etc/network/interfaces bei jedem Interface, das Babel verwendet, folgender Zweizeiler im IPv4 Bereich ergänzt werden.

  post-up iptables -t mangle -A POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o $IFACE -j TCPMSS --clamp-mss-to-pmtu
  pre-down iptables -t mangle -D POSTROUTING -p tcp --tcp-flags SYN,RST SYN -o $IFACE -j TCPMSS --clamp-mss-to-pmtu

Hintergrundinfos: https://de.wikipedia.org/wiki/Maximum_Segment_Size#MSS_Clamping

IPv6

Bei IPv6 wird nicht wie bei IPv4 mit NAT gearbeitet. Daher sind öffentliche Adressen nötig, die dann auch passend geroutet werden müssen. (Nicht jeder Uplink lässt Pakete mit beliebigen Quelladressen durch).

Öffentliche IPv6 Adressen können hier bezogen werden. Auch für diese Adressen gilt: die passenden Routen werden im Freifunk announced, daher ist nichts weiter zu tun.

.. Es können (und sollten, so die Möglichkeit besteht) natürlich auch eigene Adressen verwendet werden. :-)

Traffic direkt am Server ins Internet ausleiten

Bevor ihr "fremden" Traffic direkt ausleitet, solltet ihr euch unbedingt über die rechtlichen Konsequenzen informieren und euch mit eurem Provider oder Serververmieter in Verbindung setzen.

IPv4

Hierfür ist ein NAT nötig, dass die internen Adressen auf die passende öffentliche Adresse übersetzen kann.

Weiterhin muss eine passende default Route in der 'fff' Tabelle angelegt werden:

~$ ip route show tab main | grep default
default via 192.0.2.4 dev ens3
~$ ip route replace default via 192.0.2.4 dev ens3 proto static tab fff

Das ganze muss dann noch Rebootfest gemacht werden. Dafür bietet es sich an, einen {pre-|post-}up Block in der Debian Interfacekonfiguration zu schreiben.

Anschließend muss noch ein passendes NAT aktiviert werden.

iptables -t nat -A POSTROUTING -o ens3 -j MASQUERADE

Will man diese default Route auch anderen Routern zur Verfügung stellen, muss der Filter in /etc/babeld.conf angepasst werden:

redistribute ip 0.0.0.0/0 eq 0

Diese Zeile bedeutet: "Announce alle Routen aus der import-table, die innerhalb von 0.0.0.0/0 liegen und die Prefixlänge 0 haben."

IPv6

(Achtung ungetestet!)

Hier wird ein freies /64 Netz für jede Hood benötigt. Das vorgehen ähnelt im Prinzip sehr den fd43 Adressen nur das im radvd eine Default Route mitgegeben wird. Natürlich muss dafür gesorgt werden, dass das Subnetz ins Internet kann bzw. aus dem Internet erreichbar ist.

Folgendes muss getan werden:

Aus dem Subnetz muss eine einzelne IP an das bat Interface:

[...]
post-up ip -6 addr add 2001:db8::1/64 dev $IFACE
[...]

Eine Route muss in die fff Tabelle:

[...]
post-up ip -6 route replace 2001:db8::1/64 dev $IFACE proto static table fff
[...]

Im radvd muss eine default route announced werden dazu AdvDefaultLifetime nicht auf 0 setzen sondern erhöhen (z.b. 600). Weiterhin muss das Subnetz auch announced werden in /etc/radvd.conf:

[...]
        prefix 2001:db8::/64 {
                AdvOnLink on;
                AdvAutonomous on;
        };

[...]

Abuse minimieren

Wenn selbst Pakete ins Internet geleitet werden kann es sinnvoll sein folgende Dinge zu sperren.

Ausgehend:

  • tcp-25
  • tcp-137
  • udp-137
  • ip-10.0.0.0/8
  • ip-172.16.0.0/12
  • ip-192.168.0.0/16
  • ip-100.64.0.0/10
  • ip-169.254.0.0/16
  • ip-192.0.0.0/24
  • ip-192.0.2.0/24
  • ip-198.18.0.0/15
  • ip-198.51.100.0/24
  • ip-203.0.113.0/24
  • ip-0.0.0.0/8

Gateways, welche beim Hoster Hetzner stehen, sollte weitere Vorkehrungen treffen. Hetzner monitored den Traffic, den die Gateways verursachen. Sollten Verbindungsversuche zu nicht gerouteten IPs dabei sein, generiert Hetzner Abuse und schickt es (Achtung!) nicht an die hinterlegte Abuse-Adresse. Was man dagegen tun kann ist hier beschrieben: Hetzner

VPN-Tunnel zu Anonymisierungsdienst

Nicht zu empfehlen, sollte nur im Notfall verwendet werden wenn keine andere Option vorhanden ist!

https://wiki.freifunk-franken.de/w/Freifunk-Gateway_aufsetzen/VPN-Exit