F5BigIkePeer¶
F5BigIkePeer is a Custom Resource Definition (CRD) that configures an Internet Protocol Security (IPsec) tunnel on F5 BIG-IP Next Cloud-Native Network Function (CNF). The CR defines the IKE Phase 1 negotiation parameters (proposals, authentication, lifetime), one or more IPsec policies with Phase 2 proposals, and traffic selectors that determine which traffic is routed through the IPsec tunnel.
Use the F5BigIpsecIkePeer CR to:
Establish an IKE connection with a remote peer using certificate-based (X.509) or preshared key (PSK) authentication.
Configure IKE Phase 1 cryptographic proposals including integrity, encryption, pseudo-random function (PRF), and Diffie-Hellman (DH) group algorithms.
Define one or more IPsec policies with Phase 2 proposals for tunnel encryption and integrity.
Specify traffic selectors that filter source and destination traffic for the IPsec tunnel.
Configure Dead Peer Detection (DPD) intervals and IKE security association lifetimes.
CR parameters¶
The sections and list of parameters to define the F5BigIkePeer CR.
metadata¶
| Parameter | Description |
|---|---|
name |
The name of the IKE peer configuration. |
namespace |
Specifies the Kubernetes namespace in which the IKE peer will be installed. |
spec¶
The following fields are required: name, remoteAddress, local, remote, ipsecPolicies.
| Parameter | Description | Default |
|---|---|---|
name string |
The name of the IKE peer configuration object used for identification. Must match the pattern ^[0-9a-zA-Z._-]*$. Length: 1–255 characters. You must specify this parameter. |
|
remoteAddress string |
The remote peer IP address for the IKE connection. Accepts IPv4 or IPv6 format. Maximum length: 45 characters. You must specify this parameter. | |
lifetime integer |
The length of time, in minutes, before the IKE Security Association (SA) expires. Valid range: 1–4294967295. | 1440 |
dpdDelay integer |
The amount of time, in seconds, allowed between two Dead Peer Detection (DPD) proof-of-liveness requests. Valid range: 0–4294967295. | 30 |
spec.proposals[]¶
Defines the list of IKE Phase 1 cryptographic algorithm proposals for key exchange and authentication. Each entry in the proposals array defines a single proposal containing integrity, encryption, Pseudo-Random Function (PRF), and DH group algorithms.
| Parameter | Description | Default |
|---|---|---|
integrity string |
The integrity algorithm used for IKE authentication during Phase 1 negotiation. Allowed values: md5, sha1, sha256, sha384, sha512, aes-gcm128, aes-gcm192, aes-gcm256. |
sha512 |
encryption string |
The encryption algorithm used for IKE Phase 1 SA negotiation. Allowed values: des, 3des, aes128, aes192, aes256, aes-gcm128, aes-gcm192, aes-gcm256. |
aes256 |
prf string |
The Pseudo-Random Function (PRF) algorithm used to derive keying material for all cryptographic functions. Allowed values: sha1, sha256, sha384, sha512. |
sha512 |
dhGroup string |
The Diffie-Hellman (DH) group for IKE Phase 1 and Phase 2 negotiations. Allowed values: none, ecp256, ecp384, ecp521, modp768, modp1024, modp1536, modp2048, modp3072, modp4096, modp6144, modp8192. |
modp2048 |
spec.local¶
Defines the local peer’s IKE authentication, including identity, method, and credentials. The following fields are required: id, auth.
| Parameter | Description | Default |
|---|---|---|
id string |
The local peer's IKE identity presented for authentication. Accepts an IPv4 address, IPv6 address, or Fully Qualified Domain Name (FQDN). Length: 1–255 characters. You must specify this parameter. | |
auth string |
The authentication method for the local peer in IKE negotiation. Allowed values: certificate, presharedkey. You must specify this parameter. |
spec.local.certificateSecretRef¶
References a Kubernetes secret that contains the local peer’s certificate, private key, and optional passphrase. Required when local.auth is set to certificate.
| Parameter | Description | Default |
|---|---|---|
name string |
The name of the Kubernetes secret containing the local peer's certificate, private key, and optional passphrase. Must match the pattern ^[0-9a-zA-Z.\-_]*$. Length: 1–255 characters. You must specify this parameter. |
|
certificate string |
The key name in the secret for the local peer certificate. Must match the pattern ^[0-9a-zA-Z.\-_]*$. Maximum length: 255 characters. |
"tls.crt" |
privateKey string |
The key name in the secret for the private key. Must match the pattern ^[0-9a-zA-Z.\-_]*$. Maximum length: 255 characters. |
"tls.key" |
keyPassphrase string |
The key name in the secret for the passphrase. Required only if the private key is encrypted. Must match the pattern ^[0-9a-zA-Z.\-_]*$. Maximum length: 255 characters. |
"" |
spec.remote¶
Defines the remote peer’s identity and authentication credentials. The following fields are required: id, auth.
| Parameter | Description | Default |
|---|---|---|
id string |
The remote peer's IKE identity presented for authentication. Accepts an IPv4 address, IPv6 address, or FQDN. Length: 1–255 characters. You must specify this parameter. | |
auth string |
The authentication method for remote peer verification. Allowed values: certificate, presharedkey. You must specify this parameter. |
spec.remote.secretRef¶
References a Kubernetes secret that contains the remote peer’s credentials. The secret contents depend on the authentication method:
When
remote.authiscertificate: the secret contains a Certificate Authority (CA) certificate.When
remote.authispresharedkey: the secret contains a pre-shared key.
| Parameter | Description | Default |
|---|---|---|
name string |
The name of the Kubernetes secret containing the remote peer credentials (CA certificate or pre-shared key). Must match the pattern ^[0-9a-zA-Z.\-_]*$. Length: 1–255 characters. You must specify this parameter. |
|
caCertificate string |
The key name for the CA certificate in the secret. Used when remote.auth is certificate. Must match the pattern ^[0-9a-zA-Z.\-_]*$. Maximum length: 255 characters. |
"ca.crt" |
presharedKey string |
The key name for the pre-shared key in the secret. Used when remote.auth is presharedkey. Must match the pattern ^[0-9a-zA-Z.\-_]*$. Maximum length: 255 characters. |
"psk" |
spec.ipsecPolicies[]¶
Defines the list of IPsec policies that control how the BIG-IP system protects data-plane traffic. At least one IPsec policy is required. Each policy is uniquely identified by name.
The following fields are required: name, localAddress, remoteAddress, trafficSelectors.
| Parameter | Description | Default |
|---|---|---|
name string |
The name of the IPsec policy. Must match the pattern ^[/0-9a-zA-Z._-]*$. Length: 1–255 characters. You must specify this parameter. |
|
description string |
An optional description for this IPsec policy. Maximum length: 512 characters. | "" |
mode string |
The IPsec tunnel processing mode. Allowed value: tunnel. |
"tunnel" |
protocol string |
The IPsec protocol. Encapsulating Security Payload (ESP) provides encryption and authentication. Allowed value: esp. Authentication Header (AH) is not supported. |
"esp" |
localAddress string |
The local endpoint IP address of the IPsec tunnel. Accepts IPv4 or IPv6 format. Maximum length: 45 characters. You must specify this parameter. | |
remoteAddress string |
The remote endpoint IP address of the IPsec tunnel. Accepts IPv4 or IPv6 format. Maximum length: 45 characters. You must specify this parameter. | |
lifetime integer |
The length of time, in minutes, before the IPsec SA expires. Valid range: 0–4294967295. | 1440 |
spec.ipsecPolicies[].proposals[]¶
Defines the list of IPsec Phase 2 cryptographic algorithm proposals for tunnel encryption and integrity.
| Parameter | Description | Default |
|---|---|---|
integrity string |
The integrity algorithm for IPsec Phase 2 authentication and data integrity verification. Allowed values: sha1, sha256, sha384, sha512, aes-gcm128, aes-gcm192, aes-gcm256, aes-gmac128, aes-gmac192, aes-gmac256. |
sha512 |
encryption string |
The encryption algorithm for IPsec Phase 2 SA data protection. Allowed values: null, 3des, aes128, aes192, aes256, aes-gcm128, aes-gcm192, aes-gcm256, aes-gmac128, aes-gmac192, aes-gmac256. |
aes256 |
dhGroup string |
The Diffie-Hellman (DH) group for IPsec Phase 2 Perfect Forward Secrecy (PFS) key exchange negotiation. Allowed values: none, modp768, modp1024, modp1536, modp2048, modp3072, modp4096, modp6144, modp8192. |
modp2048 |
Note: The IPsec policy proposals support additional algorithms compared to the IKE proposals, including
aes-gmac128,aes-gmac192,aes-gmac256for integrity and anulloption for encryption (authentication-only mode).
spec.ipsecPolicies[].trafficSelectors[]¶
Defines the list of traffic selectors that control which traffic flows through the IPsec tunnel. At least one traffic selector is required per policy. Each traffic selector is uniquely identified by name.
The following fields are required: name, sourceAddress, destinationAddress.
| Parameter | Description | Default |
|---|---|---|
name string |
The name of the traffic selector. The traffic selector is a packet filter that defines the source and destination IP addresses for application traffic destined for the IPsec tunnel. Must match the pattern ^[/0-9a-zA-Z._-]*$. Length: 1–255 characters. You must specify this parameter. |
|
description string |
An optional description for this traffic selector. Maximum length: 512 characters. | "" |
sourceAddress string |
The host or network IP address from which the application traffic originates. Accepts IPv4, IPv4 with CIDR subnet, IPv6, or IPv6 with prefix length. Maximum length: 49 characters. You must specify this parameter. | |
sourcePort integer |
The source port number used by the application traffic for IPsec traffic selection matching. Valid range: 0–65535. | 0 |
destinationAddress string |
The host or network IP address to which the application traffic is destined. Accepts IPv4, IPv4 with CIDR subnet, IPv6, or IPv6 with prefix length. Maximum length: 49 characters. You must specify this parameter. | |
destinationPort integer |
The destination port number used by the application traffic for IPsec traffic selection matching. Valid range: 0–65535. | 0 |
protocol string |
The network protocol for this traffic selector. Accepts a protocol name (all, tcp, udp, icmp) or an IANA protocol number (0–254). |
"all" |
IPsec supported algorithms¶
This section lists the encryption and authentication algorithms supported for Internet Protocol Security (IPsec) on F5 BIG-IP Next Cloud-Native Network Function (CNF) 2.4.
Authentication algorithms¶
Authentication algorithms verify the integrity of data packets and ensure they have not been changed in transit.
| Algorithm | Value in CR | Description |
|---|---|---|
| MD5 | md5 |
Message Digest 5; provides basic 128-bit integrity checking |
| SHA-1 | sha1 |
Secure Hash Algorithm 1; produces a 160-bit hash for integrity verification |
| SHA-256 | sha256 |
Secure Hash Algorithm 2; produces a 256-bit hash for integrity verification |
| SHA-384 | sha384 |
Secure Hash Algorithm 2; produces a 384-bit hash for integrity verification |
| SHA-512 | sha512 |
Secure Hash Algorithm 2; produces a 512-bit hash for integrity verification |
| AES-GCM-128 | aes-gcm128 |
AES Galois/Counter Mode with a 128-bit key; provides authenticated encryption (AEAD) |
| AES-GCM-192 | aes-gcm192 |
AES Galois/Counter Mode with a 192-bit key; provides authenticated encryption (AEAD) |
| AES-GCM-256 | aes-gcm256 |
AES Galois/Counter Mode with a 256-bit key; provides authenticated encryption (AEAD) |
Encryption algorithms¶
Encryption algorithms protect the confidentiality of data packets by scrambling their contents.
| Algorithm | Value in CR | Description |
|---|---|---|
| DES | des |
Data Encryption Standard; uses a 56-bit key for symmetric encryption |
| 3DES | 3des |
Triple DES; applies DES three times with a 168-bit effective key for stronger encryption |
| AES-128 | aes128 |
Advanced Encryption Standard with a 128-bit key for symmetric encryption |
| AES-192 | aes192 |
Advanced Encryption Standard with a 192-bit key for symmetric encryption |
| AES-256 | aes256 |
Advanced Encryption Standard with a 256-bit key for symmetric encryption |
| AES-GCM-128 | aes-gcm128 |
AES Galois/Counter Mode with a 128-bit key; provides encryption and integrity in a single operation (AEAD) |
| AES-GCM-192 | aes-gcm192 |
AES Galois/Counter Mode with a 192-bit key; provides encryption and integrity in a single operation (AEAD) |
| AES-GCM-256 | aes-gcm256 |
AES Galois/Counter Mode with a 256-bit key; provides encryption and integrity in a single operation (AEAD) |
Note
AES-GCM algorithms provide both encryption and authentication (also known as Authenticated Encryption with Associated Data, or AEAD). When you use an AES-GCM algorithm for encryption, you do not need to specify a separate integrity algorithm.
Peer authentication methods¶
Peer authentication methods verify the identity of the remote peer during IKEv2 negotiation.
| Method | Value in CR | Description |
|---|---|---|
| Pre-Shared Key (PSK) | presharedkey |
Both peers share a secret key configured in advance |
| Certificate | certificate |
Authentication uses RSA public/private key pairs and X.509 certificates |
Diffie-Hellman groups¶
Diffie-Hellman (DH) groups define the key exchange strength for IKE Phase 1 and Phase 2 negotiations. Higher group numbers provide stronger security but require more computational resources.
| Group | Value in CR | Description |
|---|---|---|
| ECP 256-bit | ecp256 |
Elliptic Curve Diffie-Hellman (ECDH) with a 256-bit prime; provides strong key exchange with shorter keys |
| ECP 384-bit | ecp384 |
ECDH with a 384-bit prime; provides stronger key exchange than ECP 256 |
| ECP 521-bit | ecp521 |
ECDH with a 521-bit prime; provides the highest elliptic curve key strength available |
| MODP 768-bit | modp768 |
Modular Exponentiation (MODP) with a 768-bit prime; provides minimal key exchange strength |
| MODP 1024-bit | modp1024 |
MODP with a 1024-bit prime; provides basic key exchange strength |
| MODP 1536-bit | modp1536 |
MODP with a 1536-bit prime; provides moderate key exchange strength |
| MODP 2048-bit | modp2048 |
MODP with a 2048-bit prime; provides standard key exchange strength suitable for most deployments |
| MODP 3072-bit | modp3072 |
MODP with a 3072-bit prime; provides enhanced key exchange strength |
| MODP 4096-bit | modp4096 |
MODP with a 4096-bit prime; provides high key exchange strength for sensitive environments |
| MODP 6144-bit | modp6144 |
MODP with a 6144-bit prime; provides very high key exchange strength |
| MODP 8192-bit | modp8192 |
MODP with an 8192-bit prime; provides the highest MODP key exchange strength available |
IPsec protocol¶
| Protocol | Value in CR | Description |
|---|---|---|
| Encapsulating Security Payload (ESP) | esp |
Provides encryption, authentication, and integrity for data packets |
Prerequisites¶
Ensure you have:
Installed the CNF Controller Pods.
A Linux based workstation.
For certificate authentication: Kubernetes Secrets containing the local peer certificate/key and the remote peer CA certificate in the same namespace.
For preshared key authentication: a Kubernetes Secret containing the preshared key in the same namespace.
Network connectivity between the local and remote tunnel endpoints.
CR Example¶
IPsec tunnel with certificate authentication
apiVersion: "k8s.f5net.com/v1" kind: F5BigIkePeer metadata: name: "ipsec-peer-cert" namespace: "cnf-gateway" spec: name: "ike-peer-west" remoteAddress: "203.0.113.1" lifetime: 1440 dpdDelay: 30 proposals: - integrity: "sha256" encryption: "aes256" prf: "sha256" dhGroup: "modp2048" local: id: "10.10.10.1" auth: "certificate" certificateSecretRef: name: "ike-local-cert" certificate: "tls.crt" privateKey: "tls.key" remote: id: "203.0.113.1" auth: "certificate" secretRef: name: "ike-remote-ca" caCertificate: "ca.crt" ipsecPolicies: - name: "ipsec-policy-1" localAddress: "10.10.10.1" remoteAddress: "203.0.113.1" proposals: - integrity: "sha256" encryption: "aes256" dhGroup: "modp2048" trafficSelectors: - name: "ts-all-traffic" sourceAddress: "10.0.0.0/8" destinationAddress: "172.16.0.0/12"
IPsec tunnel with preshared key authentication
apiVersion: "k8s.f5net.com/v1" kind: F5BigIkePeer metadata: name: "ipsec-peer-psk" namespace: "cnf-gateway" spec: name: "ike-peer-east" remoteAddress: "198.51.100.1" lifetime: 720 dpdDelay: 15 proposals: - integrity: "sha512" encryption: "aes256" prf: "sha512" dhGroup: "modp4096" local: id: "gw.example.com" auth: "presharedkey" remote: id: "peer.example.com" auth: "presharedkey" secretRef: name: "ike-psk-secret" presharedKey: "psk" ipsecPolicies: - name: "ipsec-policy-psk" localAddress: "10.10.10.1" remoteAddress: "198.51.100.1" trafficSelectors: - name: "ts-web" sourceAddress: "10.10.10.0/24" destinationAddress: "192.168.1.0/24" protocol: "tcp" destinationPort: 443
IPsec tunnel with multiple policies and traffic selectors
apiVersion: "k8s.f5net.com/v1" kind: F5BigIkePeer metadata: name: "ipsec-peer-multi" namespace: "cnf-gateway" spec: name: "ike-peer-multi-policy" remoteAddress: "192.0.2.1" local: id: "10.10.10.1" auth: "certificate" certificateSecretRef: name: "ike-local-cert" remote: id: "192.0.2.1" auth: "certificate" secretRef: name: "ike-remote-ca" ipsecPolicies: - name: "policy-mgmt" description: "Management traffic" localAddress: "10.10.10.1" remoteAddress: "192.0.2.1" lifetime: 480 proposals: - integrity: "sha384" encryption: "aes192" dhGroup: "modp3072" trafficSelectors: - name: "ts-ssh" sourceAddress: "10.10.10.0/24" destinationAddress: "192.0.2.0/24" protocol: "tcp" destinationPort: 22 - name: "ts-snmp" sourceAddress: "10.10.10.0/24" destinationAddress: "192.0.2.0/24" protocol: "udp" destinationPort: 161 - name: "policy-data" description: "Application data traffic" localAddress: "10.10.10.1" remoteAddress: "192.0.2.1" trafficSelectors: - name: "ts-app" sourceAddress: "10.10.0.0/16" destinationAddress: "172.16.0.0/12"
IPsec tunnel with IPv6
apiVersion: "k8s.f5net.com/v1" kind: F5BigIkePeer metadata: name: "ipsec-peer-v6" namespace: "cnf-gateway" spec: name: "ike-peer-v6" remoteAddress: "2001:db8:100::1" local: id: "2001:db8::1" auth: "presharedkey" remote: id: "2001:db8::1" auth: "presharedkey" secretRef: name: "ike-psk-v6" ipsecPolicies: - name: "ipsec-v6" localAddress: "2001:db8::1" remoteAddress: "2001:db8:100::1" trafficSelectors: - name: "ts-v6" sourceAddress: "2001:db8:1::/48" destinationAddress: "2001:db8:2::/48"