HTL
NGBler
- Registriert
- 3 Juli 2018
- Beiträge
- 213
- Thread Starter Thread Starter
- #21
In den meisten englischsprachigen Foren wird berichtet das ein Port freigegeben werden muss. Ich fand nur eine genaue Erklärung in deutsch die den Vorgang beschreibt, vielleicht hilft es Dir?
Code:
So, ich habe es jetzt am Laufen - hier kurz, wie's geht:
1. Autodiscovery mit Avahi/mDNS freigeben:
Das einfachste ist Autodiscovery mit Avahi (also mDNS/Zeroconf/Bonjour auf Port 5353). Dafür muß auf der Firewall für die Zone, in der man ist, der mDNS-Service freigegeben werden (also z.B. mit firewall-cmd --zone=home --add-service=mdns).
Mit avahi-browse -at kann man prüfen, welche Geräte auf dem lokalen Netzwerk für Autodiscovery sichtbar sind.
Dann funktioniert hp-setup, wenn man unter "Advanced options" als "Network discovery method" Avahi anwählt.
2. Autodiscovery mit SLP freigeben
Manchmal kann Avahi ausreichend sein, z.B. wenn man die Methode nicht auswählen kann (Beispiel: unter VueScan einen HP-Netzwerkscanner einrichten). HPLIP verwendet standardmäßig SLP, das man entsprechend auf der Firewall freigeben muß. Das Problem ist dabei, daß die Standard-SLP-Freigabe auf Port 427 in der Firewall nicht reicht - hp-setup sendet seine SLP-Pakete von hohen UDP-Ports. Die Antwortpakete kommen dementsprechend nicht auf dem Standardport 427 an und bleiben in der Firewall hängen.
Um das zu lösen, muß man bei ausgehenden SLP-Verbindungen dynamisch Ausnahmen für die Antwortpakete in der Firewall anlegen lassen. Standardmäßig kann die Firewall das für FTP, SIP usw., nicht aber für SLP. Hierfür brauchen wir die zu Netfilter gehörenden Pakete conntrackd und conntrack-tools, die Hilfsprogramme für eine Rieihe weiterer Protokolle enthalten. Damit geht die Freigabe wie folgt:
- In der Conntrack-Konfigurationsdatei (/etc/conntrackd/conntrackd.conf) die Auskommentierung für den Abschnitt "Helper" und für den SLP-Helper entfernen - für alle anderen Helper nicht unbedingt
- Helper für SLP aktivieren: nfct add helper slp inet udp (nfct kommt aus dem Conntrack-Tools-Paket)
- Conntrackd starten (systemctl start conntrackd.service)
- Firewallregeln für ausgehende SLP-Pakete anlegen, mit denen dafür das Connection tracking aktiviert wird:
Code
# firewall-cmd --direct --get-all-rules
ipv4 raw OUTPUT 0 -m addrtype --dst-type MULTICAST -p udp --dport 427 -j CT --helper slp
ipv4 raw OUTPUT 0 -m addrtype --dst-type BROADCAST -p udp --dport 427 -j CT --helper slp
Damit läuft dann auch die Autodiscovery mit SLP.
Wenn das Ganze einen Reboot überstehen soll, muß man die Firewallregeln permanent machen und den conntrackd-Dienst aktivieren. Außerdem muß man dafür sorgen, daß *vor* conntrackd auf jeden Fall die Helper aktiviert werden, und *nach* conntrackd die Firewallregeln neu geladen werden. Das geht z.B. mit einem Drop-in für conntrackd.service:
Code
calypso:~ # cat /etc/systemd/system/conntrackd.service.d/nfct.conf
[Service]
ExecStartPre=-/usr/sbin/nfct add helper slp inet udp
ExecStartPost=/usr/bin/firewall-cmd --reload
Damit funktioniert die Autodiscovery auch nach einem Neustart, ohne daß man die Firewall offen stehen lassen muß.