Назад | Перейти на главную страницу

L2TP VPN-соединение не работает - PAYLOAD_MALFORMED

Я пытаюсь заменить старый сервер VMWare (ESXI 5.1.0) на новый (ESXI 6.7.0), и для этого мы пытаемся воспроизвести настройку старого. У нас есть еще один физический сервер, который необходимо подключить к виртуальным серверам.

Итак, я пытаюсь настроить VNP-соединение между сервером (клиентом) Windows 2012R2 и маршрутизатором vyatta через lt2p.

ОБНОВИТЬ: Сейчас мы пытаемся использовать последнюю версию маршрутизатора Vyos, но результат тот же.

Делал это раньше несколько раз, и в настоящее время я просто реплицирую настройки с обеих сторон на основе уже работающего решения, но почему-то на этот раз он просто не хочет подключаться.

Тот же сервер уже успешно подключен к двум другим VPN с идентичной настройкой, также с использованием маршрутизаторов l2tp и vyatta.

Со стороны вятты я вижу в журналах следующую ошибку:

Apr  5 10:34:56 vyatta pluto[3061]: packet from XX.YYY.ZZZ.86:500: ignoring Vendor ID payload [01528bbbc00696121849ab9a1c5b2a5100000001]
Apr  5 10:34:56 vyatta pluto[3061]: packet from XX.YYY.ZZZ.86:500: received Vendor ID payload [MS NT5 ISAKMPOAKLEY 00000009]
Apr  5 10:34:56 vyatta pluto[3061]: packet from XX.YYY.ZZZ.86:500: received Vendor ID payload [RFC 3947]
Apr  5 10:34:56 vyatta pluto[3061]: packet from XX.YYY.ZZZ.86:500: ignoring Vendor ID payload [draft-ietf-ipsec-nat-t-ike-02_n]
Apr  5 10:34:56 vyatta pluto[3061]: packet from XX.YYY.ZZZ.86:500: ignoring Vendor ID payload [FRAGMENTATION]
Apr  5 10:34:56 vyatta pluto[3061]: packet from XX.YYY.ZZZ.86:500: ignoring Vendor ID payload [MS-Negotiation Discovery Capable]
Apr  5 10:34:56 vyatta pluto[3061]: packet from XX.YYY.ZZZ.86:500: ignoring Vendor ID payload [Vid-Initial-Contact]
Apr  5 10:34:56 vyatta pluto[3061]: packet from XX.YYY.ZZZ.86:500: ignoring Vendor ID payload [IKE CGA version 1]
Apr  5 10:34:56 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: responding to Main Mode from unknown peer XX.YYY.ZZZ.86
Apr  5 10:34:56 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: Oakley Transform [AES_CBC (256), HMAC_SHA1, ECP_384] refused due to strict flag
Apr  5 10:34:56 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: Oakley Transform [AES_CBC (128), HMAC_SHA1, ECP_256] refused due to strict flag
Apr  5 10:34:56 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: Oakley Transform [AES_CBC (256), HMAC_SHA1, MODP_2048] refused due to strict flag
Apr  5 10:34:56 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: Oakley Transform [3DES_CBC (192), HMAC_SHA1, MODP_2048] refused due to strict flag
Apr  5 10:34:56 vyatta kernel: [262404.703564] [NAT-DST-2] IN=eth1 OUT= MAC=00:0c:29:0f:29:52:00:22:bd:f8:19:zz:08:00 SRC=XX.YYY.ZZZ.86 DST=VVV.MMM.WW.168 LEN=436 TOS=0x00 PREC=0x00 TTL=126 ID=28719 PROTO=UDP SPT=500 DPT=500 LEN=416
Apr  5 10:34:56 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: NAT-Traversal: Result using RFC 3947: no NAT detected
Apr  5 10:34:56 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: next payload type of ISAKMP Identification Payload has an unknown value: 77
Apr  5 10:34:56 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: probable authentication failure (mismatch of preshared secrets?): malformed payload in packet
Apr  5 10:34:56 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: sending encrypted notification PAYLOAD_MALFORMED to XX.YYY.ZZZ.86:500
Apr  5 10:34:57 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: next payload type of ISAKMP Identification Payload has an unknown value: 77
Apr  5 10:34:57 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: probable authentication failure (mismatch of preshared secrets?): malformed payload in packet
Apr  5 10:34:57 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: sending encrypted notification PAYLOAD_MALFORMED to XX.YYY.ZZZ.86:500
Apr  5 10:34:58 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: next payload type of ISAKMP Identification Payload has an unknown value: 77
Apr  5 10:34:58 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: probable authentication failure (mismatch of preshared secrets?): malformed payload in packet
Apr  5 10:34:58 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: sending encrypted notification PAYLOAD_MALFORMED to XX.YYY.ZZZ.86:500
Apr  5 10:35:01 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: next payload type of ISAKMP Identification Payload has an unknown value: 77
Apr  5 10:35:01 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: probable authentication failure (mismatch of preshared secrets?): malformed payload in packet
Apr  5 10:35:01 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: sending encrypted notification PAYLOAD_MALFORMED to XX.YYY.ZZZ.86:500
Apr  5 10:35:08 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: next payload type of ISAKMP Identification Payload has an unknown value: 77
Apr  5 10:35:08 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: probable authentication failure (mismatch of preshared secrets?): malformed payload in packet
Apr  5 10:35:08 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: sending encrypted notification PAYLOAD_MALFORMED to XX.YYY.ZZZ.86:500
Apr  5 10:35:23 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: next payload type of ISAKMP Identification Payload has an unknown value: 77
Apr  5 10:35:23 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: probable authentication failure (mismatch of preshared secrets?): malformed payload in packet
Apr  5 10:35:23 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: sending encrypted notification PAYLOAD_MALFORMED to XX.YYY.ZZZ.86:500
Apr  5 10:35:38 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: next payload type of ISAKMP Identification Payload has an unknown value: 77
Apr  5 10:35:38 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: probable authentication failure (mismatch of preshared secrets?): malformed payload in packet
Apr  5 10:35:38 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: sending encrypted notification PAYLOAD_MALFORMED to XX.YYY.ZZZ.86:500
Apr  5 10:36:06 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86 #6: max number of retransmissions (2) reached STATE_MAIN_R2
Apr  5 10:36:06 vyatta pluto[3061]: "remote-access-mac-zzz"[6] XX.YYY.ZZZ.86: deleting connection "remote-access-mac-zzz" instance with peer XX.YYY.ZZZ.86 {isakmp=#0/ipsec=#0}

В журнале написано, что «следующий тип полезной нагрузки ISAKMP Identification Payload имеет неизвестное значение: 77», значение различается для каждого соединения.

На стороне Windows в логах не так много. Он просто считает секунды без конца.

Log Name:      Application
Source:        RasClient
Date:          05/04/2019 10:34:56
Event ID:      20221
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      *******.******.local
Description:
CoId={104D3F70-1CB1-40A1-A229-7F7E5A943E64}: The user SYSTEM has started dialing a VPN connection using a all-user connection profile named ZZZZZZZ. The connection settings are: 
Dial-in User = ******
VpnStrategy = L2TP
DataEncryption = Require
PrerequisiteEntry = 
AutoLogon = No
UseRasCredentials = Yes
Authentication Type = CHAP/MS-CHAPv2 
Ipv4DefaultGateway = No
Ipv4AddressAssignment = By Phonebook Entry
Ipv4DNSServerAssignment = By Phonebook Entry
Ipv6DefaultGateway = Yes
Ipv6AddressAssignment = By Server
Ipv6DNSServerAssignment = By Server
IpDnsFlags = 
IpNBTEnabled = No
UseFlags = Private Connection
ConnectOnWinlogon = No
IPsec authentication for L2TP = Pre-shared key.

Log Name:      Application
Source:        RasClient
Date:          05/04/2019 10:34:56
Event ID:      20222
Task Category: None
Level:         Information
Keywords:      Classic
User:          N/A
Computer:      *******.******.local
Description:
CoId={104D3F70-1CB1-40A1-A229-7F7E5A943E64}: The user SYSTEM is trying to establish a link to the Remote Access Server for the connection named ZZZZZZZ using the following device: 
Server address/Phone Number = VVV.MMM.WW.168
Device = WAN Miniport (L2TP)
Port = VPN0-3
MediaType = VPN.

А вот и конфигурация роутера vyatta:

interfaces {
    ethernet eth0 {
        address 192.168.1.254/24
        duplex auto
        hw-id 00:0c:29:0f:29:48
        smp_affinity auto
        speed auto
    }
    ethernet eth1 {
        address VVV.MMM.WW.168/24
        duplex auto
        hw-id 00:0c:29:0f:29:52
        smp_affinity auto
        speed auto
    }
    loopback lo {
    }
}
nat {
    destination {
        rule 2 {
            description "IPSEC TUNNELING PORT 500"
            destination {
                port 500
            }
            inbound-interface eth1
            log enable
            protocol tcp_udp
            translation {
                port 500
            }
        }
        rule 3 {
            description "IPSEC TUNNELING PORT 4500"
            destination {
                port 4500
            }
            inbound-interface eth1
            log enable
            protocol tcp_udp
            translation {
                port 4500
            }
        }
        rule 4 {
            description "VPN CLIENT TUNNELING PORT 1701"
            destination {
                port 1701
            }
            inbound-interface eth1
            log enable
            protocol tcp_udp
            translation {
                port 1701
            }
        }
    }
    source {
        rule 10 {
            description "OUTSIDE CONNECTION"
            outbound-interface eth1
            source {
                address 192.168.1.0/24
            }
            translation {
                address masquerade
            }
        }
    }
}
protocols {
    rip {
        network 192.168.1.0/24
    }
    static {
        route 10.1.1.0/24 {
            next-hop 192.168.1.1 {
            }
        }
        route 192.168.2.0/24 {
            next-hop 192.168.1.1 {
            }
        }
        route 192.168.3.0/24 {
            next-hop 192.168.1.1 {
            }
        }
    }
}
service {
    ssh {
        disable-password-authentication
        port 22
    }
}
system {
    config-management {
        commit-revisions 20
    }
    console {
    }
    gateway-address VVV.MMM.WW.1
    host-name vyatta
    login {
        user vyatta {
            authentication {
                encrypted-password ****************
                public-keys vyatta@vyatta {
                    key ****************
                    type ssh-rsa
                }
            }
            level admin
        }
    }
    name-server 8.8.8.8
    name-server 192.168.1.2
    name-server 192.168.3.2
    ntp {
        server 0.vyatta.pool.ntp.org {
        }
    }
    package {
        auto-sync 1
        repository community {
            components main
            distribution stable
            password ****************
            url http://packages.vyatta.com/vyatta
            username ""
        }
    }
    syslog {
        global {
            facility all {
                level notice
            }
            facility protocols {
                level debug
            }
        }
    }
    time-zone GMT
}
vpn {
    ipsec {
        ipsec-interfaces {
            interface eth1
        }
        nat-networks {
            allowed-network 10.1.1.0/24 {
            }
            allowed-network 192.168.1.0/24 {
            }
            allowed-network 192.168.2.0/24 {
            }
            allowed-network 192.168.3.0/24 {
            }
        }
        nat-traversal enable
    }
    l2tp {
        remote-access {
            authentication {
                local-users {
                    username XYZ {
                        password ****************
                    }
                }
                mode local
            }
            client-ip-pool {
                start 192.168.1.100
                stop 192.168.1.110
            }
            dns-servers {
                server-1 192.168.1.2
            }
            ipsec-settings {
                authentication {
                    mode pre-shared-secret
                    pre-shared-secret ****************
                }
                ike-lifetime 3600
            }
            outside-address VVV.MMM.WW.168
            outside-nexthop 0.0.0.0
        }
    }
}

Что знаю и пробовал:

Пожалуйста, дайте мне знать, если вы знаете, что могло вызвать эту проблему.

Буду очень признателен за любые советы, идеи, даже предположения о том, что я могу проверить. :)

Спасибо.

Решением было перезапустить сервер Windows ...

После трех недель борьбы теперь он работает, и я не менял конфигурацию на vyatta или на сервере Windows.

Мы пробовали много разных вещей, разные виртуальные маршрутизаторы, разные протоколы и т.д., но ничего не помогло.

Мои наблюдения и советы для всех, у кого есть такая же или похожая проблема (также для себя в будущем):

  • Модуль удаленного доступа и маршрутизации Windows полон ошибок, большую часть времени он просто не работает без причины, и никакое сообщение отладки не может сказать вам, почему. Если у вас есть другие варианты, используйте их.
  • Если вы создали новое соединение для дозвона, но оно не работает, удалите его и создать его с другим именем. По какой-то причине важно другое имя. Иногда предыдущее соединение остается в реестре и в других местах даже после их удаления и выдает ту же ошибку или какую-то загадочную ошибку, например «Интерфейс отключен» через 4 секунды без каких-либо журналов.
  • перезапуск службы может помочь, но не всегда. Если у вас есть возможность перезапустить весь сервер, попробуйте.
  • Два соединения L2tp - это нормально, но три не работали.
  • Порты распределяются странным образом, изначально у нас было пять портов L2tp, а сервер выбрал последние два (возможно, он не смог подключиться первые три раза ... Я просто догадываюсь). Для нас это помогло увеличить количество портов до 10. Если вы не можете увеличить количество портов в пользовательском интерфейсе (из-за другой ошибки), то сделайте это в реестре и перезапустите сервер (опять же, перезапуск службы не работает. Покажи фокус).