From: Mark Ord <lists@losthorizons.mailshell.com>
To: netfilter@lists.netfilter.org
Subject: Forwarding non local packets to loopback with iptables?
Date: Tue, 7 Sep 2004 21:49:00 +1000 [thread overview]
Message-ID: <20040907114859.GA13315@scholars.home> (raw)
Setup:
NAT + Firewall - Debian, 2.4.18 kernel, iptables v1.2.6a
eth0 - 10.0.x.x - wireless broadband VPN connection
eth1 - 192.168.0.1 - Local network
ppp0 - server assigned - Internet connection via VPN established via
eth0 - though, fairly irrelivent.
eth1:1 - 192.168.0.128 - Local network alias
eth1:2 - 192.168.0.129 - Local network alias
.. etc ..
What I want to do is set up a SSH tunnel to another machine, behind
another firewall, and use the eth1 aliases to access the remote machines from my
local network (eth1) and the iptables machine. I tried to set this up
before with iptables, failed, found discovered rinetd, and have been using
that since successfully. However, I'd like to use an iptables solution,
because I think it'll be cleaner (can't easily ifup/ifdown the eth1 aliases
when using rinetd), plus I'm plain interested in if/how to do an iptables
solution.
The main catch here is that I'm not using GatewayPorts for the ssh port
forwarding. Firstly because binding the forwards to the loopback seems
slightly more secure, and secondly because the ports I forward to on the
remote machines are the same - using GatewayPorts binds to all available
interfaces. Hence I do the ssh port forwards, binding to different
ports on the loopback on the local end of the ssh tunnel, and then map
the default service ports on the eth1 aliases to the appropriate port on
the loopback ie:
rinetd.conf:
192.168.0.128 3389 127.0.0.1 13389 # rdc
192.168.0.129 3389 127.0.0.1 23389 # rdc
192.168.0.130 3389 127.0.0.1 33389 # rdc
Connections to 192.168.0.128:3389 redirect to localhost:13389, which connects
via the ssh tunnel to port 3389 on the remote host.
Last time I tried to establish this with iptables, I got nowhere. This time
around I got it working on the iptables machine with:
$IPTABLES -t nat -I OUTPUT -p tcp -s 192.168.0.128 --dport 3389 \
-j DNAT --to 127.0.0.1:13389
.. etc .. for each address and port required.
Connecting to 129.168.0.128 port 3389 takes me where I want - down the
ssh tunnel, to machine on the remote network.
However, no matter what I try, I can't get connections from other machines
on the 192.168.0.0/24 network to work. I've tried to several combinations
of using PREROUTING, POSTROUTING and OUTPUT chains, with no luck.
In particular, I've tried to model it on a rule that works:
iptables -t nat -I PREROUTING -p tcp -d 192.168.0.128 --dport 3389 \
-j DNAT --to x.x.x.x:3389
(where x.x.x.x is a host on the internet.)
with:
iptables -t nat -I PREROUTING -p tcp -d 192.168.0.128 --dport 3389 \
-j DNAT --to 127.0.0.1:3389
which doesn't work, to which I can only conclude that you can't dnat to
127.0.0.1.
Is it possible to achieve this with iptables (redirecting traffic coming in
on eth1 (for eth1:?) to a port on 127.0.0.1), and if so, what rules are
required?
Thanks in advance,
Mark.
next reply other threads:[~2004-09-07 11:49 UTC|newest]
Thread overview: 3+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-09-07 11:49 Mark Ord [this message]
2004-09-08 0:35 ` Forwarding non local packets to loopback with iptables? Jason Opperisano
2004-09-13 23:31 ` Mark Ord
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=20040907114859.GA13315@scholars.home \
--to=lists@losthorizons.mailshell.com \
--cc=netfilter@lists.netfilter.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