警告メッセージ

Howtoは、Armadilloシリーズを有効に活用するための参考資料です。使用ソフトウェアのバージョンなど諸条件の差異によって、記載内容と実際の動作が異なる場合があります。また、すべての機能検証や長期の動作試験を行ったものではありませんので、必ずご使用目的に適合した検証・試験を行ってください。

Howto : IPSecを使用する:自動鍵処理で設定する

対象製品: Armadillo-210

ここでは、2台のArmadillo-210をIPSecで通信させる手順を示します。

自動鍵処理を行なうためには、setkeyracoonが必要となります。
ipsec-toolsのコンパイル』を参照してビルドしてください。

1. 設定ファイルの生成スクリプト:racoon.setting

IPSecを動かすためには、鏡映的な設定ファイルが必要となります。
これを手入力で作成し、少しでもミスがあると動作しない可能性が十分にあるので、
ここではスクリプトによる自動生成を行なってみます。
*注意:このスクリプトは、Armadillo-210用です。PCでは使用しないで下さい。

2. Armadillo-210上での設定

ここでは、FTPを用いて必要なファイルをArmadillo-210に転送したこととします。
IPSecを実現するには、自分のIPアドレスと相手のIPアドレスが必要です。


[armadillo ~]# cd /home/ftp/pub
[armadillo /home/ftp/pub]# chmod 0777 *
[armadillo /home/ftp/pub]# ./racoon.setting [自分のIPアドレス] [相手のIPアドレス]
[armadillo /home/ftp/pub]# ./racoon -f /etc/racoon/racoon.conf
[armadillo /home/ftp/pub]# ./setkey -f ipsec.conf
同様に相手側でも同じ手順を行なってください。

[armadillo ~]# ping [相手のIPアドレス]

pingが通ったら成功です。
ネットワークの経路上でethereal等のパケットキャプチャーソフトを使用すれば、 [IP][AH][ESP]のパケットが見えると思います。

スクリプト:racoon.setting

このスクリプトでは、racoon.confとipsec.confとpsk.txtを作成します。


#!/bin/sh

SRC_IP=$1
shift
DST_IP=$1
shift

RACOON_CONF=/etc/racoon/racoon.conf
IPSEC_CONF=./ipsec.conf
PSK_TXT=/etc/racoon/psk.txt

#
#
#
debug_status(){
    echo "### debug status ###"
    echo src_ipaddr=$SRC_IP
    echo dst_ipaddr=$DST_IP
}

#
# init
#
initialize(){
    iptables -F INPUT
    iptables -F OUTPUT
    iptables -P INPUT ACCEPT
    iptables -P OUTPUT ACCEPT
    #iptables -A INPUT -i eth0 -p udp -d 0/0 --dport 500 -j ACCEPT
    mkdir -p /etc/racoon
}

#
# create psk.txt
#
create_psk_txt(){
    echo "$DST_IP testipsec" > $PSK_TXT
    chmod 0600 $PSK_TXT
}

#
# create racoon.conf
#
create_racoon_conf(){
    cat > $RACOON_CONF <<EOF
path pre_shared_key "/etc/racoon/psk.txt";

timer
{
    counter 5;
    interval 10 sec;
    persend 5;
    phase1 600 sec;
    phase2 600 sec;
}

remote anonymous
{
    exchange_mode aggressive,main;
    doi ipsec_doi;
    situation identity_only;

    my_identifier address;

    lifetime time 2 min;    # sec,min,hour
    initial_contact on;
    proposal_check obey;    # obey, strict or claim

    proposal {
        encryption_algorithm 3des;
        hash_algorithm sha1;
        authentication_method pre_shared_key;
        dh_group 2;
    }
}

sainfo anonymous
{
    pfs_group 1;
    lifetime time 2 min;
    encryption_algorithm 3des;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

EOF
    chmod 600 $RACOON_CONF
}

#
# create ipsec.conf
#
create_ipsec_conf(){
    cat > $IPSEC_CONF <<EOF
#!/sbin/setkey -f
flush;
spdflush;

spdadd $SRC_IP $DST_IP any -P out ipsec 
        esp/transport//require
        ah/transport//require;

spdadd $DST_IP $SRC_IP any -P in  ipsec 
        esp/transport//require
        ah/transport//require;
EOF
    chmod 600 $IPSEC_CONF
}

#
# main
#
debug_status
initialize
create_racoon_conf
create_psk_txt
create_ipsec_conf