Firewalld mit einem IP-Alias ​​(eth0:0)

Firewalld mit einem IP-Alias ​​(eth0:0)

(Lösung gefunden, siehe unten...)

Der Server (CentOS 7) hat mehrere öffentliche IPs, die über die üblichen Konfigurationsdateien eingerichtet werden ifcfg-eth0:0und 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-interfaceund --change-interfaceverschiedene andere Befehle in unterschiedlicher Reihenfolge, aber eth0:0es 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:

destinationDie 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.xmlDatei (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: destinationPro 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 addrBefehl verwenden, werden Sie sehen, dass die Adressen alle der Hauptschnittstelle zugewiesen sind und dies eth0:0einfach 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.

verwandte Informationen