Re: iptables dnat, ebtables, mark

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

 



hi josh and list

i'm now a little bit confused...

iptables -t nat -I PREROUTING -m physdev --physdev-in $IN_INT -m mac
--mac-source $MAC -j DNAT --to $WEBSERVER

this was working perfectly, as soon as i added route add -net 172.17.0.0 netmask 255.255.0.0 dev br0 and also the default gw to br0.

but now i changed a little bit my setup.

LAN --> Firewall --> gateway

the web-server is between the lan and the firewall.

before it was: lan --> firewall --> www --> gw

my rule is:
iptables -t nat -A PREROUTING -p -tcp --dport 80 -m physdev --physdev-in eth2 -mac --mac-source $MAC
-j DNAT --to-destination $WEBSERVER:8080

the user cannot access any websites, besides the intranet, but he is not redirected to the web-server.
IMHO it should work: www.google.com -> $WEBSERVER:8080

the web-server is on the same device (eth2).

any ideas?
ok. i also added -p tcp and --dport 80 and 8080, but removing this does not help.

regards
moritz

Josh Nerius wrote:
I have been experimenting with a very similar setup and have found
that in order to DNAT traffic transparently coming through the bridge,
it was necessary to set an ip address on the virtual bridge interface
and appropriate routes.

I haven't needed to use ebtables up to this point...Here is a rule
that I've used that I've had some luck with.

iptables -t nat -I PREROUTING -m physdev --physdev-in $IN_INT -m mac
--mac-source $MAC -j DNAT --to $WEBSERVER

Make sure to properly set the physdev interface. Though this isn't
entirely necessary, I've seen weird things happen without it.

It is important that the site you're DNATing to doesn't require host
headers as this has seemingly caused issues.

Another approach I'm experimenting with is DNATing dns requests
instead to a server set for the purpose of resolving everything to a
particular ip and then dropping all other traffic from that customer
that's not either destined for the dns server or the web server that
you're directing them to.

Let me know if this helps.

Josh Nerius

On Wed, 10 Nov 2004 16:42:46 +0100, Moritz Gartenmeister
<moritz@xxxxxxxxxxxxxxxx> wrote:

hi

my idea:
i know the mac-adress from a compromised computer in my lan. i want to redirect all the traffic from
this computer to a webserver (to show up a page with e.g. "bad guy! you got a virus").

my system:
debian testing 2.6.7
iptables
ebtables
bridge-code

my solution so far:
ebtables -t nat -A PREROUTING -s $MAC -j mark --set-mark 8 --mark-target CONTINUE
there are no other rules in this chain.
some more rules in -A FORWARD all with -s macadress, but not the one above.

is the only rule in prerouting nat.
iptables -t nat -A PREROUTING -m mark --mark 0x8 -j DNAT --to-destination $IP-WWW

is the first role in the mangle chain.
iptables -t mangle -A PREROUTING -m mark --mark 0x8 -j ACCEPT

one check rule in mangl POSTROUTING
iptables -t mangle -A POSTROUTING -m -mark --makr 0x8 -j LOG --log-prefix IPT_MARK

my problem:
the user can access the webserver and only this server, but the user is not redirected to the
web-server, if he tries to access e.g. www.google.com. he only get an error-message.

my observation:
number of packets differ...
ebtables 213 packets
prerouting mangle 200 packets
prerouting nat 118 packets
postrouting mangle 93 packets

any explanations? the number should be at least the same. i don't understand this. the filter-rules
seem to work properly...

cheers
moritz

--
Uplink student association
Moritz Gartenmeister
Bülachstrasse 1 F
8057 Zürich
Switzerland







--
Uplink student association
Moritz Gartenmeister
Bülachstrasse 1 F
8057 Zürich
Switzerland



[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