https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=284944

            Bug ID: 284944
           Summary: pf: incorrect ICMP error translation in af-to inet
           Product: Base System
           Version: 15.0-CURRENT
          Hardware: Any
                OS: Any
            Status: New
          Severity: Affects Only Me
          Priority: ---
         Component: kern
          Assignee: b...@freebsd.org
          Reporter: l...@hemlock.eden.le-fay.org

it's possible i'm doing something wrong here since i thought this problem
should be fixed by 25dbba4fc6e152a05e091180b2e031ab495ba337, but i'm using
f5aff1871d3273b3cd3621ea5d3e37cdd807e66f (with a couple of local patches,
including the fix for bug 284866) and i'm still seeing the issue.

the problem is that traceroute over af-to NAT64 returns garbage once it hits
pf:

# traceroute6 64:ff9b::1.1.1.1
traceroute6 to 64:ff9b::1.1.1.1 (64:ff9b::101:101) from 2a00:1098:6b:200::1, 64
hops max, 28 byte packets
 1  uk-myb-1.le-fay.org (2a00:1098:6b:100::1)  0.544 ms  0.411 ms  0.305 ms
 2  uk-aai-1.le-fay.org (2001:8b0:aab5:100::1)  6.738 ms  7.558 ms  7.520 ms
 3  64:ff9b::101:101 (64:ff9b::101:101)  12.666 ms  12.443 ms  11.981 ms
 4  64:ff9b::101:101 (64:ff9b::101:101)  12.904 ms  11.460 ms  13.006 ms
 5  64:ff9b::101:101 (64:ff9b::101:101)  14.095 ms  13.377 ms  13.012 ms
 6  64:ff9b::101:101 (64:ff9b::101:101)  12.984 ms  13.523 ms  14.175 ms
 7  64:ff9b::101:101 (64:ff9b::101:101)  13.939 ms  13.436 ms  13.025 ms

on the router's external interface, i see the correct outgoing and incoming
traffic:

09:42:39.937871 IP (tos 0x0, ttl 1, id 4079, offset 0, flags [none], proto UDP
(17), length 40)
    81.187.47.193.25587 > 1.1.1.1.33441: UDP, length 12

09:42:39.942958 IP (tos 0x0, ttl 64, id 13105, offset 0, flags [none], proto
ICMP (1), length 56)
    90.155.53.128 > 81.187.47.193: ICMP time exceeded in-transit, length 36
        IP (tos 0x0, id 4079, offset 0, flags [none], proto UDP (17), length
40)
    81.187.47.193.25587 > 1.1.1.1.33441: UDP, length 12

but the translated outgoing error on the internal interface is wrong:

09:42:39.937819 IP6 (hlim 1, next-header UDP (17) payload length: 20)
2a00:1098:6b:200::1.25587 > 64:ff9b::101:101.33441: [udp sum ok] UDP, length 12

09:42:39.942997 IP6 (hlim 64, next-header ICMPv6 (58) payload length: 56)
64:ff9b::101:101 > 2a00:1098:6b:200::1: [icmp6 sum ok] ICMP6, time exceeded
in-transit for 64:ff9b::101:101

specifically the source address is 64:ff9b::101:101, when it should be
64:ff9b::5a9b:3580 (64:ff9b::90.155.53.128).

the af-to rule is fairly straightforward:

anchor on ep.uk-aai-1 {
        pass from fe80::/10 to any
        pass in from <lf> to any
        pass in inet6 proto ipv6-icmp from <dn42> to any icmp6-type echoreq
        pass in proto tcp from <dn42> to <dn42-fuchsia> port { smtp, domain,
http, https }
        pass in proto udp from <dn42> to <dn42-fuchsia> port domain
        pass in from any to 64:ff9b::/96 af-to inet from 81.187.47.193/32
}

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to