All of lore.kernel.org
 help / color / mirror / Atom feed
* ip_nat_pptp ICMP rejected failures
@ 2005-10-05 15:13 Matt Domsch
  2005-10-05 15:44 ` Harald Welte
  0 siblings, 1 reply; 4+ messages in thread
From: Matt Domsch @ 2005-10-05 15:13 UTC (permalink / raw)
  To: Harald Welte; +Cc: netfilter

Harald, thanks much for your efforts on the ip_nat_pptp helper.  I've
been using a 2.2 kernel on my firewall for years simply because it had
this functionality.

I have this problem with 2.6.14-rc3.  With ip_nat_pptp loaded,
through a NAT, I get this behavior:

No.     Time        Source                Destination           Protocol Info
      1 0.000000    NAT-CLIENT          PPTP-SERVER         TCP      3347 > 1723 [SYN] Seq=0 Ack=0 Win=64512 Len=0 MSS=1460
      2 0.000237    FW-PUBLIC-IP        PPTP-SERVER         TCP      3347 > 1723 [SYN] Seq=0 Ack=0 Win=64512 Len=0 MSS=1460
      3 0.026441    PPTP-SERVER         FW-PUBLIC-IP        TCP      1723 > 3347 [SYN, ACK] Seq=0 Ack=1 Win=16384 Len=0 MSS=1460
      4 0.026574    PPTP-SERVER         NAT-CLIENT           TCP      1723 > 3347 [SYN, ACK] Seq=0 Ack=1 Win=16384 Len=0 MSS=1460
      5 0.027555    NAT-CLIENT          PPTP-SERVER         PPTP     Start-Control-Connection-Request
      6 0.027652    FW-PUBLIC-IP        PPTP-SERVER         PPTP     Start-Control-Connection-Request
      7 0.051931    PPTP-SERVER         FW-PUBLIC-IP        PPTP     Start-Control-Connection-Reply
      8 0.052072    PPTP-SERVER         NAT-CLIENT          PPTP     Start-Control-Connection-Reply
      9 0.063546    NAT-CLIENT          PPTP-SERVER         PPTP     Outgoing-Call-Request
     10 0.063654    FW-PUBLIC-IP        PPTP-SERVER         PPTP     Outgoing-Call-Request
     11 0.090422    PPTP-SERVER         FW-PUBLIC-IP        PPTP     Outgoing-Call-Reply
     12 0.090565    PPTP-SERVER         NAT-CLIENT          PPTP     Outgoing-Call-Reply
     13 0.096314    NAT-CLIENT          PPTP-SERVER         PPTP     Set-Link-Info
     14 0.096397    FW-PUBLIC-IP        PPTP-SERVER         PPTP     Set-Link-Info
     15 0.096428    NAT-CLIENT          PPTP-SERVER         PPP LCP  Configuration Request
     16 0.096527    FW-PUBLIC-IP        PPTP-SERVER         PPP LCP  Configuration Request
     17 0.126681    PPTP-SERVER         FW-PUBLIC-IP        PPP LCP  Configuration Request
     18 0.127033    FW-PUBLIC-IP        PPTP-SERVER         ICMP     Destination unreachable (Protocol unreachable)
     19 0.127074    PPTP-SERVER         FW-PUBLIC-IP        PPP LCP  Configuration Ack
     20 0.127177    FW-PUBLIC-IP        PPTP-SERVER         ICMP     Destination unreachable (Protocol unreachable)
     21 0.312610    PPTP-SERVER         FW-PUBLIC-IP        TCP      1723 > 3347 [ACK] Seq=189 Ack=349 Win=17172 Len=0
     22 0.312723    PPTP-SERVER         NAT-CLIENT          TCP      1723 > 3347 [ACK] Seq=189 Ack=349 Win=17172 Len=0
     23 1.937329    PPTP-SERVER         FW-PUBLIC-IP        PPP LCP  Configuration Request
     24 1.937557    FW-PUBLIC-IP        PPTP-SERVER         ICMP     Destination unreachable (Protocol unreachable)
     25 2.098675    NAT-CLIENT          PPTP-SERVER         PPP LCP  Configuration Request
     26 2.098788    FW-PUBLIC-IP        PPTP-SERVER         PPP LCP  Configuration Request
     27 2.122375    PPTP-SERVER         FW-PUBLIC-IP        PPP LCP  Configuration Ack
     28 2.122580    FW-PUBLIC-IP        PPTP-SERVER         ICMP     Destination unreachable (Protocol unreachable)
     29 4.937426    PPTP-SERVER         FW-PUBLIC-IP        PPP LCP  Configuration Request
     30 4.937632    FW-PUBLIC-IP        PPTP-SERVER         ICMP     Destination unreachable (Protocol unreachable)
     31 5.108775    NAT-CLIENT          PPTP-SERVER         PPP LCP  Configuration Request
     32 5.108878    FW-PUBLIC-IP        PPTP-SERVER         PPP LCP  Configuration Request
     33 5.133111    PPTP-SERVER         FW-PUBLIC-IP        PPP LCP  Configuration Ack
     34 5.133317    FW-PUBLIC-IP        PPTP-SERVER         ICMP     Destination unreachable (Protocol unreachable)
     35 7.549272    NAT-CLIENT          PPTP-SERVER         PPTP     Set-Link-Info
     36 7.549405    FW-PUBLIC-IP        PPTP-SERVER         PPTP     Set-Link-Info
     37 7.549444    NAT-CLIENT          PPTP-SERVER         PPP LCP  Termination Request
     38 7.549510    FW-PUBLIC-IP        PPTP-SERVER         PPP LCP  Termination Request
     39 7.572922    PPTP-SERVER         FW-PUBLIC-IP        PPP LCP  Termination Ack
     40 7.573142    FW-PUBLIC-IP        PPTP-SERVER         ICMP     Destination unreachable (Protocol unreachable)
     41 7.748978    PPTP-SERVER         FW-PUBLIC-IP        TCP      1723 > 3347 [ACK] Seq=189 Ack=373 Win=17148 Len=0
     42 7.749092    PPTP-SERVER         NAT-CLIENT          TCP      1723 > 3347 [ACK] Seq=189 Ack=373 Win=17148 Len=0


and no PPP authentication ever succeeds.

If I don't have ip_nat_pptp and ip_conntrack_pptp loaded, I don't get
the ICMP messages, and authentication succeeds, though I can only have
on PPTP session between any of my clients and the server.

My iptables firewall rules, generated by a Fedora Core 4 system, look like:

# Firewall configuration written by system-config-securitylevel
# Manual customization of this file is not recommended.
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -i eth1 -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT --protocol gre  -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A PREROUTING -i eth1 -j MARK --set-mark 0x9
COMMIT
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -m mark --mark 0x9 -j MASQUERADE
COMMIT


though I've tried both with and without the REJECT rule.

I'd appreciate any advice you can provide.

Thanks,
Matt


^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: ip_nat_pptp ICMP rejected failures
  2005-10-05 15:13 ip_nat_pptp ICMP rejected failures Matt Domsch
@ 2005-10-05 15:44 ` Harald Welte
  2005-10-06  3:54   ` Matt Domsch
  0 siblings, 1 reply; 4+ messages in thread
From: Harald Welte @ 2005-10-05 15:44 UTC (permalink / raw)
  To: Matt Domsch; +Cc: netfilter

[-- Attachment #1: Type: text/plain, Size: 956 bytes --]

On Wed, Oct 05, 2005 at 10:13:09AM -0500, Matt Domsch wrote:
> Harald, thanks much for your efforts on the ip_nat_pptp helper.  I've
> been using a 2.2 kernel on my firewall for years simply because it had
> this functionality.

there have been patches for lots of 2.4 and 2.6 releases, though.

thanks for the detailed bugreport, I'll try to analyze the problem once
I'm back from http://workshop.netfilter.org/

Please try to explicitly add a drop rule for the ICMP packets and see
whether it works then.  Sounds strange, but I have my reasons for asking
;)

Thanks

-- 
- Harald Welte <laforge@netfilter.org>                 http://netfilter.org/
============================================================================
  "Fragmentation is like classful addressing -- an interesting early
   architectural error that shows how much experimentation was going
   on while IP was being designed."                    -- Paul Vixie

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: ip_nat_pptp ICMP rejected failures
  2005-10-05 15:44 ` Harald Welte
@ 2005-10-06  3:54   ` Matt Domsch
  2005-10-08  5:05     ` Matt Domsch
  0 siblings, 1 reply; 4+ messages in thread
From: Matt Domsch @ 2005-10-06  3:54 UTC (permalink / raw)
  To: Harald Welte, netfilter

[-- Attachment #1: Type: text/plain, Size: 5466 bytes --]

On Wed, Oct 05, 2005 at 05:44:53PM +0200, Harald Welte wrote:
> On Wed, Oct 05, 2005 at 10:13:09AM -0500, Matt Domsch wrote:
> there have been patches for lots of 2.4 and 2.6 releases, though.

Indeed, I've been lazy in this respect, no disrespect intended.
 
> thanks for the detailed bugreport, I'll try to analyze the problem once
> I'm back from http://workshop.netfilter.org/

Enjoy the workshop!
 
> Please try to explicitly add a drop rule for the ICMP packets and see
> whether it works then.  Sounds strange, but I have my reasons for asking
> ;)


Progress.  To the raw table I added:
-A OUTPUT -p icmp --icmp-type protocol-unreachable --destination PPTP_SERVER -j DROP

Now what happens is that the LCP Configuration Requests and LCP
Configuration Acks generated by the PPTP_SERVER aren't getting NAT'd
by the firewall coming back to my client, so LCP is never
established.  Removing ip_nat_pptp resolves this of course.


No.     Time        Source                Destination           Protocol Info
     47 1.029527    CLIENT_IP           PPTP_SERVER         TCP      4668 > 1723 [SYN] Seq=0 Ack=0 Win=64512 Len=0 MSS=1460
     48 1.029729    FW_PUBLIC_IP        PPTP_SERVER         TCP      4668 > 1723 [SYN] Seq=0 Ack=0 Win=64512 Len=0 MSS=1460
     49 1.056471    PPTP_SERVER         FW_PUBLIC_IP        TCP      1723 > 4668 [SYN, ACK] Seq=0 Ack=1 Win=16384 Len=0 MSS=1460
     50 1.056586    PPTP_SERVER         CLIENT_IP           TCP      1723 > 4668 [SYN, ACK] Seq=0 Ack=1 Win=16384 Len=0 MSS=1460
     51 1.071807    CLIENT_IP           PPTP_SERVER         PPTP     Start-Control-Connection-Request
     52 1.071899    FW_PUBLIC_IP        PPTP_SERVER         PPTP     Start-Control-Connection-Request
     53 1.096896    PPTP_SERVER         FW_PUBLIC_IP        PPTP     Start-Control-Connection-Reply
     54 1.096993    PPTP_SERVER         CLIENT_IP           PPTP     Start-Control-Connection-Reply
     55 1.108357    CLIENT_IP           PPTP_SERVER         PPTP     Outgoing-Call-Request
     56 1.108461    FW_PUBLIC_IP        PPTP_SERVER         PPTP     Outgoing-Call-Request
     57 1.133729    PPTP_SERVER         FW_PUBLIC_IP        PPTP     Outgoing-Call-Reply
     58 1.133875    PPTP_SERVER         CLIENT_IP           PPTP     Outgoing-Call-Reply
     59 1.137014    CLIENT_IP           PPTP_SERVER         PPTP     Set-Link-Info
     60 1.137101    FW_PUBLIC_IP        PPTP_SERVER         PPTP     Set-Link-Info
     61 1.149890    CLIENT_IP           PPTP_SERVER         PPP LCP  Configuration Request
     62 1.150004    FW_PUBLIC_IP        PPTP_SERVER         PPP LCP  Configuration Request
     63 1.174587    PPTP_SERVER         FW_PUBLIC_IP        PPP LCP  Configuration Request
====== The previous packet should be NAT'd here, but it's not.
     64 1.174765    PPTP_SERVER         FW_PUBLIC_IP        PPP LCP  Configuration Ack
====== The previous packet should be NAT'd here, but it's not.
     71 1.335423    PPTP_SERVER         FW_PUBLIC_IP        TCP      1723 > 4668 [ACK] Seq=189 Ack=349 Win=17172 Len=0
     72 1.335582    PPTP_SERVER         CLIENT_IP           TCP      1723 > 4668 [ACK] Seq=189 Ack=349 Win=17172 Len=0
     96 2.319976    PPTP_SERVER         FW_PUBLIC_IP        PPP LCP  Configuration Request
====== The previous packet should be NAT'd here, but it's not.
    125 3.136456    CLIENT_IP           PPTP_SERVER         PPP LCP  Configuration Request
    126 3.136592    FW_PUBLIC_IP        PPTP_SERVER         PPP LCP  Configuration Request
    127 3.160169    PPTP_SERVER         FW_PUBLIC_IP        PPP LCP  Configuration Ack
====== The previous packet should be NAT'd here, but it's not.
    181 5.319708    PPTP_SERVER         FW_PUBLIC_IP        PPP LCP  Configuration Request
====== The previous packet should be NAT'd here, but it's not.
    213 6.133984    CLIENT_IP           PPTP_SERVER         PPP LCP  Configuration Request
    214 6.134116    FW_PUBLIC_IP        PPTP_SERVER         PPP LCP  Configuration Request
    215 6.159191    PPTP_SERVER         FW_PUBLIC_IP        PPP LCP  Configuration Ack
====== The previous packet should be NAT'd here, but it's not.
    308 9.319669    PPTP_SERVER         FW_PUBLIC_IP        PPP LCP  Configuration Request
====== The previous packet should be NAT'd here, but it's not.
    340 10.144477   CLIENT_IP           PPTP_SERVER         PPP LCP  Configuration Request
    341 10.144617   FW_PUBLIC_IP        PPTP_SERVER         PPP LCP  Configuration Request
    342 10.167478   PPTP_SERVER         FW_PUBLIC_IP        PPP LCP  Configuration Ack
    427 13.061012   CLIENT_IP           PPTP_SERVER         PPTP     Set-Link-Info
    428 13.061137   FW_PUBLIC_IP        PPTP_SERVER         PPTP     Set-Link-Info
    429 13.071593   CLIENT_IP           PPTP_SERVER         PPP LCP  Termination Request
    430 13.071680   FW_PUBLIC_IP        PPTP_SERVER         PPP LCP  Termination Request
    431 13.095415   PPTP_SERVER         FW_PUBLIC_IP        PPP LCP  Termination Ack
    435 13.258806   PPTP_SERVER         FW_PUBLIC_IP        TCP      1723 > 4668 [ACK] Seq=189 Ack=373 Win=17148 Len=0
    436 13.258922   PPTP_SERVER         CLIENT_IP           TCP      1723 > 4668 [ACK] Seq=189 Ack=373 Win=17148 Len=0


There's no apparent difference between the packets that are NATd
without ip_nat_pptp and the packets that aren't when using ip_nat_pptp.

Thanks,
Matt

[-- Attachment #2: Type: application/pgp-signature, Size: 189 bytes --]

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: ip_nat_pptp ICMP rejected failures
  2005-10-06  3:54   ` Matt Domsch
@ 2005-10-08  5:05     ` Matt Domsch
  0 siblings, 0 replies; 4+ messages in thread
From: Matt Domsch @ 2005-10-08  5:05 UTC (permalink / raw)
  To: Harald Welte, netfilter

On Wed, Oct 05, 2005 at 10:54:22PM -0500, Matt Domsch wrote:
> Progress.  To the raw table I added:
> -A OUTPUT -p icmp --icmp-type protocol-unreachable --destination PPTP_SERVER -j DROP
> 
> Now what happens is that the LCP Configuration Requests and LCP
> Configuration Acks generated by the PPTP_SERVER aren't getting NAT'd
> by the firewall coming back to my client, so LCP is never
> established.  Removing ip_nat_pptp resolves this of course.

Enabling debugging in the netfilter pptp and gre modules:

ip_conntrack_helper_pptp.c:conntrack_pptp_help: ctinfo = 2, skipping
ip_conntrack_helper_pptp.c:conntrack_pptp_help: no full PPTP header, can't track
ip_conntrack_helper_pptp.c:conntrack_pptp_help: no full PPTP header, can't track
ip_conntrack_helper_pptp.c:pptp_outbound_pkt: outbound control message START_SESSION_REQUEST
ip_conntrack_helper_pptp.c:conntrack_pptp_help: sstate: 0->3, cstate: 0->0
ip_conntrack_helper_pptp.c:pptp_inbound_pkt: inbound control message START_SESSION_REPLY
ip_conntrack_helper_pptp.c:conntrack_pptp_help: sstate: 3->4, cstate: 0->0
ip_conntrack_helper_pptp.c:conntrack_pptp_help: no full PPTP header, can't track
ip_conntrack_helper_pptp.c:pptp_outbound_pkt: outbound control message OUT_CALL_REQUEST
ip_conntrack_helper_pptp.c:pptp_outbound_pkt: OUT_CALL_REQUEST: short packet
ip_conntrack_helper_pptp.c:pptp_outbound_pkt: OUT_CALL_REQUEST, CID=0
ip_nat_helper_pptp.c:pptp_outbound_pkt: altering call id from 0x0000 to 0xb3a9
ip_conntrack_helper_pptp.c:conntrack_pptp_help: sstate: 4->4, cstate: 0->2
ip_conntrack_helper_pptp.c:pptp_inbound_pkt: inbound control message OUT_CALL_REPLY
ip_conntrack_helper_pptp.c:pptp_inbound_pkt: OUT_CALL_REPLY, CID=582F, PCID=B3A9
  (so far so good, these were forwarded by the firewall.  Then...)

ip_nat_helper_pptp.c:pptp_exp_gre: successfully registered expect
ip_nat_helper_pptp.c:pptp_exp_gre: successfully registered expect
ip_conntrack_proto_gre.c:ip_ct_gre_keymap_add: adding new entry d51597e0: PPTP_SERVER:0x582f -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_proto_gre.c:ip_ct_gre_keymap_add: adding new entry d5159c80: CLIENT_IP:0x0 -> PPTP_SERVER:0x582f
ip_nat_helper_pptp.c:pptp_inbound_pkt: altering peer call id from 0xb3a9 to 0x0000
ip_conntrack_helper_pptp.c:conntrack_pptp_help: sstate: 4->4, cstate: 2->3
ip_conntrack_helper_pptp.c:conntrack_pptp_help: no full PPTP header, can't track
  (this is OK, this is just a TCP ACK)
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x0 up key for CLIENT_IP:0xe054 -> PPTP_SERVER:0x582f
ip_conntrack_proto_gre.c:gre_new: : CLIENT_IP:0x0 -> PPTP_SERVER:0x582f
ip_conntrack_helper_pptp.c:pptp_expectfn: increasing timeouts
ip_nat_helper_pptp.c:pptp_nat_expected: we are PNS->PAC
ip_nat_helper_pptp.c:pptp_nat_expected: trying to unexpect other dir:
ip_nat_helper_pptp.c:pptp_nat_expected: tuple c044bda0: 47 PPTP_SERVER:22575 -> FW_PUBLIC_IP:45993
ip_nat_helper_pptp.c:pptp_nat_expected: success
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x2f58 up key for PPTP_SERVER:0xe054 -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_proto_gre.c:gre_new: : PPTP_SERVER:0x582f -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x2f58 up key for PPTP_SERVER:0xe054 -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x0 up key for CLIENT_IP:0xe054 -> PPTP_SERVER:0x582f
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x2f58 up key for PPTP_SERVER:0xe054 -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x2f58 up key for PPTP_SERVER:0xe054 -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x0 up key for CLIENT_IP:0xe054 -> PPTP_SERVER:0x582f
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x2f58 up key for PPTP_SERVER:0xe054 -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x2f58 up key for PPTP_SERVER:0xe054 -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x0 up key for CLIENT_IP:0xe054 -> PPTP_SERVER:0x582f
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x2f58 up key for PPTP_SERVER:0xe054 -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x2f58 up key for PPTP_SERVER:0xe054 -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x0 up key for CLIENT_IP:0xe054 -> PPTP_SERVER:0x582f
ip_conntrack_proto_gre.c:gre_keymap_lookup: lookup src key 0x2f58 up key for PPTP_SERVER:0xe054 -> FW_PUBLIC_IP:0xb3a9
ip_conntrack_helper_pptp.c:pptp_outbound_pkt: outbound control message CALL_CLEAR_REQUEST
ip_nat_helper_pptp.c:pptp_outbound_pkt: altering call id from 0x0000 to 0xb3a9

and now we're dead in the water.

Thanks,
Matt


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2005-10-08  5:05 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-10-05 15:13 ip_nat_pptp ICMP rejected failures Matt Domsch
2005-10-05 15:44 ` Harald Welte
2005-10-06  3:54   ` Matt Domsch
2005-10-08  5:05     ` Matt Domsch

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.