From: Pablo Neira Ayuso <pablo@netfilter.org>
To: Volodymyr Litovka <doka@funlab.cc>
Cc: netfilter@vger.kernel.org
Subject: Re: nftables / DHCP / NAT
Date: Tue, 31 Oct 2023 15:05:35 +0100 [thread overview]
Message-ID: <ZUEJrwuwr0tw+TNL@calendula> (raw)
In-Reply-To: <2c86ff9c-9aee-41fc-94fd-0b9f2e911961@funlab.cc>
Hi Volodymyr,
On Mon, Oct 30, 2023 at 11:20:55PM +0100, Volodymyr Litovka wrote:
> Hi Pablo,
>
> On 10/30/23 09:41, Pablo Neira Ayuso wrote:
> > Then, to forward packets to some other box from the 'netdev' family,
> > use the 'fwd' statement:
> >
> > udp dport 67 udp dport set 10067 counter fwd to 100.64.0.66 device "eth0"
> >
> > This rule above is mangling your UDP destination port from 67 to
> > 10067, then it send the packet to 100.64.0.66 and device "eth0". The
> > destination MAC address is updated by the neighbour layer so you do
> > not have to bother with "ether daddr set ..."
>
> This works, thanks. But - all packets are duplicated :)
I see no duplicates, see below.
> If I run on the receiving host the command (in short - extract what I'm
> interested in)
>
> tshark -i enp1s0 -l -f 'port 10067 and ether[42:1]==2' -d
> udp.port=10067,dhcp -V -Y 'dhcp.option.dhcp==5' -V -E "separator=|" -E
> "quote=n" -E "occurrence=a" -T fields -e
> "dhcp.option.agent_information_option.value" -e "dhcp.ip.client"
>
> then when using the old version of rules (just to check and compare) -
> udp dport 67 meta pkttype set other ether daddr set 96:9f:7c:d3:c3:66 ip
> daddr set 100.64.0.15 udp dport set 10067 counter accept
>
> then tshark shows everything is ok, but if using -
> udp dport 67 udp dport set 10067 counter fwd ip to 100.64.0.15 device enp1s0
I had to cleanup your snippet, it contains non-breaking space (0xc2
0x0a) which makes the parser unhappy:
test.nft:2:1-1: Error: syntax error, unexpected junk
chain rewrit {
^
This is the cleaned up result:
table netdev inspan {
chain rewrit {
type filter hook ingress device "inspan" priority filter; policy drop;
udp dport 67 udp dport set 10067 counter packets 9510 bytes 4137201 fwd ip to 100.64.0.15 device "enp1s0"
}
}
> then every packet (same running tshark) is duplicated:
>
> 64702...31333430|x.x.x2.238
> 64702...31333430|x.x.x2.238
I suspect this shows the packet coming in (ingress) and coming out
(egress) on the same device.
I can see this in tcpdump, I made a similar ruleset that matches on
udp dport 8000, it mangles it to udp 8888 and forwards it to the same
device:
14:52:32.753056 IP 192.168.210.137.51820 > 192.168.210.130.8000: UDP, length 4
14:52:32.753149 IP 192.168.210.137.51820 > 192.168.210.130.8888: UDP, length 4
The first packet is the packet shown by tcpdump at ingress, the second
packet is the packet that is forwarded and tcpdump shows it at egress.
On the collector, I can see one single packet with UDP port 8888.
> Any ideas why this can happen?
I think what you observe from tshark / tcpdump is the packet at
ingress and then (being reflected) at egress.
next prev parent reply other threads:[~2023-10-31 14:05 UTC|newest]
Thread overview: 6+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <df94652d-d611-4713-963a-911d6b7ef986@funlab.cc>
2023-10-30 8:41 ` nftables / DHCP / NAT Pablo Neira Ayuso
2023-10-30 11:58 ` Volodymyr Litovka
[not found] ` <54fda956-92bd-4c14-b0e5-29445b53f04a@funlab.cc>
2023-10-30 16:40 ` Pablo Neira Ayuso
2023-10-30 22:20 ` Volodymyr Litovka
2023-10-31 14:05 ` Pablo Neira Ayuso [this message]
2023-10-31 21:26 ` Volodymyr Litovka
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=ZUEJrwuwr0tw+TNL@calendula \
--to=pablo@netfilter.org \
--cc=doka@funlab.cc \
--cc=netfilter@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox