Для установки клиента OpenVPN требуется, как минимум, 8Мб свободного места на флеш. Поэтому умные люди придумали устанавливать клиент OpenVPN в раздел /tmp (в который, в свою очередь монтируется ОЗУ роутера):
root@OpenWrt:~# df
Filesystem 1K-blocks Used Available Use% Mounted on
rootfs 896 544 352 61% /
/dev/root 2048 2048 0 100% /rom
tmpfs 14608 3412 11196 23% /tmp
tmpfs 512 0 512 0% /dev
/dev/mtdblock 4 896 544 352 61% /overlay
overlayfs:/overlay 896 544 352 61% /
1. Подключаемся к роутеру по ssh и выполняем команды:
opkg update
opkg install kmod-tun zlib liblzo
mkdir /etc/openvpn
touch /etc/init.d/openvpn
chmod +x /etc/init.d/openvpn
2. Редактируем init скрипт:
vi /etc/init.d/openvpn
#!/bin/sh /etc/rc.common
START=99
start() {
local TMPPATH=/tmp/openvpn
[ ! -d ${TMPPATH} ] && mkdir ${TMPPATH}
cd ${TMPPATH}
opkg update || exit 1
tar xzf $(opkg download libopenssl | grep Downloaded | cut -d\ -f4 | sed '$s/.$//')
tar xzf data.tar.gz
tar xzf $(opkg download openvpn | grep Downloaded | cut -d\ -f4 | sed '$s/.$//')
tar xzf data.tar.gz
rm -f pkg.tar.gz data.tar.gz control.tar.gz debian-binary getopenvpn.sh
for i in $(ls ${TMPPATH}/usr/lib)
do
[ ! -f /usr/lib/$i ] && ln -s /tmp/openvpn/usr/lib/$i /usr/lib/$i
done
${TMPPATH}/usr/sbin/openvpn --writepid /tmp/ovpn_ciberterminal.pid --daemon --cd /etc/openvpn --config my.conf
}
stop() {
PIDOF=$(ps | egrep openvpn | egrep -v grep | awk '{print $1}')
kill ${PIDOF}
}
3. Копируем в папку /etc/openvpn файл конфигурации (в нашем случае my.conf), сертификаты и ключ.
4. Запускаем openvpn:
/etc/init.d/openvpn start
Если все прошло успешно, то при выполнении команды ifconfig увидим новый tun или tap интерфейс.
Если соединение не установилось, можно попробовать найти ошибку с помощью команды:
logread -f
Пример конфигурационного файла my.conf:
dev tap
proto udp
#remote vpnxxxx.v4.softether.net 1194^M
remote xx.xx.xx.xx 1194
cipher AES-128-CBC
auth SHA1
resolv-retry infinite
nobind
persist-key
persist-tun
client
verb 3
#auth-user-pass
auth-user-pass login.conf
#auth-retry nointeract
#auth-nocache
#Loging
log /tmp/log/openvpn/openvpn.log
status /tmp/log/openvpn/openvpn-status.log
# Keepalive
keepalive 10 180