Re: nftables equivalent for iptable rules.

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

 



On Wed, Apr 28, 2021 at 03:12:14PM -0600, R C wrote:
> Hello,
> 
> 
> I have a machine I am running RHEL 8 on. there are two interfaces and I want
> to forward all traffic between those interfaces (for the src and dst in the
> subnet a wireless device is on).
> 
> One interface is connected to a switch, WAN side. The other ethernet port
> has an access point, connected wired.
> 
> I did turn on ipforwarding, and thought I needed only two firewall rules.
> 
> 
> sysctl -w net.ipv4.ip_forward=1
> firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o eno1 -i
> enp0s20u4u1 -j ACCEPT
> firewall-cmd --direct --add-rule ipv4 filter FORWARD 0 -o enp0s20u4u1 -i
> eno1 -j ACCEPT
> 
> 
> However,  when I try to do a DNS lookup, it looks like it is being
> blocked/stopped by the firewall, because when I stop the firewall, it just
> seems to work. With the firewall up and running, however I can ping an ip
> address.

Makes sense. firewalld is using the nftables backend and you're adding
direct iptables rules. The packet must pass through both iptables and
nftables.  The forwarding between interfaces is not enabled in nftables
(firewalld).

> for example; if I do "ping www.google.com"  I get a "ping www.google.com:
> Name or service not known"  If I use  an IP address (from www.google.com),
> it just works.
> 
> from what I understand is that iptables lets traffic through that way, but
> bftables does not.  One solution suggested was to  change the firewalld
> backend to iptables, which works, but since at some point I'd need to have
> it work with the nftables back end, I might as well look into that now.

IMO, you have two choices:

  1. upgrade to a newer firewalld (v0.9.0 or later) that has native
     forward filtering
     - https://firewalld.org/2020/04/intra-zone-forwarding
     - https://firewalld.org/2020/09/policy-objects-introduction
     - these features should appear in RHEL-8.5

  2. Use the firewalld iptables backend
     - set FirewallBackend=iptables in /etc/firewalld/firewalld.conf

Any other solution will be out-of-band of firewalld and will likely
break in the future.

> So; how do I  set up the firewal effectvely with the same result as  with
> iptables?

There is a tool called iptables-translate [1] that can do a rough
translation. However, firewalld does not support adding direct nftables
rules. So you would have to inject the rules out-of-band of firewalld -
which is not recommended.

Hope that helps.
Eric.

[1]:
https://wiki.nftables.org/wiki-nftables/index.php/Moving_from_iptables_to_nftables




[Index of Archives]     [Linux Netfilter Development]     [Linux Kernel Networking Development]     [Netem]     [Berkeley Packet Filter]     [Linux Kernel Development]     [Advanced Routing & Traffice Control]     [Bugtraq]

  Powered by Linux