Linux-Router/-Server im Eigenbau

ein Projekt der Infinity-Community


h.323 / Netmeeting "HOWTO"
(eine kurze Anleitung von jogys)


Inhalt


Sinn und Zweck dieses HOWTO's

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.


Voraussetzungen


Erstellen und installieren des Kernelmoduls

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 extra

Die 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).

Anschließend folgt die Kernelkonfiguration:

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!


Einrichten des Portforwarding

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!


Weiterführende Links: