From: <imnozi@gmail.com>
To: netfilter@vger.kernel.org
Subject: IPv4 NAT and lo, and iptables
Date: Tue, 30 Apr 2024 18:22:00 -0400 [thread overview]
Message-ID: <20240430182200.39ac9ea1@playground> (raw)
I just encountered a linux/netfilter oddity. Simplified, I have FW_A with iface PUB to internet, another to internal LAN_1 and a third to LAN_2. Firewall rules on FW_A are properly set to:
- NAT traffic to/from PUB,
- block LAN_2 traffic from LAN_1
- allow LAN_1 traffic to LAN_2
- forward internet traffic to port 80 to SRVA_2 on LAN_2
On FW_A, in mangle:PREROUTING, XMARKs are set for traffic coming from LAN_1 and LAN_2. Example:
iptables -A portfwb -d 192.0.2.77/32 -i LAN_1 \
-j MARK --set-xmark 0x1/0xffffffff
Internet hosts access port 80 on SRVA_2. Hosts on LAN_1 access port 80 on SRVA_2 via the public IP. Even SRVA_2 can access itself (port 80) via the public IP.
What *doesn't* work is FW_A accessing port 80 on SRVA_2. This traffic does not get NATted and appears on lo with the public address(es). And since nothing on FW_A listens to port 80, the connection is rejected. I *expected* locally-generate traffic to be NATted just like remote traffic.
Questions:
- Is lo ignored in PREROUTING?
- Is it possible to DNAT local traffic on FW_A (changing) the public IP to
the private IP on LAN_2?
- Would I specify '-i lo' in mangle:PREROUTING and nat:PREROUTING (as I do
for the real NICs)?
The uber questions are:
- Should I be able to DNAT and SNAT traffic on lo just as I can on other
LANs, or do I need to take extra steps?
- Is this a known oddity? or was it known back around Linux 3.16 and
iptables 1.6? (Don't ask; sometimes we're stuck in a place we don't
want to be.)
Thanks,
Neal
next reply other threads:[~2024-04-30 22:22 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-04-30 22:22 imnozi [this message]
2024-04-30 23:03 ` IPv4 NAT and lo, and iptables Sven-Haegar Koch
2024-05-01 0:46 ` imnozi
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=20240430182200.39ac9ea1@playground \
--to=imnozi@gmail.com \
--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;
as well as URLs for NNTP newsgroup(s).