Anwenden von NAT auf Datenverkehr aus dem GRE-Tunnel in OpenBSD PF

Anwenden von NAT auf Datenverkehr aus dem GRE-Tunnel in OpenBSD PF

Alle

Ich habe einen Cisco 877-Router und einen Linode VPS mit OpenBSD 5.9 und einem dazwischen laufenden GRE-Tunnel, der großartig funktioniert und den ich von beiden Seiten anpingen kann. Ich habe im Cisco-Router eine statische Route eingerichtet, um den Verkehr zu WhatsMyIP.org umzuleiten (damit ich sehen kann, ob es funktioniert), aber so sehr ich es auch versuche, ich kann OpenBSDs PF nicht dazu bringen, NAT auf den Verkehr aus dem GRE-Tunnel anzuwenden. Die Konfiguration wird analysiert, der Verkehr wird umgeleitet, aber ich bekomme keine Status generiert.

Ist das, was ich erreichen möchte, überhaupt möglich? Meine Topologie und /etc.pf.confsind unten aufgeführt. (HINWEIS: Aktualisiert gemäß Binks Antwort)

#       $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

Topologie: GRE-Tunneltopologie

ifconfig-Ausgabe (IPs redigiert):

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

Antwort1

Mir ist nicht klar, warum Sie eine statische Route auf Ihrem Router benötigen, aber Sie haben in Ihrer pf.conf keine Regel, die sich auf NAT bezieht. Versuchen Sie nach Ihren Makros in pf.conf etwas wie das Folgende:

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

Oder:

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

Wenn das nicht funktioniert, posten Sie die Ausgabe von ifconfig.

Antwort2

Es scheint, dass:

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

... geht nicht, dann muss es das hier sein:

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

Außerdem ist es hilfreich, sicherzustellen, dass net.inet.ip.forwarding auf 1 gesetzt ist.

verwandte Informationen