1 votos

pf: Añadir dinámicamente una regla al anclaje nat

Me conecto a un servidor VPN de Cisco y quiero compartir esa conexión por wifi.

Utilizando la función de compartir Internet de MacOS, sólo puedo seleccionar una interfaz para compartir: mi adaptador LAN o la conexión VPN. Los clientes de la wifi sólo pueden conectarse a la iNet o a la VPN.

El servidor VPN sólo está creando una conexión de túnel dividido - y cambiar a un túnel completo no es, desafortunadamente, una opción.

Configurar mis reglas nat directamente en /etc/pf.conf/ funciona bien y resuelve mi problema hasta cierto punto.

Quiero script y añadirlos dinámicamente usando un nat-anchor . Fijar el ancla con load para una configuración externa funciona, sin embargo cuando defino mi ancla en pf.conf y tratar de poblar mis reglas usando pfctl así:

echo "                                                                                                                                      
nat on en8 from bridge100:network to any -> (en8)
nat on utun1 from bridge100:network to any -> (utun1)" | pfctl -a my.anchor -f -

o como una sola línea:

echo -e "nat on en8 from bridge100:network to any -> (en8)\nnat on utun1 from bridge100:network to any -> (utun1)\n" | pfctl -a my.anchor  -f -

(con o sin el final \n )

Puedo confirmar que las reglas se establecen en mi ancla utilizando pfctl -sn -a my.anchor pero el enrutamiento real no cambia.

¿Qué estoy haciendo mal?

0 votos

Demasiado texto por unidad lógica

0 votos

Déjame acortarlo para ti: ¿Cómo es que añadir una regla nat a un ancla usando pfctl no funciona en MacOS?

0 votos

Todavía no se ha aclarado. ¿No agrega o lo hace pero sin cambiar la política de NAT?

0voto

nate Puntos 11

Esto suena a que las reglas de nivel superior (las que tienen el ancla vacía) no tienen una referencia a su ancla nat. Tiene que asegurarse de que hay una regla nat con un "nat-anchor " en las reglas de nivel superior que enlaza con su ancla.

En general, para que cualquier regla se aplique, debería poder rastrear las reglas de inclusión de "nat-anchor" (o "WHATE-anchor") desde el nivel superior hasta la configuración de su ancla.

Puedes usar 'pfctl -sn' para ver las reglas nat de nivel superior. Debería ver una línea como esta:

nat-anchor "myanchor" all

Para aquellos con anclajes más profundos, se puede volcar todo para todos los anclajes utilizando este script. La impresión recursiva mencionada en la página man tiene un error y no funciona (imprime algunas cosas y 'DIOCGETRULES').

De todos modos, sólo asegúrese de que cada ancla de root a sus reglas tiene un nat-anchor y es explícito, o si hay comodines * s en la cadena de anclaje (era sólo "myanchor" aquí), entonces hay algún ancla intermedia o final que coincide con el comodín (los comodines coinciden con un solo nivel).

Respuesta relacionada aquí: pfctl - cómo añadir un ancla y hacerla activa / cargarla

0voto

xoryves Puntos 101

Creo que tienes que llamar a sudo sysctl -w net.inet.ip.forwarding=1 para activar el reenvío de paquetes.

No es necesario modificar /etc/pf.conf . Debería ser suficiente, si cambias -a my.anchor a -a 'com.apple/my.anchor' .

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X