...но думаю что и на NAS можно реализовать, вопрос в том как трафик развести - ведь NAS не роутер и из-за этого могут быть проблемы (например, двойной NAT).
Без проблем поднимается openvpn из optware на synology, что вчера и сделал. В последних прошивках драйвер ядра tun.ko есть, лежит в /lib/modules
смысла поднимать второй nat на synology не вижу. достаточно включить маршрутизацию:
echo 1 > /proc/sys/net/ipv4/ip_forward
на маршрутизаторе нужно создать статический маршрут в openvpn подсеть. Создание конфигураций и ключей много где описано.
Скрипт запуска openvpn из optware у меня такой.
#!/bin/sh
MODULES_BASE="/lib/modules"
KERNEL_VERSION=`uname -r`
case "$KERNEL_VERSION" in
"2.6.24")
KERNEL_MODULES_OPENVPN="tun.ko"
;;
esac
success() {
[ -n $1 ] && echo "success" || echo "$1: success"
}
failure() {
[ -n $1 ] && echo "failed" || echo "$1: failed"
}
insmod_syno() {
local modules=$1
local mod
local err=0
for mod in $modules; do
echo -n "$mod: "
/sbin/insmod ${MODULES_BASE}/${mod} > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success $mod || failure $mod
err=`expr $err + $ret`;
done
return $err
}
rmmod_syno() {
local modules=$1
local mod
local err=0
for mod in $modules; do
echo -n "$mod: "
/sbin/rmmod ${MODULES_BASE}/${mod} > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success $mod || failure $mod
err=`expr $err + $ret`;
done
return $err
}
start() {
local ret=0;
echo ""
echo "Loading OpenVPN kernel modules:"
insmod_syno "$KERNEL_MODULES_OPENVPN"
# Make sure IP forwarding is enabled
echo 1 > /proc/sys/net/ipv4/ip_forward
# Make device if not present (not devfs)
if ( [ ! -c /dev/net/tun ] ) then
# Make /dev/net directory if needed
if ( [ ! -d /dev/net ] ) then
mkdir -m 755 /dev/net
fi
mknod /dev/net/tun c 10 200
fi
echo ""
echo -n "Starting OpenVPN in daemon mode...."
/opt/sbin/openvpn --cd /opt/etc/openvpn --daemon --config /opt/etc/openvpn/myconf.ovpn --script-security 2 --log-append /opt/var/log/openvpn.log > /dev/null 2>&1
ret=$?
[ $ret -eq 0 ] && success || failure
err=`expr $err + $ret`;
return $err
}
stop() {
echo ""
echo -n "Killing OpenVPN processes...."
if [ -n "`pidof openvpn`" ]; then
/usr/bin/killall openvpn 2>/dev/null
fi
ret=$?
[ $ret -eq 0 ] && success || failure
sleep 1
echo ""
echo "Unloading OpenVPN kernel modules... "
rmmod_syno "$KERNEL_MODULES_OPENVPN"
return $ret
}
restart() {
stop
sleep 3
start
}
case "$1" in
start)
start
RETVAL=$?
;;
stop)
stop
RETVAL=$?
;;
restart)
restart
RETVAL=$?
;;
*)
echo $"Usage: ${0##*/} {start|stop|restart}"
RETVAL=2
;;
esac
exit $RETVAL
Возникла, правда, одна проблема. С openvpn клиента доступны только synology и роутер. Проблема описана тут
http://forum.synology.com/enu/viewtopic.php?f=27&t=20724
(для просмотре некоторых разделов forum.synology.com нужна регистрация). Если разберусь с проблемой - напишу.