IT GURU

OpenWrt + VPNclient для роутера с 4mb ROM

Для установки клиента 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
Exit mobile version