(Lösung gefunden, siehe unten...)
Der Server (CentOS 7) hat mehrere öffentliche IPs, die über die üblichen Konfigurationsdateien eingerichtet werden ifcfg-eth0:0
und einwandfrei funktionieren. Ich versuche, mich an Firewalld anzupassen (von iptables kommend). Ich möchte offene Ports pro IP-Alias angeben können – mit iptables wurde dies einfach dadurch erreicht, dass die Ziel-IP so eingestellt wurde, dass sie mit dem Alias übereinstimmte, der den Port benötigte.
ICHGedankeMit Firewalld könnte ich jeder Schnittstelle eine andere Zone zuweisen, um denselben Effekt zu erzielen, aber das ist anscheinend nicht möglich.
Wir beginnen mit:
# firewall-cmd --get-active-zones
public
interfaces: eth0 eth0:0
trusted
interfaces: eth1
Ich habe eine neue Zone erstellt public_web
, die ich verwenden wollte füreth0:0
# firewall-cmd --permanent --new-zone=public_web
success
# firewall-cmd --permanent --zone=public_web --add-service=http
success
# firewall-cmd --permanent --zone=public_web --add-interface=eth0:0
success
# firewall-cmd --reload
success
Aber...
# firewall-cmd --get-active-zones
public
interfaces: eth0 eth0:0
trusted
interfaces: eth1
Ich habe es versucht --remove-interface
und --change-interface
verschiedene andere Befehle in unterschiedlicher Reihenfolge, aber eth0:0
es geht nicht. Ich kann nirgends Dokumentation zur Verwendung von Aliasnamen finden, daher bin ich mir nicht sicher, ob dies überhaupt der richtige Weg ist, um das zu erreichen, was ich möchte?
Danke an alle.
Lösung:
destination
Die Lösung besteht darin, das Tag in einer Servicedatei zu verwenden . Es kann nur einmal pro Service verwendet werden.
Nehmen wir also an, Sie möchten Port 443 auf 87.98.256.512, erstellen Sie eine Kopie der https.xml
Datei (wir empfehlen, die Originale nicht zu verändern) /etc/firewalld/services
, hier verwende ichhttps-admin.xml
<?xml version="1.0" encoding="utf-8"?>
<service>
<short>HTTPS for 87.98.256.512</short>
<description>...</description>
<port protocol="tcp" port="443"/>
<destination ipv4="87.98.256.512" />
</service>
Dann
# firewall-cmd --permanent --zone=public --add-service=https-admin
success
# firewall-cmd --reload
success
# firewall-cmd --zone=public --list-services
http https-admin
Und bestätigen Sie dies abschließend mit iptables
Chain IN_public_allow (1 references)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 87.98.256.512 tcp dpt:443 ctstate NEW
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 ctstate NEW
Denken Sie daran: destination
Pro Dienst ist nur ein Tag zulässig. Erstellen Sie also einfach mehrere Dienste, wenn Sie das benötigen.
Antwort1
Die gesamte Aliasing-Funktionalität der Schnittstelle ist ein Überbleibsel aus der Vergangenheit. Es wird nicht wirklich eine separate Schnittstelle erstellt. Sie mussten schon lange keine Aliase mehr verwenden, um einer einzelnen Schnittstelle mehrere IPs zuzuweisen. Da es sich nicht um eine „echte“ Schnittstelle handelt, kann Ihre Firewall-Software sie nicht wie eine echte Schnittstelle behandeln. Wenn Sie den ip addr
Befehl verwenden, werden Sie sehen, dass die Adressen alle der Hauptschnittstelle zugewiesen sind und dies eth0:0
einfach als Bezeichnung für diese Adresse betrachtet wird.
Vor diesem Hintergrund bin ich mir nicht ganz sicher, was Sie tun müssen, um Ihre Firewall anzupassen. Ich vermute, Sie müssen die Ports per IP angeben und nicht per IP-Adresse und nicht per Alias.