SETKEY(8)

명칭
setkey - 수동으로 IPsec 의 SA/SP 데이타베이스를 조작한다

서식
setkey [-dv] -c setkey [-dv] -f filename setkey [-adPlv] -D setkey [-dPv] -F setkey [-h] -x

해설
setkey 유틸리티는, 커널내의 보안 어소시에이션 데이타베이스 (SAD) 엔트리와 세큐리티포리시데이타베이스 (SPD) 엔트리를, 추가·갱신·내용 열거·삭제합니다.

setkey 유틸리티는, 일련의 조작을 표준 입력으로부터 받을까 ( -c 첨부로 기동되었을 경우) filename (이)라는 이름의 파일로부터 받습니다 ( -f filename 첨부로 기동되었을 경우).

-D  SAD 엔트리를 덤프 합니다. -P 첨부의 경우, SPD 엔트리를 덤프 합니다.

-F  SAD 엔트리를 버립니다. -P 첨부의 경우, SPD 를 버립니다.

-a  통상, 죽은 SAD 엔트리는 표시되지 않습니다. -a 첨부의 경우, 죽은 SAD 엔트리도 표시합니다. 죽은 SAD 엔트리란, 기한 마감이지만, SPD 엔트리로부터 참조되고 있기 위해서(때문에) 남아 있는 것을 가리킵니다.

-d  명령 파서용의 디버그 메세지 표시를 유효하게 해, 커널과는 대화를 하지 않습니다. 이것은 통상은 사용하지 않습니다.

-x  엔들레스 루프 해, PF_KEY 소켓에 보내지는 전메세지를 덤프 합니다. -xx (은)는, 각 타임 스탬프의 포맷을 그만둡니다.

-h  -x 모드에 대해, 16 진수 덤프를 추가합니다.

-l  -D 에 두어, 짧은 출력으로 엔들레스 루프 합니다.

-v  장황하게 됩니다. 프로그램은, PF_KEY 소켓상에서 교환한 메세지를 덤프 합니다. 이것에는 타프로세스로부터 커널에 보내진 메세지를 포함합니다.

조작은, 다음의 문법입니다. 해시 마크 ('#')로 시작되는 행은 코멘트행으로서 다루어지는 것에 주의해 주세요.

    add src dst protocol spi [extensions] algorithm...; 단일의 SAD 엔트리를 추가합니다.

    get src dst protocol spi; 단일의 SAD 엔트리를 표시합니다.

    delete src dst protocol spi; 단일의 SAD 엔트리를 삭제합니다.

    deleteall src dst protocol; 지정에 적합하는 모든 SAD 엔트리를 삭제합니다.

    flush [protocol]; 옵션에 적합하는 전 SAD 엔트리를 클리어 합니다.

    dump [protocol]; 옵션에 적합하는 전 SAD 엔트리를 덤프 합니다.

    spdadd src_range dst_range upperspec policy; 단일의 SPD 엔트리를 추가합니다.

    spddelete src_range dst_range upperspec -P direction; 단일의 SPD 엔트리를 삭제합니다.

    spdflush; 전 SPD 엔트리를 클리어 합니다.

    spddump; 전 SPD 엔트리를 덤프 합니다.

메타 인수는 아래와 같은 대로입니다:

src
dst 시큐어 커뮤니케이션의 시점/종점을 IPv4/v6 주소로 지정합니다. setkey 유틸리티는 인수 src (와)과 dst 에 붙어, 호스트명으로부터 주소에의 문의를 실시하지 않습니다. 이것들은 수치 형식에서 지정할 필요가 있습니다.

protocol
    protocol (은)는 다음의 어느쪽이든 1 개(살)입니다:
    esp rfc2405 를 기본으로 한 암호 유료 하중
    esp-old
        rfc1827 를 기본으로 한 암호 유료 하중
    ah  rfc2402 를 기본으로 한 인증헤더
    ah-old
        rfc1826 를 기본으로 한 인증헤더
    ipcomp
        IPCOMP

spi SAD 및 SPD 용의, 보안 파라미터 인덱스 (SPI). 범위 0 에서 255 의 SPI 치는 사용할 수 없습니다. 10 진수 또는 16 진수 (0x 첨부) 그리고 지정할 필요가 있습니다.

extensions
    다음에 나타내는 인수를 받아들입니다:
    -m mode
        사용하는 보안 프로토콜 모드를 지정합니다. mode (은)는 다음의 어느쪽이든 1 개(살)입니다: transport, tunnel, any 기본값은 any 입니다.
    -r size
        반복 공격을 막기 위한 윈도우 사이즈를 바이트수로 지정합니다. size (은)는 32 비트 워드의 10 진수로 지정할 필요가 있습니다. size 하지만 0 또는 지정되지 않았던 경우, 반복의 체크는 행해지지 않습니다.
    -u id
        SAD 중의 포리시엔트리의 식별자를 지정합니다. policy (을)를 참조해 주세요.
    -f pad_option
        ESP 패딩의 내용을 지정합니다. pad_option (은)는 다음의 어느쪽이든 1 개(살)입니다:
        zero-pad
            패딩은 모두 0.
        random-pad
            일련의 난수치를 설정.
        seq-pad
            1 으로부터 개시해 증가하는 일련의 수를 설정.
    -f nocyclic-seq
        주기적인 순서 번호를 허가하지 않습니다.
    -lh time
    -ls time
        SA 의 하드 유효기간/소프트 유효기간을 지정합니다.

algorithm
    -E ealgo key
        암호화 알고리즘을 지정합니다.
    -A aalgo key
        인증 알고리즘을 지정합니다. -A 하지만 protocol esp (와)과 함께 사용되면(자), 암호 유료 하중의 유료 하중 인증 알고리즘으로서 다루어집니다.
    -C calgo [-R]
        압축 알고리즘을 지정합니다. -R 하지만 ipcomp 행과 함께 지정되지 않으면 커널은 잘 알려진 (well-known) IPComp CPI (압축 파라미터 인덱스) (을)를 패킷상의 IPComp CPI 필드에서 사용해, spi 필드는 무시됩니다. 이 경우, spi 필드는 커널 내부에서만 사용됩니다. -R 하지만 사용되면(자), spi 필드상의 값이, 출력 패킷의 IPComp CPI 필드에 나타납니다. 이 경우, spi 필드는 0x10000 미만인 것이 필요합니다.

    protocol esp 하 -E (와)과 -A (을)를 받아들입니다. protocol esp-old 하 -E 만을 받아들입니다. protocol ah (와)과 ah-old 하 -A 만을 받아들입니다. protocol ipcomp 하 -C 만을 받아들입니다.

    key (은)는, 더블 쿼트로 괄캐릭터 라인인가, 일련의 16 진수로 지정할 필요가 있습니다.

    ealgo, aalgo, calgo 하지만 취할 수 있는 값은 다른 마디로 규정합니다.

src_range
dst_range
    시큐어 커뮤니케이션의 선택이며, IPv4/v6 주소 또는 IPv4/v6 주소 범위에서 지정합니다. TCP/UDP 포트 지정을 부가하는 일도 가능합니다. 다음의 형식을 받아들입니다:

        address
        address/prefixlen
        address[port]
        address/prefixlen[port]

    prefixlen (와)과 port (은)는 10 진수로 지정할 필요가 있습니다. port 의 주위의 꺽쇄묶음은, 실제로 필요합니다. 메뉴얼 페이지의 메타 캐릭터가 아닙니다.

    setkey 유틸리티는 인수 src (와)과 dst 에 붙어, 호스트명으로부터 주소에의 문의를 실시하지 않습니다. 이것들은 수치 형식에서 지정할 필요가 있습니다.

upperspec
    사용하는 상위층 프로토콜. upperspec (으)로서 /etc/protocols 안의 1 어를 사용 가능합니다. 또는, icmp6, ip4, any (을)를 지정 가능합니다. any 하 “임의의 프로토콜” (을)를 의미합니다. 또, 프로토콜 번호를 사용 가능합니다.

    주: upperspec (은)는, 현시점에서는 전송에 대해서 기능하지 않습니다. 전송 노드에 대해, 추가의 재구성 (현시점에서는 미실장) 하지만 필요하기 때문입니다. /etc/protocols 에는 다수의 프로토콜이 등록되어 있습니다만, TCP, UDP, ICMP 이외는 IPSec 와 함께 사용하기에는 부적절할지도 모릅니다. 그러한 프로토콜의 사용에는, 주의해 주세요.

policy
    policy (은)는 다음의 어느쪽이든 1 개(살)입니다:

        -P direction discard

        -P direction none

        -P direction ipsec protocol/mode/src-dst/level

    포리시의 방향을 direction 그리고 지정할 필요가 있습니다. out 또는 in 하지만 사용됩니다. discard (은)는, 인덱스에 적합하는 패킷을 버려지는 것을 의미합니다. none (은)는, 패킷에 대해서 IPsec 조작이 실시되지 않는 것을 의미합니다. ipsec (은)는, 패킷에 대해서 IPsec 조작이 실시되는 것을 의미합니다. ah, esp, ipcomp 의 어느쪽이든을, protocol (으)로서 설정합니다. mode 하 transport 또는 tunnel 의 머지않아인가입니다. mode 하지만 tunnel 의 경우, SA 의 말단 주소를, src 및 dst 그리고, 양주소간에 ‘-’ (을)를 붙여 지정할 필요가 있습니다. 이것은, 사용하는 SA 를 지정하기 위해서 이용됩니다. mode 하지만 transport 의 경우, src (와)과 dst (은)는 양쪽 모두 생략 가능합니다. level (은)는 다음의 머지않아인가입니다: default, use, require, unique 모든 레벨에 대해 SA 가 이용 가능하지 않은 경우, SA 취득 요구를 커널은 열쇠 교환 demon에게 보냅니다. default (은)는, 커널이 패킷을 처리할 때, 지정한 프로토콜에 대해, 시스템 전체의 디폴트를 문의하는 것을 의미합니다. 이것은 예를 들면 sysctl 변수 esp_trans_deflev (을)를 가리킵니다. use (은)는, 커널이 SA 를 사용 가능하면 사용해, 사용 불능의 경우에는 통상 조작을 계속하는 것을 의미합니다. require (은)는, 포리시에 적합하는 패킷을 커널이 보낼 때에는 언제나 SA 가 필요한 것을 의미합니다. unique (은)는 require 와 같습니다. 더욱, 포리시가 일의인 밖으로 향한 SA 에 결합하는 것을 허락합니다. unique 의 후에 코론 ‘’ 그리고 단락지은 후에 10 진수로 포리시 식별자를 지정 가능하고, 다음과 같이 합니다: unique:number number (은)는 1 에서 32767 의 범위에 있는 것이 필요합니다. 이것은, extensions -u 에 대응합니다.

    “discard” (와)과 “none” 하 ipsec_set_policy(3) 에 기술되고 있는 구문에는 존재하지 않는 것에 주의해 주세요. 양자의 구문에는 약간의 차이가 있습니다. 자세한 것은 ipsec_set_policy(3) (을)를 참조해 주세요.

알고리즘
다음의 일람은, 서포트되고 있는 알고리즘을 나타내고 있습니다. protocol (와)과 algorithm (은)는, 거의 직교 하고 있습니다. 다음에 나타내는 것은, protocol 파라미터의 -A aalgo 그리고 aalgo (으)로서 사용 가능한 인증 알고리즘의 일람입니다:

    알고리즘 카기나가 (비트) 코멘트
    hmac-md5	128		ah: rfc2403
    		128		ah-old: rfc2085
    hmac-sha1	160		ah: rfc2404
    		160		ah-old: 128bit ICV (문서 없음)
    keyed-md5	128		ah: 96bit ICV (문서 없음)
    		128		ah-old: rfc1828
    keyed-sha1	160		ah: 96bit ICV (문서 없음)
    		160		ah-old: 128bit ICV (문서 없음)
    null		0 ~ 2048	디버그용
    hmac-sha2-256	256		ah: 96bit ICV (문서 없음)
    		256		ah-old: 128bit ICV (문서 없음)
    hmac-sha2-384	384		ah: 96bit ICV (문서 없음)
    		384		ah-old: 128bit ICV (문서 없음)
    hmac-sha2-512	512		ah: 96bit ICV (문서 없음)
    		512		ah-old: 128bit ICV (문서 없음)

다음에 나타내는 것은, protocol 파라미터의 -E ealgo 그리고 ealgo (으)로서 사용 가능한 암호화 알고리즘의 일람입니다:

    알고리즘 카기나가 (비트) 코멘트
    des-cbc		64		esp-old: rfc1829, esp: rfc2405
    3des-cbc	192		rfc2451
    simple		0 ~ 2048	rfc2410
    blowfish-cbc	40 ~ 448	rfc2451
    cast128-cbc	40 ~ 128	rfc2451
    des-deriv	64		ipsec-ciph-des-derived-01 (기한 마감)
    3des-deriv	192		문서 없음
    rijndael-cbc	128/192/256	draft-ietf-ipsec-ciph-aes-cbc-00

다음에 나타내는 것은, protocol 파라미터의 -C calgo 그리고 calgo (으)로서 사용 가능한 압축 알고리즘의 일람입니다:

    알고리즘 코멘트
    deflate		rfc2394
    lzs		rfc2395

사용예

    add	3ffe:501:4819::1 3ffe:501:481d::1 esp 123457
    		-E des-cbc "ESP SA!!" ;
    add	3ffe:501:4819::1 3ffe:501:481d::1 ah 123456
    		-A hmac-sha1 "AH SA configuration! " ;
    add	10.0. 11.41 10.0. 11.33 esp 0x10001
    		-E des-cbc "ESP with"
    		-A hmac-md5 "authentication!!" ;
    get	3ffe:501:4819::1 3ffe:501:481d::1 ah 123456 ;
    flush ;
    dump esp ;
    spdadd	10.0. 11.41/32[21] 10.0. 11.33/32[any] any
    		-P out ipsec esp/tunnel/192. 168.0. 1-192. 168.1. 2/require ;

반환값
본명령은 성공시에 0 을, 에러시에 0 이외를 돌려줍니다.

관련 항목
ipsec_set_policy(3), racoon(8), sysctl(8)

역사
setkey 유틸리티는 WIDE Hydrangea IPv6 프로토콜 스택 킷으로 처음 등장했습니다. 본명령은 1998 년 6 월에, 완전하게 재디자인되었습니다.