Re: nat problem
Jim Klimov <[email protected]> Wed, 26 Aug 2009 20:20:05 +0400
| Newsgroups | gmane.comp.security.firewalls.ipfilter |
|---|---|
| Organization | JSC COS/HT |
| Message-ID | <[email protected]> |
This needs a bit more thinking, but yes - in my practice too, you can't make many exceptions with "! destination". You can have many similar rules like examples 1 and 2. So you can make many non-nat rules as in example 1, and follow these rules by NATing other packets going to a specific range of destinations and/or by default as per example 2. Might not even need example 3 sometimes. Steve Clark пишет: > Jim Klimov wrote: >> > What I need is to be able to specify instead of "any" only routable >> > address ranges. Maybe something like: >> > map eth1 from 10.254.1.0/24 to range 0.0.0.1 - 9.255.255.255 -> >> > 10.0.133.102/32 >> >> Hi, Steve, >> >> You can use subnet notation, i.e. we have rules like these >> on Solaris 8 x86, IPF 4.1.28: >> >> 1) Don't NAT to a different address (pass packets as is) when >> routing to a specific destination subnet (segments of LAN): >> map elxl1 from 192.168.129.0/24 to 149.49.64.0/24 -> 0.0.0.0/0 >> map elxl1 from 192.168.119.0/24 to 192.168.130.0/23 -> 0.0.0.0/0 >> >> 2) Do NAT certain SRCs going to certain DSTs (remote partner's >> office over VPN, they don't know of our 192.168.* addresses): >> map elxl1 from 192.168.117.0/24 to 10.1.0.0/16 -> 195.66.181.161/32 >> >> 3) Do NAT certain SRCs going to "anywhere except certain DSTs": >> map elxl1 from 192.168.129.128/27 ! to 192.168.42.0/24 -> >> 195.66.181.113/32 > > The above would work if I could specify multiple "! to destinations". In > the specific case > we have multiple non routables on the other side of the gre/vpn, like > 10.0.0.0 and 172.16.0.0 > so I don't want anything coming from the private network on this side > that is destined to an > address on the other side of the gre/vpn to be natted. > > With linux I can: > create a new chain, > iptables -t nat -N mychain > > add rules that either accept or masquerade depending on destination > address, > iptables -t nat -A mychain -d 10.0.0.0/24 -o eth1 -j ACCEPT > iptables -t nat -A mychain -d 192.168.0.0/16 -o eth1 -j ACCEPT > iptables -t nat -A mychain -d 172.16.0.0/20 -o eth1 -j ACCEPT > iptables -t nat -A mychain -o eth1 -j MASQUERADE > > send all packets to mychain to decide whether to nat or not. > iptables -t nat -A POSTROUTING -o eth1 -j mychain > > which creates a new chain that all potential packets that are passed to > - if it the > destination is a private address it is passed to the ACCEPT target so > nothing further happens > if not it hits the MASQUERADE target and is natted. > > Hmm... after thinking about it I might not even have to create a new > chain, probably could do it > in the POSTROUTING chain of the nat table. > > Thanks, > Steve > >> >> Hope these live examples help... >> >> Steve Clark пишет: >>> Hi Darren, >>> >>> I am running into a problem with ipnat on linux when using gre over >>> ipsec. I have gre tunnels >>> which use non routable address endpoints which are tunneled over >>> ipsec to run ospf. >>> >>> my normal ipnat config looks like this on FreeBSD which works but >>> doesn't on linux: >>> map eth1 from 10.254.1.0/24 to any port=21 -> 10.0.133.102/32 proxy >>> port 21 ftp/tcp >>> map eth1 from 10.254.1.0/24 to any -> 10.0.133.102/32 portmap tcp/udp >>> 40000:60000 >>> map eth1 from 10.254.1.0/24 to any -> 10.0.133.102/32 >>> >>> The problem is in linux the esp encapulation happens last so anything >>> going across the gre's is being natted. >>> >>> What I need is to be able to specify instead of "any" only routable >>> address ranges. Maybe something like: >>> map eth1 from 10.254.1.0/24 to range 0.0.0.1 - 9.255.255.255 -> >>> 10.0.133.102/32 >>> >>> Or am I missing something and there is already a way to do this? >>> >>> BTW if i remove the map eth1 from 10.254.1.0/24 to any -> >>> 10.0.133.102/32 >>> then my gre's work but I can't ping the internet cause the icmp is >>> not mapped. >>> >>> Thanks for any advice, >>> Steve >> >> > > > -- +============================================================+ | | | Климов Евгений, Jim Klimov | | технический директор CTO | | ЗАО "ЦОС и ВТ" JSC COS&HT | | | | +7-903-7705859 (cellular) mailto:[email protected] | | CC:[email protected],[email protected] | +============================================================+ | () ascii ribbon campaign - against html mail | | /\ - against microsoft attachments | +============================================================+