ΠΠΎΡΠ»Π΅ Π²ΡΠ·ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²Π»Π΅Π½Π½ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΠΎΠΊΠ΅Ρ.
Π§ΡΠ΅Π½ΠΈΠ΅ ΠΎΡΠ²Π΅ΡΠΎΠ²19-30 ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΡΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΈ Π²ΡΠ²ΠΎΠ΄ΠΈΡ ΠΈΡ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΡΠΈ ΠΏΠΎΠΌΠΎΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ print_sadb_msg. ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΈΠΌΠ΅Π΅Ρ ΠΏΠΎΡΡΠ΄ΠΊΠΎΠ²ΡΠΉ Π½ΠΎΠΌΠ΅Ρ 0, ΡΡΠΎ ΠΌΡ ΡΡΠ°ΠΊΡΡΠ΅ΠΌ ΠΊΠ°ΠΊ Β«ΠΊΠΎΠ½Π΅Ρ ΡΠ°ΠΉΠ»Π°Β».
ΠΠ°ΠΊΡΡΡΠΈΠ΅ ΡΠΎΠΊΠ΅ΡΠ° PF_KEY31 ΠΡ Π·Π°ΠΊΡΡΠ²Π°Π΅ΠΌ ΠΎΡΠΊΡΡΡΡΠΉ Π² Π½Π°ΡΠ°Π»Π΅ ΡΠ°Π±ΠΎΡΡ ΡΠΎΠΊΠ΅Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΊΠ»ΡΡΠ°ΠΌΠΈ.
ΠΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΎΠ² ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ38-48 ΠΠ° Π΄ΠΎΠ»Ρ ΡΡΠ½ΠΊΡΠΈΠΈ main ΠΎΡΡΠ°Π΅ΡΡΡ Π½Π΅ ΡΠ°ΠΊ ΡΠΆ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π±ΠΎΡΡ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠΈΠ½ΠΈΠΌΠ°Π΅Ρ Π΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΡΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½Ρ β ΡΠΈΠΏ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π·Π°ΠΏΡΠΎΡΠ΅Π½Ρ ΠΈΠ· Π±Π°Π·Ρ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΡΠΈΠΏ ΡΠ°Π²Π΅Π½ SADB_SATYPE_UNSPEC. Π£ΠΊΠ°Π·Π°Π² Π΄ΡΡΠ³ΠΎΠΉ ΡΠΈΠΏ Π² Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Π½ΠΎΠΉ ΡΡΡΠΎΠΊΠΈ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΡΡΠΈΠ΅ Π΅Π³ΠΎ Π·Π°ΠΏΠΈΡΠΈ. ΠΠ°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠ·ΡΠ²Π°Π΅Ρ Π½Π°ΡΡ ΠΆΠ΅ ΡΡΠ½ΠΊΡΠΈΡ getsatypebyname, Π²ΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠΈΠΏΠ° (ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ) ΠΏΠΎ Π΅Π³ΠΎ Π½Π°Π·Π²Π°Π½ΠΈΡ.
ΠΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ sadb_dump49 ΠΠ°ΠΊΠΎΠ½Π΅Ρ, ΠΌΡ Π²ΡΠ·ΡΠ²Π°Π΅ΠΌ ΡΡΠ½ΠΊΡΠΈΡ sadb_dump, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΆΠ΅ Π±ΡΠ»Π° ΠΎΠΏΠΈΡΠ°Π½Π°.
ΠΡΠΎΠ±Π½ΡΠΉ Π·Π°ΠΏΡΡΠΊΠΠΈΠΆΠ΅ ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ ΠΏΡΠΈΠΌΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π°ΠΌΠΏΠ° Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² ΡΠΈΡΡΠ΅ΠΌΠ΅ Ρ Π΄Π²ΡΠΌΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌΠΈ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ.
macosx % dump Sending dump message:
SADB Message Dump, errno 0, satype Unspecified, seq 0, pid 20623
Messages returned:
SADB Message Dump, errno 0. satype IPsec AH, seq 1, pid 20623
SA: SPI=258 Replay Window=0 State=Mature
Authentication Algorithm: HMAC-MD5
Encryption Algorithm: None
[unknown extension 19]
Current lifetime:
0 allocations, 0 bytes
added at Sun May 18 16:28:11 2003, never used
Source address: 2.3.4.5/128 (IP proto 255)
Dest address: 6.7.8.9/128 (IP proto 255)
Authentication key. 128 bits: 0x20202020202020200202020202020202
SADB Message Dump, errno 0, satype IPsec AH, seq 0, pid 20623
SA: SPI=257 Replay Window=0 State=Mature
Authentication Algorithm: HMAC-MD5
Encryption Algorithm: None
[unknown extension 19]
Current lifetime:
0 allocations, 0 bytes
added at Sun May 18 16:26:24 2003, never used
Source address: 1.2.3.4/128 (IP proto 255)
Dest address: 5.6.7.8/128 (IP proto 255)
Authentication key, 128 bits: 0x10101010101010100101010101010101
19.4. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ
ΠΠ°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΡΡΠΌΠΎΠ»ΠΈΠ½Π΅ΠΉΠ½ΡΠΌ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠΌ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ Π² Π±Π°Π·Ρ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠΏΡΠ°Π²ΠΊΠ° ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ SADB_ADD Ρ Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΡΠΌΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ Π·Π°Π΄Π°Π²Π°ΡΡΡΡ Π²ΡΡΡΠ½ΡΡ. ΠΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π·Π°ΡΡΡΠ΄Π½ΡΠ΅Ρ ΡΠΌΠ΅Π½Ρ ΠΊΠ»ΡΡΠ΅ΠΉ, ΠΊΠΎΡΠΎΡΠ°Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄Π»Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊΡΠΈΠΏΡΠΎΠ°Π½Π°Π»ΠΈΡΠΈΡΠ΅ΡΠΊΠΈΡ Π°ΡΠ°ΠΊ, Π½ΠΎ Π·Π°ΡΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π½Π°ΡΡΡΠΎΠΉΠΊΡ. ΠΠ»ΠΈΡ ΠΈ ΠΠΎΠ± Π΄ΠΎΠ³ΠΎΠ²Π°ΡΠΈΠ²Π°ΡΡΡΡ ΠΎ ΠΊΠ»ΡΡΠ°Ρ ΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°Ρ Π±Π΅Π· ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π»ΠΈΠ½ΠΈΠΉ ΡΠ²ΡΠ·ΠΈ. ΠΡ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ SADB_ADD.
Π‘ΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ SADB_ADD ΠΎΠ±ΡΠ·Π°Π½ΠΎ ΠΈΠΌΠ΅ΡΡ ΡΡΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ: ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ, Π°Π΄ΡΠ΅Ρ ΠΈ ΠΊΠ»ΡΡ. ΠΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡΠΌΠΈ: Π²ΡΠ΅ΠΌΠ΅Π½Π΅ΠΌ ΠΆΠΈΠ·Π½ΠΈ, Π»ΠΈΡΠ½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ Π²Π°ΠΆΠ½ΠΎΡΡΠΈ (sensitivity). Π‘Π½Π°ΡΠ°Π»Π° ΠΌΡ ΠΎΠΏΠΈΡΠ΅ΠΌ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ.
Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ SA ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΎΠΉ sadb_sa, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 19.3.
ΠΠΈΡΡΠΈΠ½Π³ 19.3. Π Π°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ SA
struct sadb_sa {
u_int16_t sadb_sa_len; /* Π΄Π»ΠΈΠ½Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ / 8 */
u_int16_t sadb_sa_exttype; /* SADB_EXT_SA */
u_int32_t sadb_sa_spi; /* ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ (SPI) */
u_int8_t sadb_sa_replay; /* ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΊΠ½Π° Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΏΠΎΠ²ΡΠΎΡΠΎΠ² ΠΈΠ»ΠΈ Π½ΡΠ»Ρ */
u_int8_t sadb_sa_state; /* ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ SA. ΡΠΌ. ΡΠ°Π±Π». 19.4 */
u_int8_t sadb_sa_auth; /* Π°Π»Π³ΠΎΡΠΈΡΠΌ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ, ΡΠΌ. ΡΠ°Π±Π». 19.5 */
u_int8_t sadb_sa_encrypt; /* Π°Π»Π³ΠΎΡΠΈΡΠΌ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ, ΡΠΌ. ΡΠ°Π±Π». 19.5 */
u_int32_t sadb_sa_flags; /* ΡΠ»Π°Π³ΠΈ */
};
Π’Π°Π±Π»ΠΈΡΠ° 19.4. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ
Π‘ΠΎΡΡΠΎΡΠ½ΠΈΠ΅ SA ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ SADB_SASTATE_LARVAL Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΠ΅Ρ SADB_SASTATE_MATURE ΠΠΎΠ»Π½ΠΎΡΡΡΡ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ΅ ΠΠ° SADB_SASTATE_DYING ΠΡΠ΅Π²ΡΡΠ΅Π½ΠΎ Π³ΠΈΠ±ΠΊΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΠΠ° SADB_SASTATE_DEAD ΠΡΠ΅Π²ΡΡΠ΅Π½ΠΎ ΠΆΠ΅ΡΡΠΊΠΎΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΠ΅ Π½Π° Π²ΡΠ΅ΠΌΡ ΠΆΠΈΠ·Π½ΠΈ ΠΠ΅ΡΠ’Π°Π±Π»ΠΈΡΠ° 19.5. ΠΠ»Π³ΠΎΡΠΈΡΠΌΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ Π‘ΡΡΠ»ΠΊΠ° SADB_AALG_NONE ΠΠ΅Π· Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ SADB_AALG_MD5HMAC HMAC-MD5-96 RFC 2403 SADB_AALG_SHA1HMAC HMAC-SHA-1-96 RFC 2404 SADB_EALG_NONE ΠΠ΅Π· ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ SADB_EALG_DESCBC DES-CBC RFC 2405 SADB_EALG_3DESCBC 3DES-CBC RFC 1851 SADB_EALG_NULL NULL RFC 2410ΠΠΎΠ»Π΅ sadb_sa_spi ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ (security parameters index, SPI). ΠΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΌΠ΅ΡΡΠ΅ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠΌ ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΠΌ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, IPSec ΠΠ) ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ. ΠΡΠΈ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΠΈ ΠΏΠ°ΠΊΠ΅ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ SPI ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠΈΡΠΊΠ° ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ, ΠΎΡΠ½ΠΎΡΡΡΠ΅Π³ΠΎΡΡ ΠΊ ΠΏΠ°ΠΊΠ΅ΡΡ. ΠΡΠΈ ΠΎΡΠΏΡΠ°Π²ΠΊΠ΅ ΠΏΠ°ΠΊΠ΅ΡΠ° Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ Π² Π½Π΅Π³ΠΎ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΌ. ΠΠΈΠΊΠ°ΠΊΠΈΡ ΠΈΠ½ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ SPI Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°Π·Π½Π°ΡΠ°ΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π² ΡΠ»ΡΡΠ°ΠΉΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅ ΠΈΠ»ΠΈ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΡΠΎΠ΄Π°, ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΠΎΠ³ΠΎ ΡΠΎΠ±Π΅ΡΠ΅Π΄Π½ΠΈΠΊΠΎΠΌ. ΠΠΎΠ»Π΅ sadb_sa_replay Π·Π°Π΄Π°Π΅Ρ ΡΠ°Π·ΠΌΠ΅Ρ ΠΎΠΊΠ½Π° Π·Π°ΡΠΈΡΡ ΠΎΡ ΠΏΠΎΠ²ΡΠΎΡΠΎΠ². ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΠΎ Π·Π°ΡΠΈΡΠ΅ Π½Π΅ Π΄Π°ΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΡΡ Π·Π°ΡΠΈΡΡ, ΠΌΡ ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ ΠΏΠΎΠ»Π΅ ΡΠ°Π²Π½ΡΠΌ Π½ΡΠ»Ρ. ΠΠ½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ sadb_sa_state ΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ ΠΎ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ (ΡΠΌ. ΡΠ°Π±Π». 19.4). Π‘ΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ Π²ΡΡΡΠ½ΡΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΠΈΡΠΊΠ»ΡΡΠΈΡΠ΅Π»ΡΠ½ΠΎ Π² ΡΠΎΡΡΠΎΡΠ½ΠΈΠΈ SADB_SASTATE_MATURE. Π‘ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΡΠΌΠΈ ΠΌΡ Π²ΡΡΡΠ΅ΡΠΈΠΌΡΡ Π² ΡΠ°Π·Π΄Π΅Π»Π΅ 19.5.
ΠΠΎΠ»Ρ sadb_sa_auth ΠΈ sadb_sa_encrypt ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΡ. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΡΡΠΈΡ ΠΏΠΎΠ»Π΅ΠΉ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Ρ Π² ΡΠ°Π±Π». 19.5. ΠΠ΄ΠΈΠ½ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΏΠΎΠ»Ρ sadb_sa_flags ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΎ Π² POSIX ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ° SADB_SAFLAGS_PFS. ΠΡΠΎΡ ΡΠ»Π°Π³ ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠ²Π΅ΡΡΠ΅Π½Π½ΠΎΠΉ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ ΠΏΠ΅ΡΠ΅ΡΡΠ»ΠΊΠΈ (perfect forward security), ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠΎΡΡΠΎΠΈΡ Π² ΡΠΎΠΌ ΡΡΠ²Π΅ΡΠΆΠ΄Π΅Π½ΠΈΠΈ, ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΊΠ»ΡΡΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΎΡ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ ΠΊΠ°ΠΊΠΎΠ³ΠΎ-Π»ΠΈΠ±ΠΎ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ ΠΊΠ»ΡΡΠ°. Π€Π»Π°Π³ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΠΎΡΠ΅ ΠΊΠ»ΡΡΠ΅ΠΉ Ρ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π·Π°Π²Π΅Π΄ΡΡΡΠ΅Π³ΠΎ ΠΈΠΌΠΈ, Π½ΠΎ Π½Π΅ ΠΏΡΠΈ ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠΉ.
Π‘Π»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠΌΠ°Π½Π΄Ρ SADB_ADD Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π°Π΄ΡΠ΅ΡΠ° ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ ΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ, Π·Π°Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΠΌΠΈ SADB_EXT_ADDRESS_SRC ΠΈ SADB_EXT_ADDRESS_DST. ΠΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠΊΠ°Π·Π°Π½ Π°Π΄ΡΠ΅Ρ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ° SADB_EXT_ADDRESS_PROXY. ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΎΠ± ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ΅ Π°Π΄ΡΠ΅ΡΠΎΠ² ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠΎΠ² Π²Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ Π² RFC 2367 [73]. ΠΠ΄ΡΠ΅ΡΠ° Π·Π°Π΄Π°ΡΡΡΡ Π² ΡΡΡΡΠΊΡΡΡΠ΅ sadb_address, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 19.4. ΠΠΎΠ»Π΅ sadb_address_exttype ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ Π°Π΄ΡΠ΅ΡΠ° (ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ, ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Ρ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΊΡΠΈ-ΡΠ΅ΡΠ²Π΅ΡΠ°). ΠΠΎΠ»Π΅ sadb_address_proto ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π²ΡΠ±ΡΠ°ΡΡ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» IP ΠΈΠ»ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠΎΠΊΠΎΠ» (Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0). ΠΠΎΠ»Π΅ sadb_address_prefixlen ΠΎΠΏΠΈΡΡΠ²Π°Π΅Ρ Π·Π½Π°ΡΠΈΠΌΡΠΉ ΠΏΡΠ΅ΡΠΈΠΊΡ Π°Π΄ΡΠ΅ΡΠ°. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΎΠ³Π»Π°ΡΠ΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° Π°Π΄ΡΠ΅ΡΠΎΠ². ΠΠ° ΡΡΡΡΠΊΡΡΡΠΎΠΉ sadb_address ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΠ° sockaddr ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, sockaddr_in ΠΈΠ»ΠΈ sockaddr_in6). ΠΠΎΠΌΠ΅Ρ ΠΏΠΎΡΡΠ° ΠΈΠ· ΡΡΡΡΠΊΡΡΡΡ sockaddr ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, Π΅ΡΠ»ΠΈ ΠΏΠΎΠ»Π΅ sadb_address_proto Π·Π°Π΄Π°Π΅Ρ ΠΏΡΠΎΡΠΎΠΊΠΎΠ», ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠΈΠΉ Π½ΠΎΠΌΠ΅ΡΠ° ΠΏΠΎΡΡΠΎΠ² (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, IPPROTO_TCP).
ΠΠΈΡΡΠΈΠ½Π³ 19.4. Π‘ΡΡΡΠΊΡΡΡΠ° sadb_address
struct sadb_address {
u_int16_t sadb_address_len; /* Π΄Π»ΠΈΠ½Π° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ Ρ Π°Π΄ΡΠ΅ΡΠΎΠΌ / 8 */
u_int16_t sadb_address_exttype; /* SADB_EXT_ADDRESS_{SRC,DST,PROXY} */
u_int8_t sadb_address_proto; /* ΠΏΡΠΎΡΠΎΠΊΠΎΠ» IP ΠΈΠ»ΠΈ 0 (Π»ΡΠ±ΠΎΠΉ) */
u_int8_t sadb_address_prefixlen; /* # Π·Π½Π°ΡΠ°ΡΠΈΡ Π±ΠΈΡΠΎΠ² Π°Π΄ΡΠ΅ΡΠ° */
u_int16_t sadb_address_reserved; /* Π·Π°ΡΠ΅Π·Π΅ΡΠ²ΠΈΡΠΎΠ²Π°Π½ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄. ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ */
};
/* Π΄Π°Π»Π΅Π΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΡΡΠΊΡΡΡΠ° sockaddr ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° */
ΠΠ°Π²Π΅ΡΡΠ°ΡΡ ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ SADB_ADD ΠΊΠ»ΡΡΠΈ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ β ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ SADB_EXT_KEY_AUTH ΠΈ SADB_EXT_KEY_ENCRYPT, ΠΎΠΏΠΈΡΡΠ²Π°Π΅ΠΌΡΠ΅ ΡΡΡΡΠΊΡΡΡΠΎΠΉ sadb_key (Π»ΠΈΡΡΠΈΠ½Π³ 19.5). ΠΠΎΠ»Π΅ sadb_key_exttype ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΠΈΠΏ ΠΊΠ»ΡΡΠ° (ΠΊΠ»ΡΡ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΠΈΡΡΠΎΠ²Π°Π½ΠΈΡ), ΠΏΠΎΠ»Π΅ sadb_key_bits Π·Π°Π΄Π°Π΅Ρ Π΄Π»ΠΈΠ½Ρ ΠΊΠ»ΡΡΠ° Π² Π±ΠΈΡΠ°Ρ , Π° ΡΠ°ΠΌ ΠΊΠ»ΡΡ ΡΠ»Π΅Π΄ΡΠ΅Ρ Π·Π° ΡΡΡΡΠΊΡΡΡΠΎΠΉ sadb_key.