Firewalld con un alias de IP (eth0:0)

Firewalld con un alias de IP (eth0:0)

(Solución encontrada, ver más abajo...)

El servidor (CentOS 7) tiene varias IP públicas, que se configuran mediante los ifcfg-eth0:0archivos de configuración habituales y funcionan bien. Estoy intentando adaptarme a firewalld (proveniente de iptables). Me gusta poder especificar puertos abiertos por alias de IP; con iptables esto se hizo simplemente configurando la IP de destino para que coincida con cualquier alias que necesite el puerto.

Ipensamientocon firewalld podría aplicar una zona diferente a cada interfaz para lograr el mismo efecto, sin embargo parece que no puedo hacerlo.

Empezamos con:

# firewall-cmd --get-active-zones
public
  interfaces: eth0 eth0:0
trusted
  interfaces: eth1

Creé una nueva zona public_webque quería usar paraeth0: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

Pero...

# firewall-cmd --get-active-zones
public
  interfaces: eth0 eth0:0
trusted
  interfaces: eth1

Intenté --remove-interfacey --change-interfacevarios otros comandos en varios órdenes, pero eth0:0no cedo. Parece que no puedo encontrar ninguna documentación sobre el uso de alias, por lo que no estoy seguro de si esta es la forma correcta de lograr lo que me gustaría.

Gracias a todos.


Solución:

La solución es utilizar la destinationetiqueta en un archivo de servicio; solo se puede utilizar una vez por servicio.

Entonces, digamos que desea el puerto 443 en 87.98.256.512, haga una copia del https.xmlarchivo (se recomienda no tocar los originales) /etc/firewalld/services, aquí usaréhttps-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>

Entonces

# firewall-cmd --permanent --zone=public --add-service=https-admin
success
# firewall-cmd --reload
success
# firewall-cmd --zone=public --list-services
http https-admin

Y finalmente confirme esto con 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

Recuerde: solo una destinationetiqueta por servicio, así que cree múltiples servicios si ese es su requisito.

Respuesta1

Toda la funcionalidad de alias de interfaz es un residuo del pasado. En realidad, no crea una interfaz separada. No ha necesitado utilizar alias para asignar varias IP a una única interfaz durante mucho tiempo. Debido a que no es una interfaz "real", su software de firewall no puede tratarla como una interfaz real. Si usa el ip addrcomando, verá que todas las direcciones están asignadas a la interfaz principal y eth0:0simplemente se considera una etiqueta para esa dirección.

Con todo eso en mente, no estoy del todo seguro de qué debes hacer para ajustar tu firewall. Sospecho que es posible que deba especificar los puertos por IP, y no por la dirección IP ni por el alias.

información relacionada