Установка и настройка OpenVPN на роутере
Настройка OpenVPN сервера подробна описана в этом мануале.
Есть небольшое отличие конфига для OpenVPN в OpenWRT. Все пути до ключей должными быть полными (а не относительными, как указано в статье).
Установка клиента openvpn:
opkg install openvpn-polarssl
Использование библиотеки polarssl позволит нам установить openvpn на внутреннюю флэш (polarssl с зависимостями занимает меньше места чем openssl). А это в дальнейшем поможет заходить удаленно на роутер даже в случае возникновения проблем с USB флэш.
Копируем по ssh ключи и конфиг на роутер:
scp home-020.crt home-020.key ta.key ca.crt home_client.conf root@ip:~/
Тем, кто работает в windows, возможно, будет удобнее копировать файлы на роутер с помощью программы WinSCP. С помощью этой же программы можно удаленно по ssh создавать, удалять, редактировать и т.д. файлы.
Далее копируем файлы ключей и конфиг в отведенные им места:
mkdir /etc/openvpn/home mv home-020.* ca.crt ta.key /etc/openvpn/home/ mv home_client.conf /etc/openvpn/
Для проверки всего проделанного можно запустить OpenVPN с консоли так:
openvpn --config /etc/openvpn/home_client.conf
Если соединение устанавливается корректно, то в консоли мы увидим что-то подобное этому:
Wed Aug 6 14:47:23 2014 OpenVPN 2.3.4 mips-openwrt-linux-gnu [SSL (PolarSSL)] [LZO] [EPOLL] [MH] [IPv6] built on Jul 21 2014 Wed Aug 6 14:47:23 2014 library versions: PolarSSL 1.3.7, LZO 2.08 Wed Aug 6 14:47:23 2014 Control Channel Authentication: using '/etc/openvpn/home/ta.key' as a OpenVPN static key file Wed Aug 6 14:47:23 2014 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication Wed Aug 6 14:47:23 2014 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication Wed Aug 6 14:47:23 2014 Socket Buffers: R=[163840->131072] S=[163840->131072] Wed Aug 6 14:47:23 2014 UDPv4 link local: [undef] Wed Aug 6 14:47:23 2014 UDPv4 link remote: [AF_INET]189.236.214.204:65446 Wed Aug 6 14:47:23 2014 TLS: Initial packet from [AF_INET]189.236.214.204:65446, sid=cc395913 c6610d9a Wed Aug 6 14:47:24 2014 VERIFY OK: depth=1, C=RU, ST=TOM, L=Tomsk, O=Home, CN=Home CA, emailAddress=first-leon@yandex.ru Wed Aug 6 14:47:24 2014 VERIFY OK: nsCertType=SERVER Wed Aug 6 14:47:24 2014 VERIFY OK: depth=0, C=RU, ST=TOM, L=Tomsk, O=Home, CN=home, emailAddress=first-leon@yandex.ru Wed Aug 6 14:47:28 2014 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key Wed Aug 6 14:47:28 2014 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Wed Aug 6 14:47:28 2014 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key Wed Aug 6 14:47:28 2014 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication Wed Aug 6 14:47:28 2014 Control Channel: TLSv1.0, cipher TLS-DHE-RSA-WITH-AES-256-CBC-SHA, 2048 bit RSA Wed Aug 6 14:47:28 2014 [home] Peer Connection Initiated with [AF_INET]188.226.204.204:65456 Wed Aug 6 14:47:30 2014 SENT CONTROL [home]: 'PUSH_REQUEST' (status=1) Wed Aug 6 14:47:30 2014 PUSH: Received control message: 'PUSH_REPLY,route-gateway 10.9.8.1,ping 10,ping-restart 120,ifconfig 10.9.8.20 255.255.255.0' Wed Aug 6 14:47:30 2014 OPTIONS IMPORT: timers and/or timeouts modified Wed Aug 6 14:47:30 2014 OPTIONS IMPORT: --ifconfig/up options modified Wed Aug 6 14:47:30 2014 OPTIONS IMPORT: route-related options modified Wed Aug 6 14:47:30 2014 TUN/TAP device tap0 opened Wed Aug 6 14:47:30 2014 TUN/TAP TX queue length set to 100 Wed Aug 6 14:47:30 2014 do_ifconfig, tt->ipv6=0, tt->did_ifconfig_ipv6_setup=0 Wed Aug 6 14:47:30 2014 /sbin/ifconfig tap0 10.9.8.20 netmask 255.255.255.0 mtu 1500 broadcast 10.9.8.255 Wed Aug 6 14:47:32 2014 Initialization Sequence Completed
Теперь нужно настроить автозапуск OpenVPN клиента. Для этого нужно привести файл /etc/config/openvpn к такому виду:
package openvpn config openvpn custom_config option enabled 1 option config /etc/openvpn/home_client.conf
Включить автозапуск нужно так:
/etc/init.d/openvpn enable
Запустить можно так:
/etc/init.d/openvpn start
Посмотреть логи подключения можно командой logread