On 2009-04-06, Peter N. M. Hansteen <[email protected]> wrote:
> Aaron Stellman <[email protected]> writes:
>
>> By commenting out half the ruleset, and doing that recursively until
>> finding which rule causes it, I found it it be:
>>
>> nat on $ext_if from !self to any -> ($ext_if:0)
>
> The perils of doing both ipv4 and ipv6 at the same time, I see.  Then
> again, if you narrow its scope to inet only (not inet6) you can
> probably put it back in, ie
>
> nat on $ext_if inet from !self to any -> ($ext_if:0)
>
 
at the risk of making Claudio sigh ... the first IPv6 address configured
on an interface (as returned by iface:0) is usually (always?) the link-local
address.

$ ifconfig pppoe0  
pppoe0: flags=8851<UP,POINTOPOINT,RUNNING,SIMPLEX,MULTICAST> mtu 1492
        priority: 0
        dev: vr1 state: session
        sid: 0xade PADI retries: 0 PADR retries: 0 time: 3d 09:12:06
        sppp: phase network authproto chap 
        groups: pppoe egress
        inet6 fe80::200:24ff:fec9:26dc%pppoe0 ->  prefixlen 64 scopeid 0x9
        inet 85.158.45.32 --> 193.178.223.245 netmask 0xffffffff
        inet6 2001:4b10:1002:ff::1 ->  prefixlen 64

$ pfctl -nvf - 
nat on pppoe0 inet6 -> pppoe0:0
nat on pppoe0 inet6 all -> fe80::200:24ff:fec9:26dc

this is totally invalid unless scoped (the %iface qualifier), and I think
it should be dropped from address expansion for nat. how this is going to pan
out when nat is integrated into the main ruleset, I'm not quite sure...

Reply via email to