Linux-Router/-Server im Eigenbauein Projekt der Infinity-Community |
|
| Home | Infinity-Community | Bottom |
Diese Anleitung habe ich aus nur einem einzigen Grund geschrieben und zwar ist das der Mangel an knappen und verständlichen (deutschen) Anleitungen in diesem Bereich.
Bevor ich mir einen Router eingerichtet hatte, benutzte ich gelegentlich Netmeeting
um mit einem Kollegen kostenfrei über die Flatrate telefonieren zu können.
Netmeeting, dass das h.323 Protokoll zur Kommunikation verwendet, benutzt leider nicht nur feste Ports,
so dass ein einfaches Forwarden bestimmter Ports nicht zum Erfolg führen konnte.
Die Ports werden während des Verbindungsaufbaus durch die beiden Kommunikationspartner bestimmt.
Für die Kernelversion 2.2.x ist ein Kernelmodul schon längere Zeit verfügbar und Anleitungen befinden sich dazu reichlich im Internet. Doch jede moderne Distribution verwendet heute einen Kernel der 2.4er Serie. Daher zielt dieses HOWTO auf Benutzer der 2.4er Kernelversion.
Von der Netfilter-Homepage http://www.netfilter.org das aktuelle Patch-O-Matic (pom) Paket herunterladen und nach /usr/src/patch-o-matic-<Version> entpacken (als Benutzer root in der Konsole einloggen):
cp patch-o-matic-<version>.tar.gz /usr/src/ cd /usr/src bzip2 -dc patch-o-matic-<version>.tar.bz2 | tar -xf - mv /usr/src/patch-o-matic-<version> /usr/src/patch-o-matic
Aktuelle Kernelsourcen, entweder von www.kernel.org oder bevorzugt die Kernelsourcen die der Distribution beiliegen herunterladen und in das Verzeichnis "/usr/src/linux" installieren, die zweite Alternative ist besonders für "ungeübte" zu empfehlen (Anm. v. idef.x: allerginds kann das beim Patchen des Kernels Probleme bereiten, falls p-o-m die Original-Kernel-Quellen erwartet).
Falls die Kernelsourcen von www.kernel.org verwendet werden (dieser Schritt ist zu überspringen falls sich die Sourcen schon unter /usr/src/linux befinden, also z.B. falls sie von der Distributions-CD installiert wurden):
cp linux-2.4.21.tar.bz2 /usr/src/ cd /usr/src/ tar xfvj linux-2.4.21.tar.bz2 mv /usr/src/linux-2.4.21 /usr/src/linux
(Anm. v. idef.x: statt das neue Source-Verzeichnis mit mv... umzubenennen empfiehlt es sich, mittels ln einen symbolischen Link "/usr/src/linux" auf das neue neue Source-Verzeichnis zu setzen)
Installieren der Kernelerweiterung:In das Verzeichnis "/usr/src/patch-o-matic" wechseln: cd /usr/src/patch-o-matic
./runme extraDie Frage nach dem Verzeichnis in dem die Kernelsourcen liegen mit "Enter" bestätigen.
Eine Abfrage wird nun gestartet, in der man die Kernelerweiterungen auswählen kann. Interessant
ist in diesem Fall nur das "h323-conntrack-nat" - Modul, dort muss die Frage nach der Installation
mit Ja (y) beantwortet werden, alle anderen Fragen können mit "N"ein beantwortet werden
(also einfach "Enter" drücken).
Hat man die Kernelsourcen installiert, die der Distribution beiliegen, dann muss nur noch aus dem "/boot" Verzeichnis die Konfigurationsdatei in das "/usr/src/linux" Verzeichnis kopiert werden:
cp /boot/vmlinuz.conf /usr/src/linux/.config (Wichtig ist an dieser Stelle der führende Punkt)
cd /usr/src/linux
Um das Modul zu kompilieren muss nun folgende Einstellung gesetzt werden:
make menuconfig
Es wird nun das ncurses basierte Kernelkonfigurationsmenü gestartet in dem folgendes Modul aktiviert werden muss: "Networking Options" --> "IP Netfilter Configuration"--> "H.323 (netmeeting) support"
Das Kernelkonfigurationsmenü kann nun wieder verlassen werden, wichtig ist es die Frage nach dem Speichern der Konfigurationsdatei mit "Yes" zu beantworten.
make dep
... und nach erfolgreichem Ausführen:
make && make modules bzImage modules_install
... dies sorgt nun dafür dass der neue Kernel kompiliert und die entsprechenden Module
kompiliert und installiert werden.
cp /usr/src/linux/arch/i386/boot/bzImage /boot/vmlinuz-2.4.21
... der neue Kernel wird mit voranstehendem Befehl nach /boot kopiert.
Nun muss noch der Bootloader angepasst werden, damit der neue Kernel auch geladen wird. Dazu sind die jeweiligen Anleitungen (meist lilo oder grub) zu konsultieren.
Sollen die Kernelsourcen von www.kernel.org verwendet werden dann muss als erstes der gesamte Kernel konfiguriert werden:
cd /usr/src/linux make menuconfig
An dieser Stelle müssen nun alle für das eigene System notwendigen Komponenten ausgewählt werden (dazu sind die HOWTO's zur Kernelkompilation heranzuziehen, eine Erklärung an dieser Stelle würde den Rahmen dieser Anleitung sprengen).
Die Option: "H.323 (netmeeting) support" als Modul in: "Networking Options" --> "IP Netfilter Configuration" muß aktiviert werden
make dep und make && make modules bzImage modules_install kompiliert und installiert die neuen Kernelmodule und den Kernel.
cp /usr/src/linux/arch/i386/boot/bzImage /boot kopiert den neuen Kernel in das Bootverzeichnis
Nun muss noch der Bootloader angepasst werden, damit der neue Kernel auch geladen wird. Dazu sind die jeweiligen Anleitungen (meist lilo oder grub) zu konsultieren.
h.323-Modul laden und testen:Nach (hoffentlich) erfolgreichem Kompilieren des Kernels und einem Reboot, kann nun das neue Modul getestet werden:
modprobe ip_conntrack_h323 sollte unser neues Modul erfolgreich laden.
lsmod sollte nun unter anderem das neu kompilierte Modul auflisten.
Das Kernelmodul wollen wir natürlich nicht nach jedem Neustart neu von Hand einbinden, dazu kann das Modul z.B. bei Debian in die Datei "/etc/modules" eingetragen werden. Natürlich kann der Befehl modprobe ip_conntrack_h323 auch in ein Skript eingebunden werden dass beim Starten ausgeführt wird (Anm. v. idef.x: Im Rahmen unserer DSL-Firewall kann das Modul innerhalb unseres Firewall-Skriptes geladen werden. Neben dem Modul ip_conntrack_h323 ist unbedingt auch das Modul ip_nat_h323 zu laden.).
Damit ist die Konfiguration des Kernels abgeschlossen. Glückwunsch den schwierigsten Teil hast Du hinter Dich gebracht!
Feste TCP/IP Ports die vom h.323 Protokoll verwendet werden:
Eine Möglichkeit des Portforwardings ist das Anfügen der unten stehenden Regeln an ein bestehendes Iptables-Skript.
Die Regeln können auch in der Datei "/etc/ppp/ipup" gespeichert werden, dann werden die Befehle
bei jedem Verbindungsaufbau ausgeführt.
Dabei müssen eventuell die Variablen "wsip" und "exif" angepasst werden, also für ersteres ist
die IP des Rechners auf dem die Kommunikationssoftware später laufen soll einzutragen.
"ppp0" muss gegebenenfalls geändert werden, je nachdem über welches
Medium eine Verbindung zum Internet hergestellt wird, dabei ist "ppp0" für Modem- und
DSL-Verbindungen zu wählen und "ippp0" für ISDN-Verbindungen.
Im Zweifelsfall sollte ein "ifconfig" in der Konsole als "root" Aufklärung verschaffen.
# Portforwarding für Netmeeting # Rechner auf den geforwardet werden soll (Workstation IP) wsip="192.168.100.30" # Bezeichnung des externen Interfaces (ppp für Modem- und DSL ? Verbindungen) exif="ppp0" iptables -I PREROUTING -t nat -p tcp -i $exif --dport 389 -j DNAT --to $wsip:389 iptables -I PREROUTING -t nat -p tcp -i $exif --dport 522 -j DNAT --to $wsip:522 iptables -I PREROUTING -t nat -p tcp -i $exif --dport 1503 -j DNAT --to $wsip:1503 iptables -I PREROUTING -t nat -p tcp -i $exif --dport 1720 -j DNAT --to $wsip:1720 iptables -I PREROUTING -t nat -p tcp -i $exif --dport 1731 -j DNAT --to $wsip:1731
Andernfalls sind die entsprechenden Ports in die bestehende Firewall
(z.B.: SuSE Firewall 2) einzufügen, bzw. die Regeln anzupassen.
Es ist auch noch zu beachten, das die oben genannten Ports nicht durch die Firewall
blockiert werden!
| Home | Infinity-Community | Top |