![Anwenden von NAT auf Datenverkehr aus dem GRE-Tunnel in OpenBSD PF](https://rvso.com/image/89144/Anwenden%20von%20NAT%20auf%20Datenverkehr%20aus%20dem%20GRE-Tunnel%20in%20OpenBSD%20PF.png)
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.conf
sind 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
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.