IPSEC между pfSense 2.3.* и FritzBox



  • IPSEC между pfSense 2.3.* и FritzBox
    Помогите разобраться почему коннект прошел успешно, но сети друг дружку не видят :-(
    начнем с того как я запустил линк между 2я зверьками

    pfSense-Config
    
    VPN / IPsec /Tunnels / Edit Phase 1
    
    Disbaled = Unchecked
    General Information
    Key Exchange version = V1
    Internet Protocol  = IPV4
    Interface = WAN
    Remote Gateway = DYNDNS of FritzBox
    Description = "Name of VPN"
    
    Phase 1 Proposal (Authentication)
    Authentication Method = Mutual PSK
    Negotiation mode = Main
    My identifier = My IP adress
    Peer identifier = Distinguished name -> DYNDNS of FritzBox
    Pre-Shared Key = Preshared-Key
    
    Phase 1 Proposal (Algorithms)
    Encryption Algorithm = 3DES
    Hash Algorithm = SHA1
    DH Group = 1 (768 bit)
    Lifetime (Seconds) = 28800
    
    Advanced Options
    Disable rekey = Unchecked
    Responder Only = Unchecked
    NAT Traversal  = Force
    Dead Peer Detection = checked
    Delay = 10
    Max failures = 5
    
    VPN / IPsec / Tunnels / Edit Phase 2
    
    General Information
    Disabled = Unchecked
    Mode = Tunnel IPv4
    Local Network = LAN subnet
    NAT/BINAT translation = None
    Remote Network = Network -> Fritzboxnetwork (example 192.168.1.0 / 24)
    Description = "Name of VPN"
    
    Phase 2 Proposal (SA/Key Exchange)
    Protocol = ESP
    Encryption Algorithms = 3DES
    Hash Algorithms = SHA1
    PFS key group = 1 (786 bit)
    Lifetime = 3600
    
    Advanced Configuration
    Automatically ping host = IP-Adress of FritzBox
    

    И настройка FritzBox

    FritzBox Configuration
    
    vpncfg {
            connections {
                    enabled = yes;
                    conn_type = conntype_lan;
                    name = "Name of VPN";
                    always_renew = yes;
                    reject_not_encrypted = no;
                    dont_filter_netbios = yes;
                    localip = 0.0.0.0;
                    local_virtualip = 0.0.0.0;
                    remoteip = STATIC-IP of PFSENSE;
                    remote_virtualip = 0.0.0.0;
                    localid {
                            ipaddr = "STATIC-IP of FritzBox";
                    }
                    remoteid {
                            ipaddr = "STATIC-IP of PFSENSE";
                    }
                    mode = phase1_mode_idp;
                    phase1ss = "def/3des/sha";
                    keytype = connkeytype_pre_shared;
                    key = "Preshared-Key";
                    cert_do_server_auth = no;
                    use_nat_t = yes;
                    use_xauth = no;
                    use_cfgmode = no;
                    phase2localid {
                            ipnet {
                                    ipaddr = Fritzboxnetwork;
                                    mask = 255.255.255.0;
                            }
                    }
                    phase2remoteid {
                            ipnet {
                                    ipaddr = Pfsensenetwork;
                                    mask = 255.255.255.0;
                            }
                    }
                    phase2ss = "esp-3des-sha/ah-no/comp-no/pfs";
                    accesslist = "permit ip any Pfsensenetwork 255.255.255.0";
            }
            ike_forward_rules = "udp 0.0.0.0:500 0.0.0.0:500",
                                "udp 0.0.0.0:4500 0.0.0.0:4500";
    }
    

    Пробовал почти такой же способ подключения только использовал режим - mode = phase1_mode_aggressive;
    почему то даже не поднимался, писало в логах что превышен интервал ожидания - на FritzBox

    Скажите как заставить их обмениваться данными между сетями, спасибо



  • Доброе.
    Правило fw на LAN pf создали ? Покажите tracert с машины за пф до машины за фрицем.



  • ext@route:~$ traceroute 192.168.40.1
    traceroute to 192.168.40.1 (192.168.40.1), 30 hops max, 60 byte packets
    pfSense.name.com (192.168.50.254)  0.314 ms  0.196 ms  0.307 ms
    2  * * *
    3  * * *
    4  * * *
    5  * * *
    6  * * *

    Firewall->Rules->LAN:
    Protocol IPv4*
    Soutre 192.168.40.0/24
    Port *
    Destination *
    Port *
    Gateway *
    Queue none

    Firewall->Rules->IPsec
    Protocol IPv4 TCP/UDP 
    Soutre *
    Port *
    Destination *
    Port *
    Gateway *
    Queue none

    IPv4 TCP/UDP
    Soutre *
    Port *
    Destination *
    Port 500 (ISAKMP)
    Gateway *
    Queue none



  • 1. Создать правило на ЛАН пф, где src - LAN net, dst - сеть на др конце ипсек. И поместить его самым первым.
    2. Покажите табл. марш-ции на пф при поднятом. ипсек.



  • Создать правило на ЛАН пф, где src - LAN net, dst - сеть на др конце ипсек. И поместить его самым первым.

    Создал
    при пинге с локального пК появилось сообщение "Превышен строк жизни TLL при передаче данных"



  • Далее.



  • netstat -i
    Name    Mtu Network      Address              Ipkts Ierrs Idrop    Opkts Oerrs  Coll
    em0    1500 <link#1>2d:50:a1:cb:d9:18 249402585    0    0 130965077    0    0
    em0      - ae50::a059:e1 ae30::a019:e1aa:a        0    -    -        2    -    -
    em1    1500 <link#2>12:c2:1d:27:e9:b0 130375997  5698    0 243016512    0    0
    em1      - ae50::40c9:10 ae50::40c9:1f0f:f        0    -    -        1    -    -
    em1      - 192.168.50.0  pfSense            1412193    -    -  977419    -    -
    pflog 33160 <link#3>0    0    0  1584619    0    0
    pfsyn  1500 <link#4>0    0    0        0    0    0
    enc0  1536 <link#5>23345    0    0    28781    0    0
    lo0  16384 <link#6>106314    0    0  106418    0    0
    lo0      - your-net      localhost          106676    -    -  106407    -    -
    lo0      - localhost    ::1                      0    -    -        0    -    -
    lo0      - ae50::1%lo0  ae50::1%lo0              0    -    -        0    -    -
    pppoe  1492 <link#7>247378974    0    0 130836519    0    0
    pppoe    - ae50::15df:ff ae50::15df:dcd2:1        0    -    -        1    -    -
    pppoe    - 76.76.76.2 mail.name.com    28383963    -    -        8    -    -
    ovpns  1500 <link#8>92637    0    0    52896    0    0
    ovpns    - ae50::15df:ff ae50::15df:dcd2:1        0    -    -        1    -    -
    ovpns    - 10.10.11.1/32 10.10.11.1              3    -    -        3    -    -
    ovpnc  1500 <link#9>66872127    0    0 31855606    0    0
    ovpnc    - ae50::15df:ff ae50::15df:dcd2:1        0    -    -        0    -    -
    ovpnc    - 10.10.10.2/32  10.10.10.2                7    -    -    3475    -    -</link#9></link#8></link#7></link#6></link#5></link#4></link#3></link#2></link#1>



  • Доброе.
    https://doc.pfsense.org/index.php/Viewing_Routes или netstat -rn



  • У меня там в таблице ничего не видно про 40 подсеть ( и про IPsec (



  • @werter:

    Доброе.
    https://doc.pfsense.org/index.php/Viewing_Routes или netstat -rn

    Маршруты IPsec не видны в таблице маршрутов. Ни в GUI, ни через netstat -rn.
    Не знаю, как в других ОС, но для pfSense и Микротик ROS это так.



  • Status->IPsec->SPDs
    Sourse Destination Direction Protocol Tunnel endpoint
    192.168.40.0/24 192.168.50.0/24 ◄ Inbound ESP 8.62.62.50 -> 76.76.76.253
    192.168.50.0/24 192.168.40.0/24 ► Outbound ESP 76.76.76.253 -> 8.62.62.50



  • @cvhideki:

    Status->IPsec->SPDs
    Sourse Destination Direction Protocol Tunnel endpoint
    192.168.40.0/24 192.168.50.0/24 ◄ Inbound ESP 8.62.62.50 -> 76.76.76.253
    192.168.50.0/24 192.168.40.0/24 ► Outbound ESP 76.76.76.253 -> 8.62.62.50

    В  StatusIPsec-Overview
    Phase 2 активна?
    Если да, то на pfSense кроме разрешающего правила в Firewall-Rules-IPsec
    IPv4 * * * * * * none  
    ничего не нужно

    Возможно, не хватает чего-то  на стороне FritzBox.
    Например, для Микротик нужно иметь первым неочевидное правило вида:
    /ip firewall nat
    add chain=srcnat comment="NAT for IPSEC" dst-address=
        192.168.0.0/24 src-address=10.0.3.0/2

    и 2 правила accept для input и forward из сети 192.168.0.0/24 в сеть 10.0.3.0/24

    P.S.
    Возможно - будет полезно еще кому-то.

    Если заработает - не используйте виджет Ipsec в дашбоард pfSense:
    https://forum.pfsense.org/index.php?topic=107132.0
    https://redmine.pfsense.org/issues/6318
    Выражается в недоступности GUI, плюс отваливается Open VPN.
    В 2.3.2_1 эта ошибка точно есть, в 2.3.3 - не проверял.



  • Status / IPsec / Overview
    http://joxi.ru/5mdoyY8iwD9ar1
    Firewall / Rules / IPsec
    http://joxi.ru/L21lNzyidElJmX



  • Не вижу phase 2 на вашем скриншоте. Для примера привожу свой, где активны три  phase 2

    pfSense у вас - responder, на WAN должны быть pass правила:
    UDP порт 500 - у вас оно почему-то в правилах для IPsec. Зачем?
    протокол 50 - ESP
    протокол 51 - AH

    ![Status IPsec Overview.png](/public/imported_attachments/1/Status IPsec Overview.png)
    ![Status IPsec Overview.png_thumb](/public/imported_attachments/1/Status IPsec Overview.png_thumb)



  • добавил правлила pfSense на WAN pass:
    UDP порт 500, 50, 51
    На счет  phase 2 я не совсем понял
    у меня настройки IPsec такие

    Изменил    VPN / IPsec / Tunnels / Edit Phase 1
    Negotiation mode - с main на Aggressive
    (IKEv1 initiator)

    но пинг с PfSense:
    36 bytes from localhost (127.0.0.1): Redirect Host(New addr: IP провайдера)
    Vr HL TOS  Len  ID Flg  off TTL Pro  cks      Src      Dst
    4  5  00 0054 9792  0 0000  40  01 0000 127.0.0.1  192.168.40.1






  • протокол 50 - ESP
    протокол 51 - AH

    добавил правлила pfSense на WAN pass:
    UDP порт 500, 50, 51

    50 и 51 - это не номера портов, а "стандартные" номера протоколов.
    В pfSense эти номера не видны, я их привел просто для справки.
    Список протоколов, инкапсулируемых в IP:
    https://ru.wikipedia.org/wiki/Список_протоколов,%D0%B8%D0%BD%D0%BA%D0%B0%D0%BF%D1%81%D1%83%D0%BB%D0%B8%D1%80%D1%83%D0%B5%D0%BC%D1%8B%D1%85%D0%B2_IP

    В pfSense на WAN нужно открыть ESP, AH и для UDP - ISAKMP (можно добавить еще и IPSEC NAT-T)



  • Спасибо учасникам: werter, pigbrother
    Все заработало путем добавление и удаление правил фаервола и режимов подключения
    mode = phase1_mode_aggressive;
    mode = phase1_mode_idp;