remote section ( Phase1 )
Previous  Next


remote (address | anonymous) [[port]] [inherit parent] { statements }

    specifies the parameters for IKE phase 1 for each remote node.
    The default port is 500.  If anonymous is specified, the state-
    ments apply to all peers which do not match any other remote
    directive.

    Sections with inherit parent statements (where parent is either
    address or a keyword anonymous) have all values predefined to
    those of a given parent.  In these sections it is enough to rede-
    fine only the changed parameters.

    The following are valid statements.

    exchange_mode (main | aggressive | base);
        defines the exchange mode for phase 1 when racoon is the
        initiator.  It also means the acceptable exchange mode
        when racoon is responder.  More than one mode can be
        specified by separating them with a comma.  All of the
        modes are acceptable.  The first exchange mode is what
        racoon uses when it is the initiator.

    doi ipsec_doi;
        means to use IPsec DOI as specified in RFC 2407.  You can
        omit this statement.

    situation identity_only;
        means to use SIT_IDENTITY_ONLY as specified in RFC 2407.
        You can omit this statement.

    identifier idtype;
        is obsolete.  Instead, use my_identifier.

    my_identifier [qualifier] idtype ...;
        specifies the identifier sent to the remote host and the
        type to use in the phase 1 negotiation.  address, fqdn,
        user_fqdn, keyid, and asn1dn can be used as an idtype;
        the qualifier is currently only used for keyid, and can
        be either file or tag.  The possible values are :

        my_identifier address [address];
            the type is the IP address.  This is the default
            type if you do not specify an identifier to use.

        my_identifier user_fqdn string;
            the type is a USER_FQDN (user fully-qualified
            domain name).

        my_identifier fqdn string;
            the type is a FQDN (fully-qualified domain name).

        my_identifier keyid [file] file;
            the type is a KEY_ID, read from the file.

        my_identifier keyid tag string;
            the type is a KEY_ID, specified in the quoted
            string.

        my_identifier asn1dn [string];
            the type is an ASN.1 distinguished name.  If
            string is omitted, racoon(8) will get the DN from
            the Subject field in the certificate.

    xauth_login [string];
        specifies the login to use in client-side Hybrid authen-
        tication.  It is available only if racoon(8) has been
        built with this option.  The associated password is
        looked up in the pre-shared key files, using the login
        string as the key id.

    peers_identifier idtype ...;
        specifies the peer's identifier to be received.  If it is
        not defined then racoon(8) will not verify the peer's
        identifier in ID payload transmitted from the peer.  If
        it is defined, the behavior of the verification depends
        on the flag of verify_identifier.  The usage of idtype is
        the same as my_identifier except that the individual com-
        ponent values of an asn1dn identifier may specified as *
        to match any value
        (e.g. "C=XX, O=MyOrg, OU=*, CN=Mine").
        Alternative acceptable peer identifiers may be specified
        by repeating the peers_identifier statement.

    verify_identifier (on | off);
        If you want to verify the peer's identifier, set this to
        on.  In this case, if the value defined by
        peers_identifier is not the same as the peer's identifier
        in the ID payload, the negotiation will failed.  The
        default is off.

    certificate_type certspec;
        specifies a certificate specification.  certspec is one
        of followings:

        x509 certfile privkeyfile;
            certfile means a file name of a certificate.
            privkeyfile means a file name of a secret key.

    ca_type cacertspec;
        specifies a root certificate authority specification.
        cacertspec is one of followings:

        x509 cacertfile;
            cacertfile means a file name of the root certifi-
            cate authority.  Default is /etc/openssl/cert.pem

    mode_cfg (on | off);

        Gather network information through ISAKMP mode
        configuration.  Default is off.

    weak_phase1_check (on | off);
        Tells racoon to act on unencrypted deletion messages on
        phase 1.  This is a small security risk, so the default
        is off, meaning that racoon will keep on trying to estab-
        lish a connection even if the user credentials ar wrong,
        for instance.

    peers_certfile (dnssec | certfile);
        If dnssec is defined, racoon(8) will ignore the CERT pay-
        load from the peer, and try to get the peer's certificate
        from DNS instead.  If certfile is defined, racoon(8) will
        ignore the CERT payload from the peer, and will use this
        certificate as the peer's certificate.

    script script phase1_up
    script script phase1_down

        Shell scripts that get executed when a phase 1 SA goes up
        or down.  Both scripts get either phase1_up or
        phase1_down as first argument, and the following vari-
        ables are set in their environment:
        LOCAL_ADDR
            The local address of the phase 1 SA.
        LOCAL_PORT
            The local port used for IKE for the phase 1 SA.
        REMOTE_ADDR
            The remote address of the phase 1 SA.
        REMOTE_PORT
            The remote port used for IKE for the phase 1 SA.

        The following variables are only set if mode_cfg was
        enabled:
        INTERNAL_ADDR4
            An IPv4 internal address obtained by ISAKMP mode
            config.
        INTERNAL_NETMASK4
            An IPv4 internal netmask obtained by ISAKMP mode
            config.
        INTERNAL_CIDR4
            An IPv4 internal netmask obtained by ISAKMP mode
            config, in CIDR notation.
        INTERNAL_DNS4
            The first internal DNS server IPv4 address
            obtained by ISAKMP mode config.
        INTERNAL_DNS4_LIST
            A list of internal DNS servers IPv4 address
            obtained by ISAKMP mode config, separated by spa-
            ces.
        INTERNAL_WINS4
            The first internal WINS server IPv4 address
            obtained by ISAKMP mode config.
        INTERNAL_WINS4_LIST
            A list of internal WINS servers IPv4 address
            obtained by ISAKMP mode config, separated by spa-
            ces.
        SPLIT_INCLUDE
            The space separated list of IPv4 addresses and
            masks (address slash mask) that define the net-
            works to be encrypted (as opposed to the default
            where all the traffic should be encrypted) ;
            obtained by ISAKMP mode config ; SPLIT_INCLUDE
            and SPLIT_LOCAL are mutually exclusive.
        SPLIT_LOCAL
            The space separated list of IPv4 addresses and
            masks (address slash mask) that define the net-
            works to be considered local, and thus excluded
            from the tunnels ; obtained by ISAKMP mode con-
            fig.
        DEFAULT_DOMAIN
            The DNS default domain name obtained by ISAKMP
            mode config.

    send_cert (on | off);
        If you do not want to send a certificate for some reason,
        set this to off.  The default is on.

    send_cr (on | off);
        If you do not want to send a certificate request for some
        reason, set this to off.  The default is on.

    verify_cert (on | off);
        If you do not want to verify the peer's certificate for
        some reason, set this to off.  The default is on.

    lifetime time number timeunit;
        Define a lifetime of a certain time which will be pro-
        posed in the phase 1 negotiations.  Any proposal will be
        accepted, and the attribute(s) will be not proposed to
        the peer if you do not specify it (them).  They can be
        individually specified in each proposal.

    ike_frag (on | off);
        Enable receiver-side IKE fragmentation, if racoon(8) has
        been built with this feature.  This extension is there to
        work around broken firewalls that do not work with frag-
        mented UDP packets.  IKE fragmentation is always enabled
        on the sender-side, and it is used if the peer advertises
        itself as IKE fragmentation capable.

    esp_frag fraglen;
        This option is only relevant if you use NAT traversal in
        tunnel mode.  Its purpose is to work around broken DSL
        routers that reject UDP fragments, by fragmenting the IP
        packets before ESP encapsulation.  The result is ESP over
        UDP of fragmented packets instead of fragmented ESP over
        UDP packets (i.e., IP:UDP:ESP:frag(IP) instead of
        frag(IP:UDP:ESP:IP)).  fraglen is the maximum size of the
        fragments.  552 should work anywhere, but the higher
        fraglen is, the better is the performance.

        Note that because PMTU discovery is broken on many sites,
        you will have to use MSS clamping if you want TCP to work
        correctly.

    initial_contact (on | off);
        enable this to send an INITIAL-CONTACT message.  The
        default value is on.  This message is useful only when
        the implementation of the responder chooses an old SA
        when there are multiple SAs with different established
        time, and the initiator reboots.  If racoon did not send
        the message, the responder would use an old SA even when
        a new SA was established.  The KAME stack has the switch
        in the system wide value net.key.preferred_oldsa.  when
        the value is zero, the stack always uses a new SA.

    passive (on | off);
        If you do not want to initiate the negotiation, set this
        to on.  The default value is off.  It is useful for a
        server.

    proposal_check level;
        specifies the action of lifetime length and PFS of the
        phase 2 selection on the responder side, and the action
        of lifetime check in phase 1.  The default level is
        strict.  If the level is:

        obey        the responder will obey the initiator anytime.

        strict        If the responder's length is longer than the ini-
                tiator's one, the responder uses the initiator's
                one.  Otherwise it rejects the proposal.  If PFS
                is not required by the responder, the responder
                will obey the proposal.  If PFS is required by
                both sides and if the responder's group is not
                equal to the initiator's one, then the responder
                will reject the proposal.

        claim        If the responder's length is longer than the ini-
                tiator's one, the responder will use the initia-
                tor's one.  If the responder's length is shorter
                than the initiator's one, the responder uses its
                own length AND sends a RESPONDER-LIFETIME
                notify message to an initiator in the case of lifetime
                (phase 2 only).  For PFS, this directive behaves
                the same as strict.

        exact        If the initiator's length is not equal to the
                responder's one, the responder will reject the
                proposal.  If PFS is required by both sides and
                if the responder's group is not equal to the ini-
                tiator's one, then the responder will reject the
                proposal.

    support_proxy (on | off);
        If this value is set to on, then both values of ID pay-
        loads in the phase 2 exchange are always used as the
        addresses of end-point of IPsec-SAs.  The default is off.

    generate_policy (on | off | require | unique);
        This directive is for the responder.  Therefore you
        should set passive to on in order that racoon(8) only
        becomes a responder.  If the responder does not have any
        policy in SPD during phase 2 negotiation, and the direc-
        tive is set to on, then racoon(8) will choose the first
        proposal in the SA payload from the initiator, and gener-
        ate policy entries from the proposal.  It is useful to
        negotiate with clients whose IP address is allocated
        dynamically.  Note that an inappropriate policy might be
        installed into the responder's SPD by the initiator, so
        other communications might fail if such policies are
        installed due to a policy mismatch between the initiator
        and the responder.  on and require values means the same
        thing (generate a require policy).  unique tells racoon
        to set up unique policies, with a monotoning increasing
        reqid number between 1 and IPSEC_MANUAL_REQID_MAX).
        This directive is ignored in the initiator case.  The default
        value is off.

    nat_traversal (on | off | force);
        This directive enables use of the NAT-Traversal IPsec
        extension (NAT-T).  NAT-T allows one or both peers to
        reside behind a NAT gateway (i.e., doing address- or
        port-translation).  Presence of NAT gateways along the
        path is discovered during phase 1 handshake and if found,
        NAT-T is negotiated.  When NAT-T is in charge, all ESP
        and AH packets of a given connection are encapsulated
        into UDP datagrams (port 4500, by default).  Possible
        values are:

        on        NAT-T is used when a NAT gateway is detected
                between the peers.

        off        NAT-T is not proposed/accepted.  This is the
                default.

        force        NAT-T is used regardless if a NAT is detected
                between the peers or not.

        Please note that NAT-T support is a compile-time option.
        Although it is enabled in the source distribution by
        default, it may not be available in your particular
        build.  In that case you will get a warning when using
        any NAT-T related config options.

    dpd_delay delay;
        This option activates the DPD and sets the time (in sec-
        onds) allowed between 2 proof of liveness requests.  The
        default value is 0, which disables DPD monitoring, but
        still negotiates DPD support.

    dpd_retry delay;
        If dpd_delay is set, this sets the delay (in seconds) to
        wait for a proof of liveness before considering it as
        failed and send another request.  The default value is 5.

    dpd_maxfail number;
        If dpd_delay is set, this sets the maximum number of
        proof of liveness to request (without reply) before con-
        sidering the peer is dead.  The default value is 5.

    nonce_size number;
        define the byte size of nonce value.  Racoon can send any
        value although RFC2409 specifies that the value MUST be
        between 8 and 256 bytes.  The default size is 16 bytes.

    proposal { sub-substatements }

        encryption_algorithm algorithm;
            specify the encryption algorithm used for the
            phase 1 negotiation.  This directive must be
            defined.  algorithm is one of following: des,
            3des, blowfish, cast128, aes for Oakley.  For
            other transforms, this statement should not be
            used.

        hash_algorithm algorithm;
            define the hash algorithm used for the phase 1
            negotiation.  This directive must be defined.
            algorithm is one of following: md5, sha1, sha256,
            sha384, sha512 for Oakley.

        authentication_method type;
            defines the authentication method used for the
            phase 1 negotiation.  This directive must be
            defined.  type is one of: pre_shared_key, rsasig,
            gssapi_krb, hybrid_rsa_server, hybrid_rsa_client,
            xauth_rsa_server, xauth_rsa_client,
            xauth_psk_server or xauth_psk_client.

        dh_group group;
            define the group used for the Diffie-Hellman
            exponentiations.  This directive must be defined.
            group is one of following: modp768, modp1024,
            modp1536, modp2048, modp3072, modp4096, modp6144,
            modp8192.  Or you can define 1, 2, 5, 14, 15, 16,
            17, or 18 as the DH group number.  When you want
            to use aggressive mode, you must define the same
            DH group in each proposal.

        lifetime time number timeunit;
            define lifetime of the phase 1 SA proposal.
            Refer to the description of the lifetime direc-
            tive defined in the remote directive.

        gss_id string;
            define the GSS-API endpoint name, to be included
            as an attribute in the SA, if the gssapi_krb
            authentication method is used.  If this is not
            defined, the default value of `host/hostname' is
            used, where hostname is the value returned by the
            hostname(1) command.