Howto

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

ここでは、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
<span class="input">同様に相手側でも同じ手順を行なってください。</span>
 
[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