Howto

IPSecを使用する:手動鍵処理

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

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

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

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

スクリプト:setkey.setting

2. Armadillo-210上での設定

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

<span class="input">HOST-A側。</span>
[armadillo ~]# cd /home/ftp/pub
[armadillo /home/ftp/pub]# chmod 0777 *
[armadillo /home/ftp/pub]# ./setkey.setting [自分のIPアドレス] [相手のIPアドレス] a
[armadillo /home/ftp/pub]# ./setkey -f ipsec.conf
<span class="input">HOST-B側。</span>
[armadillo ~]# cd /home/ftp/pub
[armadillo /home/ftp/pub]# chmod 0777 *
[armadillo /home/ftp/pub]# ./setkey.setting [自分のIPアドレス] [相手のIPアドレス] b
[armadillo /home/ftp/pub]# ./setkey -f ipsec.conf
[armadillo /home/ftp/pub]# ping [相手のIPアドレス]

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

スクリプト:setkey.setting

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

#!/bin/sh
 
SRC_IP=$1
shift
DST_IP=$1
shift
SELECT=$1
 
if [ "$SELECT" = "a" ] ; then
        SELECT=HOST-A
        HOSTA_IP=$SRC_IP
        HOSTB_IP=$DST_IP
else
        SELECT=HOST-B
        HOSTA_IP=$DST_IP
        HOSTB_IP=$SRC_IP
fi
 
IPSEC_CONF=./ipsec.conf
 
debug_status(){
        echo "### debug status ###"
        echo src_ipaddr=$SRC_IP
        echo dst_ipaddr=$DST_IP
        echo host-a=$HOSTA_IP
        echo host-b=$HOSTB_IP
        echo select=$SELECT
}
 
#
# init
#
initialize(){
        iptables -F INPUT
        iptables -F OUTPUT
        iptables -P INPUT ACCEPT
        iptables -P OUTPUT ACCEPT
        #iptables -A INPUT -p 50 -j ACCEPT
        #iptables -A INPUT -p 51 -j ACCEPT
}
 
#
# create ipsec.conf
#
create_ipsec_conf(){
        cat > $IPSEC_CONF <<EOF
#!/sbin/setkey -f
flush;
spdflush;
 
#AH
add $HOSTA_IP $HOSTB_IP ah 15700 -A hmac-md5 "1234567890123456";
add $HOSTB_IP $HOSTA_IP ah 24500 -A hmac-md5 "1234567890123456";
 
#ESP
add $HOSTA_IP $HOSTB_IP esp 15701 -E 3des-cbc "123456789012345678901234";
add $HOSTB_IP $HOSTA_IP esp 24501 -E 3des-cbc "123456789012345678901234";
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
}
 
#
# main
#
debug_status
initialize
create_ipsec_conf