Ключевые слова:ipsec, tunnel, crypt, bsd, (найти похожие документы)
From: Konstantin Nikonenko <http://www.kot.dp.ua>
Date: Mon, 2 Aug 2004 18:21:07 +0000 (UTC)
Subject: Скрипт, для поднятия криптованого IPSec туннеля под FreeBSD
Оригинал: http://www.kot.dp.ua/
Скрипт, для поднятия криптованого туннеля через интернет между двумя
серверами. racoon не используется - статические ключи. gif нам делает
туннель. IPsec криптует проходящие пакетики. setkey -D показывает
шифруем вообще или нет - здорово помогает при отладке. ipsec_gif.sh у
меня так и живёт в /usr/local/etc/rc.d
Огромное спасибо drook from IRC Rusnet channel #freebsd, который
поправил меня, указав, что при использовании gif получается туннель в
туннеле и что можно обойтись без него. В таком случае обходятся глюки
NAT. traceroute смотреть из-под серой сети. ipsec.sh
ipsec_gif.sh
#!/bin/sh
#
INTERNAL_IP_SRC=192.168.2.1
INTERNAL_IP_DST=192.168.1.1
INTERNAL_IP_MASK=255.255.255.0
EXTERNAL_IP_SRC=X.X.X.X
EXTERNAL_IP_DST=Y.Y.Y.Y
# on remote side change SRC to DST
ARG_SRC=0x10004
ARG_DST=0x10003
# ---------------------------------------------------------------------------- #
ifconfig gif0 destroy
ifconfig gif0 create
gifconfig gif0 "$EXTERNAL_IP_SRC" "$EXTERNAL_IP_DST"
ifconfig gif0 inet "$INTERNAL_IP_SRC" "$INTERNAL_IP_DST" netmask "$INTERNAL_IP_MASK"
setkey -F
setkey -PF
setkey -c <<-EOF
spdadd $INTERNAL_IP_SRC/24 $INTERNAL_IP_DST/24 any -P out ipsec
esp/tunnel/${EXTERNAL_IP_SRC}-${EXTERNAL_IP_DST}/require;
spdadd $INTERNAL_IP_DST/24 $INTERNAL_IP_SRC/24 any -P in ipsec
esp/tunnel/${EXTERNAL_IP_DST}-${EXTERNAL_IP_SRC}/require;
add $EXTERNAL_IP_SRC $EXTERNAL_IP_DST esp ${ARG_SRC} -m any
-E 3des-cbc "XXXXXXXXXXXXXXXXXXXXXXXX";
add $EXTERNAL_IP_DST $EXTERNAL_IP_SRC esp ${ARG_DST} -m any
-E 3des-cbc "XXXXXXXXXXXXXXXXXXXXXXXX";
EOF
/sbin/route add 192.168.1.0/24 192.168.1.1
ipsec.sh
#!/bin/sh
#
# Office, for another end point change only in <-> out
#
# Great thank's to drook on RusNet IRC, channel #freebsd
#
EXT1_IF=2.3.1.126
EXT2_IF=5.4.1.10
INT1_NET="192.168.1.0/24"
INT2_NET="192.168.2.0/24"
setkey -c <<-EOF
spdadd $EXT1_IF $INT2_NET any -P in ipsec esp/tunnel/$EXT1_IF-$EXT2_IF/require ah/transport/$EXT1_IF-$EXT2_IF/require;
spdadd $INT2_NET $EXT1_IF any -P out ipsec esp/tunnel/$EXT2_IF-$EXT1_IF/require ah/transport/$EXT2_IF-$EXT1_IF/require;
spdadd $EXT2_IF $INT1_NET any -P out ipsec esp/tunnel/$EXT2_IF-$EXT1_IF/require ah/transport/$EXT2_IF-$EXT1_IF/require;
spdadd $INT1_NET $EXT2_IF any -P in ipsec esp/tunnel/$EXT1_IF-$EXT2_IF/require ah/transport/$EXT1_IF-$EXT2_IF/require;
#
# policies again
spdadd $INT2_NET $INT1_NET any -P out ipsec esp/tunnel/$EXT2_IF-$EXT1_IF/require ah/transport/$EXT2_IF-$EXT1_IF/require;
spdadd $INT1_NET $INT2_NET any -P in ipsec esp/tunnel/$EXT1_IF-$EXT2_IF/require ah/transport/$EXT1_IF-$EXT2_IF/require;
#
# sas again
add $EXT1_IF $EXT2_IF esp 0x10009 -m tunnel -E 3des-cbc "XXXXXXXXXXXXXXXXXXXXXXXX" -A hmac-md5 "ZZZZZZZZZZZZZZZZ";
add $EXT1_IF $EXT2_IF ah 0x10010 -m transport -A keyed-md5 "YYYYYYYYYYYYYYYY";
add $EXT2_IF $EXT1_IF esp 0x10011 -m tunnel -E 3des-cbc "WWWWWWWWWWWWWWWWWWWWWWWW" -A hmac-md5 "OOOOOOOOOOOOOOOO";
add $EXT2_IF $EXT1_IF ah 0x10012 -m transport -A keyed-md5 "BBBBBBBBBBBBBBBB";
EOF