ここでは、2台のArmadillo-210をIPSecで通信させる手順を示します。
自動鍵処理を行なうためには、setkeyとracoonが必要となります。
『ipsec-toolsのコンパイル』を参照してビルドしてください。
1. 設定ファイルの生成スクリプト:racoon.setting
IPSecを動かすためには、鏡映的な設定ファイルが必要となります。
これを手入力で作成し、少しでもミスがあると動作しない可能性が十分にあるので、
ここではスクリプトによる自動生成を行なってみます。
*注意:このスクリプトは、Armadillo-210用です。PCでは使用しないで下さい。
- スクリプト: racoon.setting
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