RE: DNAT/Forward difficulties...

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

 



Some Clown <> wrote:
> Jason Opperisano <> wrote:
>> On Tue, Nov 23, 2004 at 12:04:04PM -0800, Some Clown wrote:
>>> Greetings--
>>> 
>>> I've been banging my head against the proverbial firewall for days
>>> now, and while I consider myself fairly versed in TCP/IP mechanics,
>>> I cannot seem to figure this out--probably because I'm relatively
>>> new to netfilter/IPTables. I have mashed together several pieces of
>>> scripts with some of my own creations and have come up with what I
>>> consider to be a fairly robust firewall script--at least for my own
>>> use.  I've tested, and as far as I can tell it does everything I
>>> want except for one thing--I can't seem to get any NEW inbound
>>> connections to get forwarded to any internal machines.  I have a
>>> cable box from Comcast, coming into ETH0 on my Linux box, then ETH1
>>> to a plain-jane Cisco switch, then to various other Windows, Linux,
>>> and VOIP boxes. I want to be able to allow certain NEW connections
>>> inbound, across the Linux (firewall) box, to certain internal
>>> machines.  For the life of me, however, I can't get it to work.
>>> 
>>> I tried to post a message to the list with my rc.firewall file
>>> included, but apparently it's too big.  Thus, I'll include a link to
>>> the file and hope that some friendly soul takes a look.  I would
>>> have posted only "relevant" parts in the message, but the whole
>>> thing is relevant... if I knew where the trouble was I'd fix it
>>> myself. 
>>> 
>>> As an aside, if anyone sees any obvious pitfalls of this newbie's
>>> script... feel free to point them out--though I'm not expecting a
>>> comprehensive analysis... :) 
>>> 
>>> http://home.comcast.net/~systemic/rc.firewall
>> 
>> coupla general thoughts:
>> 
>> (1) the IANA "reserved" space can be significantly summarized (from
>> ~96 networks to ~30): 
>> 
>> 0.0.0.0/7 2.0.0.0/8 5.0.0.0/8 7.0.0.0/8 23.0.0.0/8 27.0.0.0/8
>> 31.0.0.0/8 36.0.0.0/7 39.0.0.0/8 41.0.0.0/8 42.0.0.0/8 49.0.0.0/8
>> 50.0.0.0/8 73.0.0.0/8 74.0.0.0/7 76.0.0.0/6 89.0.0.0/8 90.0.0.0/7
>> 92.0.0.0/6 96.0.0.0/3 173.0.0.0/8 174.0.0.0/7 176.0.0.0/5 184.0.0.0/6
>> 189.0.0.0/8 190.0.0.0/8 197.0.0.0/8 223.0.0.0/8 240.0.0.0/4
>> 
>> (2) "-m limit --limit 5/second" does not make a port scan "annoyingly
>> slow"--5/hour or 5/day would qualify as pretty annoying though...
>> 
>> then my head started to hurt trying to follow the script...it might
>> be easier (in the future) to present rules to people in the standard
>> format of:
>> 
>>   iptables -t mangle -vnxL && iptables -t nat -vnxL && iptables -vnxL
>> 
>> as it allows one to read the rules in order they're enforced, and
>> puts all those custom chains into context...but i digress...
>> 
>> to answer your question--you have a bunch of PREROUTING DNAT's
>> setup, such as: 
>> 
>>   # SHAREAZA
>>   $IPTABLES -t nat -A PREROUTING -i $EXTERNAL -p tcp -d $EXT_IP
>>     --dport 57601 -j DNAT --to-destination 192.168.1.69
>>   $IPTABLES -t nat -A PREROUTING -i $EXTERNAL -p udp -d $EXT_IP
>>     --dport 57601 -j DNAT --to-destination 192.168.1.69
>> 
>> so one would think you would have filter rules to allow the traffic,
>> along the lines of: 
>> 
>>   $IPTABLES -A FORWARD -i $EXTERNAL -o $INTERNAL -p tcp --syn \
>>     -d 192.168.1.69 --dport 57601 -j ACCEPT
>>   $IPTABLES -A FORWARD -i $EXTERNAL -o $INTERNAL -p udp \
>>     -d 192.168.1.69 --dport 57601 -j ACCEPT
>> 
>> but as far as i can tell (correct me if i'm wrong), your FORWARD
>> chain contains: 
>> 
>>   $IPTABLES -A FORWARD -i $EXTERNAL -j EXTERNAL_INPUT   [ snip ]
>> 
>> and EXTERNAL_INPUT contains:
>> 
>>   $IPTABLES -A EXTERNAL_INPUT -i $EXTERNAL -p tcp -j CHECK_FLAGS
>>   $IPTABLES -A EXTERNAL_INPUT -i $EXTERNAL -p ! icmp -j DENY_PORTS
>> 
>> and then you have this magic tidbit:
>> 
>>   $IPTABLES -A FORWARD -i $EXTERNAL -d $INTERNAL_NET -m state \
>> --state NEW -j DROP 
>> 
>> which is probably the source of your problem.
>> 
>> if you're really "relatively new to netfilter/IPTables" this script
>> is roughly (and this is just an estimate) eight million times more
>> complex than anything you should be troubleshooting...but that's
>> just me. 
>> 
>> hope this helps.
>> 
>> -j
> 
> 
> I'll have to take a look at your email and compare it to my printed
> script and graphics--yes, I actually made a "flowchart" to track this
> stuff.  As to the complexity, I think I'm just hard-wired to enjoy
> complex, arcane, convoluted scripts--why else would I love Linux so
> much?  Lol.  Seriously, I am new to netfilter, so I'm working out the
> kinks in the "flow" through the system, but I've worked with many
> firewall systems in the past--complex means more for me to do, which
> is less time I have to watch banal sitcoms. :)      
> 
> I really appreciate the pointers, by the way.  Thanks!

Well, that certainly did it!  I think I got confused as to the "order" that
packets flow through the system.  Anyhow, now that that's straightened out I
can get to tweaking the filter rules a bit more.  Again, I appreciate the
pointers!




[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