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