Todos
Eu tenho um roteador Cisco 877 e um Linode VPS rodando OpenBSD 5.9 com um túnel GRE rodando entre eles, o que funciona muito bem e posso fazer ping de qualquer lado. Eu configurei uma rota estática no roteador Cisco para rotear o tráfego para WhatsMyIP.org (para que eu possa ver se está funcionando), mas, por mais que tente, não consigo fazer com que o PF do OpenBSD aplique NAT ao tráfego do túnel GRE . A configuração analisa as rotas de tráfego, mas não recebo nenhum estado sendo gerado.
O que estou tentando alcançar é possível? Minha topologia e /etc.pf.conf
estão abaixo. (NOTA: Atualizado de acordo com a resposta 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
Saída ifconfig (IPs editados):
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
Responder1
Não está claro para mim por que você precisa de uma rota estática em seu roteador, mas, independentemente disso, você não tem nenhuma regra em seu pf.conf relacionada ao NAT. Tente algo como o seguinte após suas macros no pf.conf:
match out on egress from ! ( egress ) nat-to ( egress )
Ou:
match out on $int_if from ! ( $int_if ) nat-to ( $int_if )
Se isso não funcionar, poste a saída do ifconfig.
Responder2
Parece que:
pass out on $ext_if from $int_net to any nat-to $ext_if
... não funciona, tem que ser assim:
match out on $ext_if from $int_net to any nat-to $ext_if
pass on $ext_if from $int_net to any
Além disso, ajuda a garantir que net.inet.ip.forwarding esteja definido como 1.