.png)
(Solución encontrada, ver más abajo...)
El servidor (CentOS 7) tiene varias IP públicas, que se configuran mediante los ifcfg-eth0:0
archivos 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_web
que 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-interface
y --change-interface
varios otros comandos en varios órdenes, pero eth0:0
no 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 destination
etiqueta 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.xml
archivo (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 destination
etiqueta 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 addr
comando, verá que todas las direcciones están asignadas a la interfaz principal y eth0:0
simplemente 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.