Todo
Tengo un enrutador Cisco 877 y un VPS Linode que ejecuta OpenBSD 5.9 con un túnel GRE en el medio, que funciona muy bien y puedo hacer ping desde cualquier lado. He configurado una ruta estática en el enrutador Cisco para enrutar el tráfico a WhatsMyIP.org (para poder ver si está funcionando) pero, por más que lo intento, no puedo lograr que el PF de OpenBSD aplique NAT al tráfico desde el túnel GRE. . La configuración analiza las rutas de tráfico, pero no genero ningún estado.
¿Es posible lo que estoy tratando de lograr? Mi topología y /etc.pf.conf
están a continuación. (NOTA: actualizado según la respuesta de Bink)
# $OpenBSD: pf.conf,v 1.54 2014/08/23 05:49:42 deraadt Exp $
#
# See pf.conf(5) and /etc/examples/pf.conf
set skip on lo
block return # block stateless traffic
ext_if = "em0"
int_if = "gre0"
int_net = "192.168.2.0/24"
pass out on $ext_if from $int_net to any nat-to ($ext_if)
pass # establish keep-state
# By default, do not permit remote connections to X11
block return in on ! lo0 proto tcp to port 6000:6010
pass quick on gre proto gre no state
Salida de ifconfig (IP redactadas):
lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 32768
priority: 0
groups: lo
inet6 ::1 prefixlen 128
inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3
inet 127.0.0.1 netmask 0xff000000
em0: flags=18843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST,MPSAFE> mtu 1500
lladdr f2:3c:91:0a:5b:a9
priority: 0
groups: egress
media: Ethernet autoselect (1000baseT full-duplex)
status: active
inet E.F.G.H netmask 0xffffff00 broadcast E.F.G.255
enc0: flags=0<>
priority: 0
groups: enc
status: active
pflog0: flags=141<UP,RUNNING,PROMISC> mtu 33144
priority: 0
groups: pflog
gre0: flags=9011<UP,POINTOPOINT,LINK0,MULTICAST> mtu 1476
priority: 0
groups: gre
tunnel: inet A.B.C.D -> E.F.G.H
inet 172.16.56.1 --> 172.16.56.2 netmask 0xffffff00
Respuesta1
No me queda claro por qué necesita una ruta estática en su enrutador, pero, de todos modos, no tiene ninguna regla en su pf.conf relacionada con NAT. Pruebe algo como lo siguiente después de sus macros en pf.conf:
match out on egress from ! ( egress ) nat-to ( egress )
O:
match out on $int_if from ! ( $int_if ) nat-to ( $int_if )
Si eso no funciona, publique el resultado de ifconfig.
Respuesta2
Parece que:
pass out on $ext_if from $int_net to any nat-to $ext_if
... no funciona, tiene que ser esto:
match out on $ext_if from $int_net to any nat-to $ext_if
pass on $ext_if from $int_net to any
Además, es útil asegurarse de que net.inet.ip.forwarding esté configurado en 1.