/usr/home

just some random thoughts

IPsec Tunnel zwischen Juniper SRX und FritzBox aufbauen

Zugegebenermaßen eine seltene Kombination, aber genau deswegen dokumentiere ich das hier mal. Leider ist die Doku zu den verfügbaren Proposals der FritzBoxen etwas dürftig:

Juniper SRX

security {
        proposal FritzBox {
            authentication-method pre-shared-keys;
            dh-group group2;
            authentication-algorithm sha1;
            encryption-algorithm aes-256-cbc;
            lifetime-seconds 3600;
        }
        policy FritzBox-zuhause {
            mode aggressive;
            proposals FritzBox;
            pre-shared-key ascii-text "foobarbaz"; ## SECRET-DATA
        }
        gateway zuhause {
            ike-policy FritzBox-zuhause;
            dynamic hostname something.myfritz.net;
            local-identity hostname my.ddns.ip;
            external-interface pp0.0;
            version v1-only;
        }
    }
    ipsec {
        proposal FritzBox {
            protocol esp;
            authentication-algorithm hmac-sha1-96;
            encryption-algorithm aes-256-cbc;
        }
        policy Fritzbox {
            perfect-forward-secrecy {
                keys group2;
            }
            proposals FritzBox;
        }
        vpn zuhause {
            bind-interface st0.1;
            ike {
                gateway zuhause;
                ipsec-policy Fritzbox;
            }
            traffic-selector 1 {
                local-ip 192.168.0.0/24;
                remote-ip 192.168.1.0/24;
            }
    }
interfaces {
    st0 {
        /* zuhause */
        unit 1 {
            family inet;
        }
    }
}

Fritzbox ipsec.cfg

Die keepalive_ip sorgt dafür dass die Fritzbox den VPN Tunnel autmatisch wieder aufbaut, wenn die Verbindung mal verloren geht. Andernfalls passiert dies erst, wenn Traffic vom Netz hinter der Fritzbox gesendet wird. Ich habes es übrigens nie hinbekommen, dass die SRX den Tunnel starten konnte…

/*
* vpn.cfg
*/
vpncfg {
        connections {
                enabled = yes;
                editable = yes;
                conn_type = conntype_lan;
                name = "my.ddns.ip";
                always_renew = yes;
                reject_not_encrypted = no;
                dont_filter_netbios = yes;
                localip = 0.0.0.0;
                local_virtualip = 0.0.0.0;
                remotehostname = my.ddns.ip;
                remote_virtualip = 0.0.0.0;
                keepalive_ip = 192.168.0.1;
                localid {
                        fqdn = something.myfritz.net;
                }
                remoteid {
                        fqdn = my.ddns.ip;
                }
                mode = phase1_mode_aggressive;
                phase1ss = "all/all/all";
                keytype = connkeytype_pre_shared;
                key = "foobarbaz";
                cert_do_server_auth = no;
                use_nat_t = yes;
                use_xauth = no;
                use_cfgmode = no;
                phase2localid {
                        ipnet {
                                ipaddr = 192.168.1.0;
                                mask = 255.255.255.0;
                        }
                }
                phase2remoteid {
                        ipnet {
                                ipaddr = 192.168.0.0;
                                mask = 255.255.255.0;
                        }
                }
                phase2ss = "esp-des|3des-all/ah-all/comp-no/pfs";
                accesslist = 
                "permit ip any 192.168.0.0 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";
}