Попробуйте вот таким способом. Скирпт конечно примитивный, без особых проверок, но работать должен.
В этом примере предполагается, что сеть на стороне FreeBSD - 192.168.3.0
А сеть на стороне динамического клиента - 192.168.1.0
Также предполагается что на Dlink, который отвечает за endpoint с динамическим адресом, настроена функция работы с dyndns.
Еще не забудьте проверить пути указанные в списке переменных, чтобы они соответствовали тем, которые на вашей машине.
В общем попробуйте, если что не получится - пишите, подумаем что и как...
P.S. Еще, убедитесь, что на машине есть sed - Stream Editor. Если нету - установите. В данном примере эта штука нужна для разбора данных, полученых от whois сервера.
--------------------------------------------------------------------------------
#!/bin/sh
###########################################
# version 0.1 20050803-10:45 #
# Primitive racoon configuration shell script for dynamic endpoint
# INEXT SYSTEMS
# created by Nikolas Hawksmoore
#
hawksmoore@inext.net
###########################################
CONFDIR=/etc/DYNIPSEC
RAWINFO=host.info.raw
IPRAW=host.ip.raw
IPINFO=host.ip
IPSECCFG=/etc/ipsec.conf
PSK=/usr/local/etc/racoon/psk.txt
#Your dynamic host dns name (i.e. via
www.dyndns.org)
DYNHOSTNAME=your.dyndns.org
#Your local FreeBSD server IP address
LOCALHOSTIP=xxx.xxx.xxx.xxx
clear
nslookup $DYNHOSTNAME > $CONFDIR/$RAWINFO
sed '1,5d' $CONFDIR/host.info.raw > $CONFDIR/$IPRAW
sed 's/Address: //p' $CONFDIR/host.ip.raw > $CONFDIR/$IPINFO
IPADDR=`sed -n '1p' $CONFDIR/$IPINFO`
rm $CONFDIR/$RAWINFO
rm $CONFDIR/$IPRAW
rm $CONFDIR/$IPINFO
#Creating /etc/ipsec.conf
rm $IPSECCFG
echo 'flush;' >> $IPSECCFG
echo 'spdflush;' >> $IPSECCFG
echo 'spdadd 192.168.3.0/32 192.168.1.0/32 any -P out ipsec esp/tunnel/'$LOCALHOSTIP'-'$IPADDR'/require;' >> $IPSECCFG
echo 'spdadd 192.168.1.0/32 192.168.3.0/32 any -P in ipsec esp/tunnel/'$IPADDR'-'$LOCALHOSTIP'/require;' >> $IPSECCFG
chmod 665 $IPSECCFG
#creating /usr/local/etc/racoon/psk.txt
rm $PSK
#Change the string below using your key
echo $IPADDR' superpuperpassword' >> $PSK
chmod 600 $PSK
#configuring GIF interfaces
#Use this section to configure gif interfaces (if you use it)
gifconfig gif1 inet $LOCALHOSTIP $IPADDR
#restarting racoon
/usr/local/etc/racoon/start.sh