Contents
Public IP Setup auf Debian
Dieses Howto beschreibt das Public IP Setup für Debian/Ubuntu. Howtos für andere Firmware Images und grundsätzliche Informationen können auf der Seite PublicIP gefunden werden.
- Das Setup für andere Linuxvarianten am Server unterscheidet sich nur an der Stelle der Schnittstellenkonfiguration (/etc/networks und ff-public s.u.) und bleibt ansonsten gleich.
Vorbereitungen
Wie schon auf PublicIP beschrieben verwendet dieses Howto einen etwas anderen Ansatz als die anderen Public IP Howtos.
Die Idee bei diesem Setup ist, dass man einfach ein zusätzliches kleines Subnetz zwischen dem Router am Dach und dem Rechner, den man z.B. als Server betreiben will schaltet. Wenn man dieses Subnetz dann per OLSR am Router announced wird der Server innerhalb des Funkfeuer Netzes direkt erreichbar. Dies befähigt ihn dazu, direkt mit dem Gateway zu kommunizieren ohne selbst OLSR zu benötigen. Genau diese direkte Verbindung ist auch das einzige, das nötig ist, um eine Public IP zu benützen.
((|)) WiFi-IP (10.0.0.0/8) | o public IP (193.33.15x.x/32) | |........ ___|____ ___|____ : [ 0xff ] [ Linux- ] : Legende: [_Router_] [_Server_] : -------- I I : ((|)) ... wireless Interface |--------- ( LAN-subnetz ) ---------| : I ... LAN Interface (wired) ^ 10.12.230.x/30 : o ... Tunnel Endpoint Interface : : .. ... IP-IP Tunnel : : -- ... LAN :............ ( IP-IP tunnel ) ................: 10.12.34.56 <-> 193.33.15x.x/32
Dafür muss der Router am Dach vorbereitet werden. Dieser Router benötigt aber nicht unbedingt unser spezielles Public-IP Firmwareimage, es kann jede (funkfeuerfähige!) Firmware verwendet werden (aber die spezielle Firmware funktioniert auch, solange die Public IP unkonfiguriert bleibt).
Wie man also schon erkennen kann ist ein zusätzliches Subnetz vonnöten, und da diese - wie bei allen anderen IP Adressen - eindeutig innerhalb des Netzes sein muss, muss ein passendes von uns zugewiesen werden. Also der erste Schritt besteht darin neben der Public IP auch noch ein kleines Subnetz bei uns zu holen.
Anm.: Überlege vor der Anforderung, wieviele IPs du in diesem Subnetz betreiben willst - dieses HOWTO geht von zwei aus (eine am Router, eine am Server), was das Minimum ist und normalerweise ausreichen wird. Daraus ergibt sich die zu verwendende Subnetzmaske (s.u.).
Danach kann mit der Konfiguration begonnen werden.
Konfiguration OLSR Router
Im folgenden wird davon ausgegangen das der OLSR Router über dessen Lan Port mit Server verbunden ist. Sollte der Standort aus mehr als einen Router bestehen so muss bei diesem Router der WAN Port für die Verbindung zu den restlichen Routern des Standorts verwendet werden.
OLSR: Da wir auf dem Subnetz-Interface nicht mit OLSR arbeiten (Protokoll = statisch) müssen OLSR dazu bringen das Subnetz dem restlichen Netz bekannt zu machen. Dies kann man per HNA machen. In die Zeile für HNA4 trägt man dafür das Subnetz ein. Dabei ist darauf zu achten das hier die CIDR Notation für die Netzmaske zu verwenden ist (also z.B. /24 statt 255.255.255.0).
- Beim umrechnen von IP Addresse und Netzmaske in die CIDR Notation hilft z.B. das Tool ipcalc:
# ipcalc 10.12.230.20 255.255.255.252 Address: 10.12.230.20 00001010.00001100.11100110.000101 00 Netmask: 255.255.255.252 = 30 11111111.11111111.11111111.111111 00 Wildcard: 0.0.0.3 00000000.00000000.00000000.000000 11 => Network: 10.12.230.20/30 00001010.00001100.11100110.000101 00 HostMin: 10.12.230.21 00001010.00001100.11100110.000101 01 HostMax: 10.12.230.22 00001010.00001100.11100110.000101 10 Broadcast: 10.12.230.23 00001010.00001100.11100110.000101 11 Hosts/Net: 2 Class A, Private Internet
in der Zeile Network steht hier die Ausgabe des Netzes in CIDR Notation 10.12.230.20/30. Genau das muss in dem Feld im Webinterface eingetragen.
Weiters muss noch die Public IP selbst announced werden und eine statische Router dafür eingetragen sein. Also zusätzlich zu dem Subnetz noch <public ip>/32 in das Feld für HNA4 sodass das Feld dann z.B. so aussieht:
10.12.230.20/30;193.33.15x.xx/32
Damit wissen jetzt alle anderen Router im Netzwerk wo das Subnetz bzw die Public IP zu finden sind. Jetzt muss nur noch dem Router gesagt werden wohin er die Public IP Pakete schicken soll - nämlich zu unserem Server. Das konfigurieren wim am LAN:
LAN: Im Webinterface unter Verwaltung->LAN Zunächst muss man dem LAN Port des besagten Routers eine IP Adresse des von uns zugewiesenen Subnetzes konfigurieren. Wichtig ist dabei:
- LAN-Protokoll: statisch
- LAN-IP: die routerseitige IP im Subnetz (10.12.230.xx)
- LAN-Netzmaske: richtige Subnetzmaske verwenden (in unserem Beispiel hier 255.255.255.252)
wie immer keine default-route
Ausserdem müssen sowohl NAT als auch die Firewall ausgeschaltet sein.
Damit der Router weis, wo die Public IP zu finden ist, muss man eine statische Route eintragen:
193.33.15x.xx:255.255.255.255:<ip des server im 10.12er subnetz>:1:vlan0
(Anm.: je nach router kann es sein dass ein anderes Interface als vlan0 gültig ist. z.B. br0. Herauszufinden ist das im Webinterface unter Status -> Übersicht -> Schnittstellenkonfiguration -> lan_ifname oder mit dem Kommando nvram show | grep lan_ifname=)
Reboot: Nachdem alle obigen settings vorgenommen worden sind, muss man den Router rebooten.
Konfiguration Server
Voraussetzungen
Zunächst mal muss unter Debian das Paket iproute2 installiert sein. Sollte das nicht der Fall sein einfach installieren:
aptitude update aptitude install iproute2
Zusätzlich muss im Kernel IP-IP tunneling kompiliert und das Modul ggf. geladen sein. Debian/Ubuntu bringen dieses Modul im Standardkernel mit. Bei selbstgebautem Kernel: (Option CONFIG_NET_IPIP unter "Networking Options" -> "TCP/IP Networking" ). Das Modul heisst ipip.
Konfiguration Auf der Seite des Servers kann man das Netzwerkinterface über die Datei /etc/network/interaces konfigurieren. Wichtig ist dabei das in der Datei kein gateway angegeben wird (auch bei keinem anderen Interface) denn genau diesen müssen wir später in etwas anderer Form selbst eintragen. Eine Beisipielkonfiguration ist hier zu sehen:
# The loopback network interface auto lo iface lo inet loopbackq # The primary network interface # bridge for virtualbox auto eth0 iface eth0 inet static address <ip addr> netmask <netmask> up /etc/network/ff-public up down /etc/network/ff-public down
Die letzten beiden Zeilen zeigen auf ein Script /etc/network/ff-public das wir jetzt anlegen und editieren müssen. Also einfach mit dem Lieblingseditor erstellen und folgendes reinkopieren:
#! /bin/sh # GATEWAY="10.12.34.56" PUBLIC_IP="<public ip einsetzen>" OLSR_ROUTER="<ip des olsr routers einsetzen>" case "$1" in up) ip tunnel add public mode ipip local $PUBLIC_IP remote $GATEWAY ttl 255 ip link set up dev public ip addr add dev public $PUBLIC_IP ip route add default dev public src $PUBLIC_IP ip route add 10.0.0.0/8 via $OLSR_ROUTER ip route add 193.33.150.0/23 via $OLSR_ROUTER ;; down) ip route del default dev public src $PUBLIC_IP ip route del 10.0.0.0/8 via $OLSR_ROUTER ip route del 193.33.150.0/23 via $OLSR_ROUTER ip tunnel del public ;; *) echo "Usage: $0 {up|down}" exit 1 ;; esac exit 0
danach kann mit
# ifup eth0
das Interface in Betrieb genommen werden. Dann muss man nur noch den Nameserver konfigurieren. Also in die Datei /etc/resolv.conf folgendes reinkopieren:
search graz.funkfeuer.at nameserver 10.12.0.10
Danach sollte das Setup funktionieren und der Server ist aus dem Internet unter dessen Public IP erreichbar.
(Anm.: wenn der Server noch weitere Netwerkverbindungen besitzt, z.B. ein internes LAN oder eine weitere Internetverbindung, wird das routing eine Spur komplizierter. Man kommt dann kaum ohne policy routing und mehreren default routen am Server aus.)
Sicherheitshinweis
Der Server hängt jetzt tatsächlich und wirklich im echten Internet. Da sich dort nicht ausschliesslich nette Menschen und freundliche Software tummeln sei der Besitzer einer Public IP dazu angehalten, seine Firewall und andere sicherheitsrelevanten Einstellungen zu kontrollieren. Im speziellen sei auf ports wie 25 (SMTP), 135:137, 445 (netbios), rdp, samba, NFS etc. hingewiesen.