Re: [nft PATCH 2/2] expr: add jool expressions

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Apr 15, 2020 at 11:41 PM Alberto Leiva <ydahhrk@xxxxxxxxx> wrote:
>
> > Looking at the code, the pool4db is pretty much an adaptation of what
> > conntrack already does. So, why not to put the efforts in extending
> > conntrack to support NAT64/NAT46 ?
>
> Ok, please don't take this as an aggressively defensive gesture, but I
> feel like this is an unfair question.
>

Sorry, but I don't get your point. What I meant is that both pool4db
and conntrack are natting machines, so extending conntrack (which is
already integrated in the kernel) with what pool4db does could be a
good way to go.

Anyway, please let me come back to the technical discussion.

> If I provide a ready and simple but effective means to bridge our
> projects I feel like it befalls on you to justify why you wish to
> commit to the far more troublesome course of action.
>
> Merging the projects seems to me like several (if not many) months
> worth of development and testing, little of which would be made in
> benefit of our users. (No real functionality would be added, and some
> functionality might be dropped--eg. atomic configuration, session
> synchronization.)
>

Atomic configuration is already supported in nftables and extending
conntrack all the security functionalities and session replication
with conntrackd will be also available.

> I mean I get that you want to avoid some duplicate functionality, but
> is this really a more important use of my time than, say, adding MAP-T
> support? ([0])
>
> > This way, the support of this natting is likely to be included in the
> > kernel vanilla and just configure it with just one rule:
> >
> > sudo nft add rule inet table1 chain1 dnat 64 64:ff9b::/96
>
> Ok, but I don't think an IP translator is *meant* to be configured in
> a single line. Particularly in the case of NAT46. How do you populate
> a large EAM table ([1]) on a line? If your translator instance is
> defined entirely in a rule matched by IPv6 packets, how do you tell
> the corresponding IPv4 rule to refer to the same instance?
>

nft supports maps generation from user space, so something like this
could be configured:

table inet my_table {
    map my_eamt {
        type ipv4_addr : ipv6_addr;
        flags interval;
        elements = { 192.0.2.1/32 : 2001:db8:aaaa::5/128,
                     198.51.100.0/24 : 2001:db8:bbbb::/120,
                     203.0.113.8/29 : 2001:db8:cccc::/125 }
    }
}

And then, use this map to perform the nat rule:

nft add rule inet my_table my_chain snat ip saddr to @my_eamt

Currently, the map structure doesn't work cause the second item should
be a singleton, but probably it can be fixed easily.

> It is my humble opinion that some level of separation between nftables
> rules and translator instances is clean design.
>

My humble opinion is that this model will be hard to accept after the
great efforts done with nftables that joins different commands that
were used in the age of iptables.

> > One more thing, it seems that jool only supports PREROUTING, is that right?
>
> Yes, although this might presently only be because nobody has asked elsewhat.
>
> I tried adding LOCAL_OUT support some years ago and forgot to write
> down the problems that prevented me from succeeding. I can give it
> another shot if this is important for you.
>

My concern is that this can break the normalization of having source
nat in the postrouting instead of in the prerouting phase. Note that
integrating a new feature must ensure not breaking other subsystems.

Cheers.



[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux