* IPSec Transport Mode
@ 2004-07-07 13:35 Arnst, Rainer
2004-07-07 13:53 ` Antony Stone
0 siblings, 1 reply; 13+ messages in thread
From: Arnst, Rainer @ 2004-07-07 13:35 UTC (permalink / raw)
To: NetFilter Mailling List
Hello,
I have a question regarding IPSec in Transport Mode and IPTables. I must
admitted my knowledge concerning IPSec is quite limited and so far what
I have heard about IPSec's transport and tunnel mode is not really clear
to me.
Setup is like this:
The Firewall (iptables - ipcop) has a fixed IP, the Client (MS Windows
XP) has a dynamic IP. IPSec Server is a Windows 2003 Server Box.
IPSec-Client (Internet) --> Firewall --> IPSec Server (internal)
Usually, as far as I understand, transport mode is not an option here
because of NAT being performed by the "Firewall"/Gateway.
Using MS NAT-T works fine, but we want to switch to something non-MS
soon (hopefully real soon). So it's not really an option.
With this Setup, is there anything that can be done with IPTables to
make the transport mode work w/o NAT-T?
Any comments are very appreciated.
Regards,
Rainer Arnst
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-07 13:35 IPSec Transport Mode Arnst, Rainer
@ 2004-07-07 13:53 ` Antony Stone
2004-07-07 14:21 ` Arnst, Rainer
2004-07-07 14:32 ` listuser
0 siblings, 2 replies; 13+ messages in thread
From: Antony Stone @ 2004-07-07 13:53 UTC (permalink / raw)
To: NetFilter Mailling List
On Wednesday 07 July 2004 2:35 pm, Arnst, Rainer wrote:
> Hello,
>
> I have a question regarding IPSec in Transport Mode and IPTables. I must
> admitted my knowledge concerning IPSec is quite limited and so far what
> I have heard about IPSec's transport and tunnel mode is not really clear
> to me.
The difference (as far as it relates to nat) is quite simple, really:
Tunnel mode takes the original packet (TCP/IP, UDP/IP, ICMP/IP or whatever)
and "encapsulates" it inside a completely new packet (protocol ESP =
Encapsulated Security Payload), and that new packet gets its own completely
new IP header (the original packet's IP header, with source & destination
addresses, is inside the ESP payload). The source & destination IPs on the
ESP/IP header can be natted all you like; so long as they get to the remote
Security Gateway, it will unpack the ESP packet, find the original IP
headers, and send the original TCP / UDP / ICMP / whatever packet on to where
it belongs.
Transport mode takes the original packet (TCP/IP, UDP/IP, ICMP/IP or whatever)
and calculates a checksum over almost all of it, including the source &
destination IP addresses, and then sends it (still with the original IP
header, except for the fact that it's now protocol AH instead of TCP or UDP
etc inside the IP packet), to the destination. If you change the source or
destination addresses along the way, then the checksum doesn't agree when it
gets validated at the receiving end, so the secure link breaks (ie: doesn't
work).
> Usually, as far as I understand, transport mode is not an option here
> because of NAT being performed by the "Firewall"/Gateway.
Indeed.
> Using MS NAT-T works fine, but we want to switch to something non-MS
> soon (hopefully real soon). So it's not really an option.
>
> With this Setup, is there anything that can be done with IPTables to
> make the transport mode work w/o NAT-T?
I can think of two ways:
1. Put a genuine public IP address on the destination Security Gateway
machine, routed through the firewall without nat.
2. Perform nat twice so that the packet as received by the SG is exactly as it
was sent, even though it may have been natted (and then un-natted) along the
way. This almost certainly involves putting a public IP on the remote SG,
and having two firewalls to perform the two nat operations.
Regards,
Antony.
--
"640 kilobytes (of RAM) should be enough for anybody."
- Bill Gates
Please reply to the list;
please don't CC me.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-07 13:53 ` Antony Stone
@ 2004-07-07 14:21 ` Arnst, Rainer
2004-07-07 20:54 ` Antony Stone
2004-07-07 14:32 ` listuser
1 sibling, 1 reply; 13+ messages in thread
From: Arnst, Rainer @ 2004-07-07 14:21 UTC (permalink / raw)
To: NetFilter Mailling List
Hello,
thank you Antony for your quick and very helpful answer!!
On Mi, 2004-07-07 at 15:53, Antony Stone wrote:
> > With this Setup, is there anything that can be done with IPTables to
> > make the transport mode work w/o NAT-T?
>
> I can think of two ways:
> 1. Put a genuine public IP address on the destination Security Gateway
> machine, routed through the firewall without nat.
This sounds really good. How do I tell iptables not to perform NAT for
IPSec?
Currently the firewall is a Test-Setup with IPCop. Since the
IpCop-Interface does not support ESP I added these iptables rules to the
zillions of rules put in place by ipcop to make it work, probably a bit
to open anyway :-) :
iptables -A INPUT -p 50 -j ACCEPT
iptables -A OUTPUT -p 50 -j ACCEPT
iptables -A FORWARD -p 50 -j ACCEPT
How would I modify these to pass on the packets without NAT?
Thanks a lot,
Rainer Arnst
^ permalink raw reply [flat|nested] 13+ messages in thread
* RE: IPSec Transport Mode
2004-07-07 13:53 ` Antony Stone
2004-07-07 14:21 ` Arnst, Rainer
@ 2004-07-07 14:32 ` listuser
1 sibling, 0 replies; 13+ messages in thread
From: listuser @ 2004-07-07 14:32 UTC (permalink / raw)
To: NetFilter Mailling List
HiHo!
NAT-T (or nat-traversal) is the also a solution as you stated yourself.
It is also available for several other IPsec solutions.
Yet for FreeSwan you need at least a patch (nat-traversal) or use
superfreeswan (www.freeswan.ca) . I don't know about
other implementations, esp the new derived ones.
Nat-traversal encapsulates the complete packets into yet another UDP
packet destenied for port 4500. This can be natted as usual. The
otherside simply has to pick the ipsec packet from the udp packet.
So NAT-T must be used on both sides, yet it has the advantage that
it is more transparent.
ciao
markus
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-07 14:21 ` Arnst, Rainer
@ 2004-07-07 20:54 ` Antony Stone
2004-07-07 21:11 ` Sven Schuster
` (2 more replies)
0 siblings, 3 replies; 13+ messages in thread
From: Antony Stone @ 2004-07-07 20:54 UTC (permalink / raw)
To: NetFilter Mailling List
On Wednesday 07 July 2004 3:21 pm, Arnst, Rainer wrote:
> Hello,
>
> thank you Antony for your quick and very helpful answer!!
>
> On Mi, 2004-07-07 at 15:53, Antony Stone wrote:
> > > With this Setup, is there anything that can be done with IPTables to
> > > make the transport mode work w/o NAT-T?
> >
> > I can think of two ways:
> > 1. Put a genuine public IP address on the destination Security Gateway
> > machine, routed through the firewall without nat.
>
> This sounds really good. How do I tell iptables not to perform NAT for
> IPSec?
>
> Currently the firewall is a Test-Setup with IPCop. Since the
> IpCop-Interface does not support ESP I added these iptables rules to the
> zillions of rules put in place by ipcop to make it work, probably a bit
> to open anyway :-) :
>
> iptables -A INPUT -p 50 -j ACCEPT
> iptables -A OUTPUT -p 50 -j ACCEPT
> iptables -A FORWARD -p 50 -j ACCEPT
>
> How would I modify these to pass on the packets without NAT?
My first observation on seeing this is: why are you talking about ESP all of a
sudden?
ESP is for tunnel mode, and works fine through NAT.
Transport mode uses AH (protocol 51), and that's the one which breaks through
NAT.
Anyway, you don't need to FORWARD the IPsec packets - they only come into and
out of the security gateway machine - it's the unencrypted packets which get
FORWARDed.
And, to answer your question about how to avoid NATting certain types of
packets, the answer is to put an ACCEPT rule in your PREROUTING or
POSTROUTING chain, before the SNAT or DNAT rule which would otherwise nat
them.
For example:
iptables -A PREROUTING -t nat -p 50 -j ACCEPT
iptables -A PREROUTING -t nat -d a.b.c.d -j DNAT --to w.x.y.z
These rules will DNAT all packets originally addressed to a.b.c.d and send
them to w.x.y.z instead, *unless* they are protocol 50, in which case they
won't get NATted.
Hope that helps,
Antony.
--
The first fifty percent of an engineering project takes ninety percent of the
time, and the remaining fifty percent takes another ninety percent of the
time.
Please reply to the list;
please don't CC me.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-07 20:54 ` Antony Stone
@ 2004-07-07 21:11 ` Sven Schuster
2004-07-07 21:42 ` Antony Stone
2004-07-08 12:00 ` Rainer Arnst
2004-07-09 15:38 ` Rainer Arnst
2 siblings, 1 reply; 13+ messages in thread
From: Sven Schuster @ 2004-07-07 21:11 UTC (permalink / raw)
To: NetFilter Mailling List
[-- Attachment #1: Type: text/plain, Size: 621 bytes --]
Hi Antony,
On Wed, Jul 07, 2004 at 09:54:52PM +0100, Antony Stone told us:
>
> ESP is for tunnel mode, and works fine through NAT.
>
> Transport mode uses AH (protocol 51), and that's the one which breaks through
> NAT.
Isn't using AH or ESP independent from tunnel/transport mode?? AH
mode is just authentication, ESP is authentication + encryption. You
can use AH with tunnel mode and ESP with transport mode like you
wish I think.
Sven
--
Linux zion 2.6.7 #1 Thu Jun 17 10:44:26 CEST 2004 i686 athlon i386 GNU/Linux
23:08:58 up 7 days, 6:52, 3 users, load average: 0.06, 0.05, 0.00
[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-07 21:11 ` Sven Schuster
@ 2004-07-07 21:42 ` Antony Stone
2004-07-07 23:53 ` Cedric Blancher
0 siblings, 1 reply; 13+ messages in thread
From: Antony Stone @ 2004-07-07 21:42 UTC (permalink / raw)
To: netfilter
On Wednesday 07 July 2004 10:11 pm, Sven Schuster wrote:
> Hi Antony,
>
> On Wed, Jul 07, 2004 at 09:54:52PM +0100, Antony Stone told us:
> > ESP is for tunnel mode, and works fine through NAT.
> >
> > Transport mode uses AH (protocol 51), and that's the one which breaks
> > through NAT.
>
> Isn't using AH or ESP independent from tunnel/transport mode?? AH
> mode is just authentication, ESP is authentication + encryption. You
> can use AH with tunnel mode and ESP with transport mode like you
> wish I think.
Hm, not sure about this - I've never wanted a VPN without encryption, so I've
not experimented with AH tunnels.
Also, if you can do transport mode with ESP, then it should work through NAT
without problems, because the original packet gets encapsulated (as per my
previous explanation).
Regards,
Antony.
--
"There is no reason for any individual to have a computer in their home."
- Ken Olsen, President of Digital Equipment Corporation (DEC, later consumed
by Compaq, later merged with HP)
Please reply to the list;
please don't CC me.
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-07 21:42 ` Antony Stone
@ 2004-07-07 23:53 ` Cedric Blancher
0 siblings, 0 replies; 13+ messages in thread
From: Cedric Blancher @ 2004-07-07 23:53 UTC (permalink / raw)
To: netfilter
Le mer 07/07/2004 à 23:42, Antony Stone a écrit :
> Also, if you can do transport mode with ESP, then it should work through NAT
> without problems, because the original packet gets encapsulated (as per my
> previous explanation).
Nope.
Only ESP tunnel mode can go through NAT. The main difference between
transport mode and tunnel is that tunnel encapsulate the whole IP packet
when transport mode only encapsulate IP payload only (for IP destination
and IPSEC destination are the same).
If you try to do NAT, then you will modify IP header, and then TCP
checksum, which is ciphered will get false for it also include IP
adresses in its calculation.
--
http://www.netexit.com/~sid/
PGP KeyID: 157E98EE FingerPrint: FA62226DA9E72FA8AECAA240008B480E157E98EE
>> Hi! I'm your friendly neighbourhood signature virus.
>> Copy me to your signature file and help me spread!
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-07 20:54 ` Antony Stone
2004-07-07 21:11 ` Sven Schuster
@ 2004-07-08 12:00 ` Rainer Arnst
2004-07-09 15:38 ` Rainer Arnst
2 siblings, 0 replies; 13+ messages in thread
From: Rainer Arnst @ 2004-07-08 12:00 UTC (permalink / raw)
To: NetFilter Mailling List
On Wed, 2004-07-07 at 22:54, Antony Stone wrote:
> For example:
>
> iptables -A PREROUTING -t nat -p 50 -j ACCEPT
> iptables -A PREROUTING -t nat -d a.b.c.d -j DNAT --to w.x.y.z
>
> These rules will DNAT all packets originally addressed to a.b.c.d and send
> them to w.x.y.z instead, *unless* they are protocol 50, in which case they
> won't get NATted.
>
> Hope that helps,
Perfect, I'll try that immediately! Thanks again to everybody who
participated.
Greetings,
Rainer
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-07 20:54 ` Antony Stone
2004-07-07 21:11 ` Sven Schuster
2004-07-08 12:00 ` Rainer Arnst
@ 2004-07-09 15:38 ` Rainer Arnst
2004-07-09 16:13 ` Cedric Blancher
2 siblings, 1 reply; 13+ messages in thread
From: Rainer Arnst @ 2004-07-09 15:38 UTC (permalink / raw)
To: NetFilter Mailling List
Hi everybody...
On Wed, 2004-07-07 at 22:54, Antony Stone wrote:
> And, to answer your question about how to avoid NATting certain types of
> packets, the answer is to put an ACCEPT rule in your PREROUTING or
> POSTROUTING chain, before the SNAT or DNAT rule which would otherwise nat
> them.
>
> For example:
>
> iptables -A PREROUTING -t nat -p 50 -j ACCEPT
> iptables -A PREROUTING -t nat -d a.b.c.d -j DNAT --to w.x.y.z
>
> These rules will DNAT all packets originally addressed to a.b.c.d and send
> them to w.x.y.z instead, *unless* they are protocol 50, in which case they
> won't get NATted.
I tried to work with that, but failed to produce the desired results,
which were to enable IPSec transport mode packets to pass through the
firewall not being NATed. I put these rules at the beginning of the
PREROUTING Chain:
iptables -A PREROUTING -t nat -p 50 -j ACCEPT
iptables -A PREROUTING -t nat -p 51 -j ACCEPT
Got anyone any ideas? What should the ips and routing tables look like?
Thanks and sorry for asking a possibly silly question... I am quite new
to this matter!
Regards,
Rainer
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-09 15:38 ` Rainer Arnst
@ 2004-07-09 16:13 ` Cedric Blancher
2004-07-09 16:25 ` Rainer Arnst
0 siblings, 1 reply; 13+ messages in thread
From: Cedric Blancher @ 2004-07-09 16:13 UTC (permalink / raw)
To: Rainer Arnst; +Cc: NetFilter Mailling List
Le ven 09/07/2004 à 17:38, Rainer Arnst a écrit :
> I tried to work with that, but failed to produce the desired results,
> which were to enable IPSec transport mode packets to pass through the
> firewall not being NATed.
[...]
> Got anyone any ideas?
Yes, I got one I previously explained. IPSEC transport mode can't cope
with NAT if you do TCP. ESP transport port only encapsulate IP packet
payload (layer 4) as opposed to ESP tunnel which encapsulate full IP
packet.
When you do NAT, you alter IP source and/or destination. But TCP
checksum includes IP addresses, which means you have to recompute it on
the fly when NATing. Anf for it is ciphered, you can't.
--
http://www.netexit.com/~sid/
PGP KeyID: 157E98EE FingerPrint: FA62226DA9E72FA8AECAA240008B480E157E98EE
>> Hi! I'm your friendly neighbourhood signature virus.
>> Copy me to your signature file and help me spread!
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-09 16:13 ` Cedric Blancher
@ 2004-07-09 16:25 ` Rainer Arnst
2004-07-09 16:51 ` ming fu
0 siblings, 1 reply; 13+ messages in thread
From: Rainer Arnst @ 2004-07-09 16:25 UTC (permalink / raw)
To: NetFilter Mailling List
On Fri, 2004-07-09 at 18:13, Cedric Blancher wrote:
> Le ven 09/07/2004 à 17:38, Rainer Arnst a écrit :
> > I tried to work with that, but failed to produce the desired results,
> > which were to enable IPSec transport mode packets to pass through the
> > firewall not being NATed.
> [...]
> > Got anyone any ideas?
>
> Yes, I got one I previously explained. IPSEC transport mode can't cope
> with NAT if you do TCP. ESP transport port only encapsulate IP packet
> payload (layer 4) as opposed to ESP tunnel which encapsulate full IP
> packet.
I know, that is why I wanted to avoid NAT for ESP/AH, passing packets
through without rewriting their destination, following this suggestion
from Antony@Soft-Solutions.co.uk:
> 1. Put a genuine public IP address on the destination Security Gateway
> machine, routed through the firewall without nat.
> When you do NAT, you alter IP source and/or destination. But TCP
> checksum includes IP addresses, which means you have to recompute it on
> the fly when NATing. Anf for it is ciphered, you can't.
Unfortuneately I have to find a way to make the transport mode work; we
were using NAT-T, which worked fine, but now I am looking for another
solution which does not require the VPN Gateway to support NAT-T.
Greetings,
Rainer
^ permalink raw reply [flat|nested] 13+ messages in thread
* Re: IPSec Transport Mode
2004-07-09 16:25 ` Rainer Arnst
@ 2004-07-09 16:51 ` ming fu
0 siblings, 0 replies; 13+ messages in thread
From: ming fu @ 2004-07-09 16:51 UTC (permalink / raw)
To: Rainer Arnst; +Cc: NetFilter Mailling List
Rainer Arnst wrote:
>>When you do NAT, you alter IP source and/or destination. But TCP
>>checksum includes IP addresses, which means you have to recompute it on
>>the fly when NATing. Anf for it is ciphered, you can't.
>>
>>
>
>Unfortuneately I have to find a way to make the transport mode work; we
>were using NAT-T, which worked fine, but now I am looking for another
>solution which does not require the VPN Gateway to support NAT-T.
>
>
If you are using NAT-T for outbound IPSEC connections, open udp port 500
and 4500 and source nat them. Just do not load any "smart VPN proxy"
that would alter other parts of the UDP, the simplest udp NAT will do
the trick.
>Greetings,
>Rainer
>
>
>
^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2004-07-09 16:51 UTC | newest]
Thread overview: 13+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-07-07 13:35 IPSec Transport Mode Arnst, Rainer
2004-07-07 13:53 ` Antony Stone
2004-07-07 14:21 ` Arnst, Rainer
2004-07-07 20:54 ` Antony Stone
2004-07-07 21:11 ` Sven Schuster
2004-07-07 21:42 ` Antony Stone
2004-07-07 23:53 ` Cedric Blancher
2004-07-08 12:00 ` Rainer Arnst
2004-07-09 15:38 ` Rainer Arnst
2004-07-09 16:13 ` Cedric Blancher
2004-07-09 16:25 ` Rainer Arnst
2004-07-09 16:51 ` ming fu
2004-07-07 14:32 ` listuser
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox