My configuration drops ICMP6_TIME_EXCEEDED crossing rdomains.
I can't find a problem with the setup.
If this is my fault, please tell me.

I have an IP6 connection via SIXXS. I put gif0 in its own rdomain
so I could isolate the tunnel endpoint addresses.# outgoing from internals

pf.conf:

pass out quick on lo2 \
        inet6 \
        to ! $net6 \
        rtable 1 \
        label lo2out

pass in quick on gif0 \
        inet6 \
        to <valid6> \
        rtable 0 \
        label ip6in

river:gwes:5720$ netstat -rn -f inet6
Routing tables

Internet6:
Destination  Gateway   FlagsRefs  Use   Mtu  Prio Iface
::/104     ::1    UGRS    0   0     -     8 lo0
::/96      ::1    UGRS    0   0     -     8 lo0
default   ::2    UGS      739 22876  -     8 lo2
[paths to local hosts omitted]

river:gwes:5724$ netstat -T 1 -rn -f inet6
Routing tables

Internet6:
Destination  Gateway  Flags Refs Use   Mtu  Prio Iface
default  2001:4830:1100:2db::1  UGS   0  22952 -  8 gif0
::1 link#7    UHL        0        0     -     4 lo0

ping6 to any external host works
traceroute6 using ICMP6 ECHO works
traceroute6 using UDP returns nothing

I can see the TIME_EXCEEDED packets coming in gif0 using tcpdump
I can't see them after that. They seem to disappear somewhere in
PF leaving no trace.

My first thought is that the outgoing state is marked with rdomain 0.
The returned packet is marked with rdomain 1.
It looks like ECHO packets and TIME_EXCEEDED packets go through different
paths in incoming state matching.
It looks like TIME_EXCEEDED packets can't match because of
the different rdomains and therefore get dropped invisibly.

Comments? Flames? RTFMs?

thanks
Geoff Steckel

Reply via email to