[solucionado] [VPN] Dar acceso a peer a una ip y puerto específicos de mi red, denegar el resto

Comprobado, y era exactamente como había probado en uno de los tests que hice, habiendo deshabilitado las reglas de accept (6 y 7).
Se comporta como te comenté: me impide acceder al resto de recursos de la LAN, incluido salida a internet, pero sigo pudiendo acceder a todos los servicios de 192.168.10.3, incluido a la propia 192.168.10.3.
OK, ahora te entiendo. La regla funciona bien, solo que en lugar de rechazar todo lo no destinado a esa IP y puerto, sólo atiende a la IP, pero no al puerto. Es decir, está prohibido todo tráfico que no sea a esa IP, pero luego no aplica la segunda restricción del puerto.

He conseguido replicar el problema en local. Pensé que era un problema del fasttrack, que una vez establecida una conexión con la IP concreta, todo lo demás pasaría por fasttrack y de ahí el problema. No obstante, falla idéntico si deshabilitas el fasttrack, así que por eso no es.

Si tienes curiosidad, postea en el foro oficial esa regla concreta (o directamente la configuración de firewall que te he pasado) y lanza la pregunta. No sabría decirte si es un bug o directamente que tienen más prioridad los matchers de origen y destino de IP que los de los puertos, y es el comportamiento esperado. Eso te lo sabrá aclarar algún ingeniero de la casa, pero a mi se me escapa. Si te dan una explicación razonable y la quieres postear, nos sacas de dudas a todos.

Solución: las dos reglas, que como has visto no solo funcionan bien, sino que además lo hacen de una manera más clara y legible que con una única regla. Eso sí, mantén el orden del firewall tal y como te lo he mandado, sustituyendo esta regla por las otras dos, en la misma posición donde va ahora mismo esta.

Saludos!
 
Mira, justo te dieron la clave en la respuesta (obviando el tema de inventarte un chian sólo para esto):

If there are multiple conditions, they must all match, for rule to apply. So if you're looking for dst-address=!192.168.10.3 dst-port=!10019, it won't match for any port on 192.168.10.3 (or for port 10019 anywhere).

Es decir, esa regla bloqueará todo tráfico siempre y cuando el dst-address no sea la 10.3 y el puerto el puerto no sea el 10019. Es decir, si la IP es la 192.168.10.3, ignorará el puerto porque ya no cumple el primer match. Igualmente, si el puerto es el 10019, ignorará la IP puesto que no puedes hacer un match completo.

Desempolvando álgebra booleana de primero de carrera, me acordé de que esa frase me sonaba mucho... hasta que di con lo que era: el p.. teorema de Morgan (nunca pensé que volvería a usar esto), que dice que:

\overline {A\cdot B}\equiv \overline {A}+\overline {B}


\overline {A+B}\equiv \overline {A}\cdot \overline {B}

Obviando el primer matcher del src-address, tú estás en el segundo caso. No A (dst-address!=192.168.10.3) y No B (dst-port!=10019) es lo mismo que decir la inversa de A o B (la inversa de dst-address=192.168.10.3 ó dst-port=10019). Para que esa función OR te salga 1 (se aplique el drop), las dos entradas han de ser negativas, es decir, no machear ninguna de las dos condiciones. En el momento que una de las dos machee, el OR dará 1, y su inversa será un 0, no aplicando el drop.

Por eso el tráfico a la 192.168.10.3 está siempre abierto, a cualquier puerto.

Saludos!
 
Muchas gracias por la info pokoyo.
Por tanto, será mejor que deje las reglas tal como están, no?
 
Última edición:
Arriba