Применение NAT к трафику из туннеля GRE в OpenBSD PF

Применение NAT к трафику из туннеля GRE в OpenBSD PF

Все

У меня есть маршрутизатор Cisco 877 и Linode VPS, работающий под управлением OpenBSD 5.9 с туннелем GRE, работающим между ними, который отлично работает, и я могу пинговать с любой стороны. Я настроил статический маршрут в маршрутизаторе Cisco для маршрутизации трафика на WhatsMyIP.org (чтобы проверить, работает ли он), но, как бы я ни старался, я не могу заставить PF OpenBSD применить NAT к трафику из туннеля GRE. Конфигурация анализируется, трафик маршрутизируется, но я не получаю никаких состояний, которые генерируются.

Возможно ли вообще то, чего я пытаюсь добиться? Моя топология и /etc.pf.confниже. (ПРИМЕЧАНИЕ: обновлено в соответствии с ответом 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

Топология: Топология туннеля GRE

Вывод ifconfig (IP-адреса отредактированы):

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

решение1

Мне не ясно, зачем вам статический маршрут на вашем маршрутизаторе, но, тем не менее, у вас нет правила в pf.conf, которое относится к NAT. Попробуйте что-то вроде следующего после ваших макросов в pf.conf:

match out on egress from ! ( egress ) nat-to ( egress )

Или:

match out on $int_if from ! ( $int_if ) nat-to ( $int_if )

Если это не сработает, опубликуйте вывод ifconfig.

решение2

Кажется, что:

pass out on $ext_if from $int_net to any nat-to $ext_if

... не работает, должно быть так:

match out on $ext_if from $int_net to any nat-to $ext_if
pass      on $ext_if from $int_net to any

Также полезно убедиться, что net.inet.ip.forwarding установлен на 1.

Связанный контент