Frequently Asked Questions

Question
IPSec туннель FreeBSD - FreeBSD без racoon

Answer
Оригинал: Konstantin Nikonenko

Скрипт, для поднятия криптованого туннеля через интернет между двумя
серверами. racoon не используется - статические ключи. gif нам делает
туннель. IPsec криптует проходящие пакетики. setkey -D показывает
шифруем вообще или нет - здорово помогает при отладке. ipsec_gif.sh у
меня так и живёт в /usr/local/etc/rc.d

Огромное спасибо drook from IRC Rusnet channel #freebsd, который
поправил меня, указав, что при использовании gif получается туннель в
туннеле и что можно обойтись без него. В таком случае обходятся глюки
NAT. traceroute смотреть из-под серой сети.

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


Details
Info Sunday 14 March 2010 - 17:01:23 by




Vampyr`s House!


Protected by Copyscape DMCA Plagiarism Check