Hi,

I can confirm that IPv6 kernel filtering is still broken in conntrackd
1.4.3 with Linux kernel 4.4.

The test is simple:
 * configure a two node conntrackd cluster to sync connections
 * configure IPv6 kernelspace filtering
 * launch `conntrack -E' to see conntrack events in both nodes
 * launch some IPv6 matching traffic, and see it syncing to the other node
 * switch the config to userspace filtering
 * launch some IPv6 matching traffic, the sync don't happen this time.

This is an example configuration in one of my nodes:

==== 8< ====
Sync {
        Mode NOTRACK {
                DisableInternalCache on
                DisableExternalCache on
        }

        TCP {
                IPv4_address 10.0.0.201
                IPv4_Destination_Address 10.0.0.202
                Port 3780
                Interface eth0
                Checksum on
                SndSocketBuffer 12492800
                RcvSocketBuffer 12492800
        }
        Options {
                ExpectationSync On
        }
}
General {
        Nice -20
        Scheduler {
                Type FIFO
                Priority 99
        }

        Syslog on
        LockFile /var/lock/conntrackd.lock
        UNIX {
                Path /var/run/conntrackd.sock
                Backlog 20
        }

        NetlinkBufferSize 8000000
        NetlinkBufferSizeMaxGrowth 80000000

        Filter From Kernelspace {
                Address Ignore {
                        IPv4_address 127.0.0.1
                        IPv4_address 10.0.0.200
                        IPv4_address 10.0.0.201
                        IPv4_address 10.0.0.202
                        IPv6_address ::1
                        IPv6_address fe00::200
                        IPv6_address fe00::201
                        IPv6_address fe00::202
                }
        }

        EventIterationLimit 10
}
==== 8< ====

You can switch to userspace filtering by replacing the 'Kernelspace'
keyword and restarting the daemon:

==== 8< ====
        Filter From Userspace {
                Address Ignore {
                        IPv4_address 127.0.0.1
                        IPv4_address 10.0.0.200
                        IPv4_address 10.0.0.201
                        IPv4_address 10.0.0.202
                        IPv6_address ::1
                        IPv6_address fe00::200
                        IPv6_address fe00::201
                        IPv6_address fe00::202
                }
        }
==== 8< ====

So, I will dig a bit more to see if I can find the bug.

-- 
Arturo Borrero González

Reply via email to