OpenVPN установка и настройка под Zyxel Keenetic Giga: различия между версиями
ALEX (обсуждение | вклад) (Новая страница: «test») |
ALEX (обсуждение | вклад) |
||
(не показано 5 промежуточных версий этого же участника) | |||
Строка 1: | Строка 1: | ||
Подразумевается, что у вас уже есть роутер кинетик с настроеной ''Linux'', доступом по SSH, а так же системой пакетов ''OPKG''. Суть заключается в установке '''OpenVPN''' на кинетике, который в свою очередь будет выполнить роль клиента и будет подключаться к серверу ''OpenVPN'' авторизуясь по ключу и сертификату. | |||
Статья была написана по материалам [http://forum.zyxmon.org/index.php форума] Zyxmon, а так же [http://code.google.com/p/zyxel-keenetic-packages/wiki/Welcome?tm=6 Wiki] проекта ZyxMon на ''google code''. Так же я обращался к статье на [http://www.3dnews.ru/workshop/612504 3DNews]. | |||
==Установка и настройка OpenVPN на Keenetic== | |||
Устанавливаем нужный пакет из репозитария | |||
{{root|opkg install openvpn-openssl}} | |||
Затем создаём конфиг, который обеспечит нам подключение '''Keenetic''''а к нашему удалённому VPN серверу, обеспечив авторизацию по ключу и сертификату. Подразумевается, что у вас ключ и сертификаты уже сгенерированны, а удалённый сервер VPN работает. | |||
{{root|cd /media/DISK_A1/system/etc/openvpn}} | |||
{{root|touch openvpn.conf}} | |||
{{root|vi openvpn.conf}} | |||
{{File|/media/DISK_A1/system/etc/openvpn/openvpn.conf| | |||
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | |||
client | |||
dev tun | |||
proto tcp | |||
#enforce server certificate verification by clients | |||
remote-cert-tls server | |||
remote VPN.SERVER.EXAMPLE.COM 1194 | |||
resolv-retry infinite | |||
nobind | |||
persist-key | |||
persist-tun | |||
ca /media/DISK_A1/system/etc/openvpn/key/ca.crt | |||
cert /media/DISK_A1/system/etc/openvpn/key/client.crt | |||
key /media/DISK_A1/system/etc/openvpn/key/client.key | |||
comp-lzo | |||
</syntaxhighlight> | |||
}} | |||
Под себя нужно заменить строчку с именем сервера и портом, который он слушает - {{Codeline|remote VPN.SERVER.EXAMPLE.COM 1194}} | |||
Так же в этой же папке {{path|/media/DISK_A1/system/etc/openvpn/}} создаём папку '''key''' с ключами и сертификатами клиента, чтобы мы могли подключиться к впн серверу и создать туннель (проходить авторизацию). | |||
{{root|mkdir key}} | |||
Собственно что за файлы и где они лежат видно из '''openvpn''' конфига. | |||
* ca.crt | |||
* client.crt | |||
* client.key | |||
Запускаем openvpn, что создаст туннель до нашего сервера. | |||
{{root|/media/DISK_A1/system/etc/init.d/K11openvpn start}} | |||
Если всё пройдёт успешно, то создастся интерфейс '''tun''', где '''ifconfig''' выдаст примерно следующее: | |||
{{File|ifconfig| | |||
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | |||
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00 | |||
inet addr:10.8.XXX.XXX P-t-P:10.8.XXX.YYY Mask:255.255.255.255 | |||
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1 | |||
RX packets:0 errors:0 dropped:0 overruns:0 frame:0 | |||
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0 | |||
collisions:0 txqueuelen:100 | |||
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B) | |||
</syntaxhighlight> | |||
}} | |||
==Настройка соединения с Keenetic'ом по SSH через VPN туннель== | |||
Теперь у нас уже есть туннель, который поднимает сам кинетик, обращаясь к ''OpenVPN'' серверу, который уже работает где-то в сети. Нам хотелось бы как-то опробовать это. Можно для начала попинговать с сервера наш кинетик, а так же наоборот - с кинетика VPN сервер. Но '''ping''' это конечно хорошо, но хотелось бы чуть большего =), а для чего нужно открыть возможность соединяться по '''ssh''' из вне (по нашему vpn туннелю), то есть в фаерволе откроем 22й порт, для чего выполним в консоли | |||
{{root|iptables -A INPUT -p tcp --dport 22 -j ACCEPT}} | |||
и попробуем теперь '''ssh''' соединение с сервера по туннелю к кинетику - всё должно работать. | |||
Теперь есть резон добавить это правило в папку правил '''Firewall''' (netfilter), чтобы оно запускалось автоматом. Для чего создаём файлик для этого правила | |||
{{root|touch /media/DISK_A1/system/etc/firewall.d/fw.sh}} | |||
Далее правим его | |||
{{root|vi /media/DISK_A1/system/etc/firewall.d/fw.sh}} | |||
добавляя нужное правило. После чего он должен выглядеть как | |||
{{File|/media/DISK_A1/system/etc/firewall.d/fw.sh| | |||
<syntaxhighlight lang="bash" line start="1" line="GESHI_FANCY_LINE_NUMBERS" enclose="div"> | |||
#!/bin/sh | |||
iptables -A INPUT -p tcp --dport 22 -j ACCEPT | |||
</syntaxhighlight> | |||
}} | |||
Теперь даём права на исполнение | |||
{{root|chmod a+x fw.sh}} | |||
{{note|Кстати глобально форвардинг пакетов у нас активируется при старте openvpn. В файле {{path|/media/DISK_A1/system/etc/init.d/K11openvpn}} есть строчка | |||
<pre> | |||
# Make sure IP forwarding is enabled | |||
echo 1 > /proc/sys/net/ipv4/ip_forward | |||
</pre> | |||
}} | |||
==Автоматический старт OpenVPN вместе с Linux на Keenetic== | |||
Теперь нужно сделать так, чтобы VPN поднимался каждый раз автоматом сам: | |||
{{root|cd /media/DISK_A1/system/etc/init.d/}} | |||
{{root|mv K11openvpn S11openvpn}} | |||
==Ссылки== | |||
* [http://forum.zyxmon.org/index.php Форум] ZyxMon | |||
* [http://code.google.com/p/zyxel-keenetic-packages/wiki/Welcome?tm=6 Wiki] проекта ZyxMon | |||
[[Category:Index]] | |||
[[Category:Linux]] |
Текущая версия на 19:05, 8 марта 2013
Подразумевается, что у вас уже есть роутер кинетик с настроеной Linux, доступом по SSH, а так же системой пакетов OPKG. Суть заключается в установке OpenVPN на кинетике, который в свою очередь будет выполнить роль клиента и будет подключаться к серверу OpenVPN авторизуясь по ключу и сертификату.
Статья была написана по материалам форума Zyxmon, а так же Wiki проекта ZyxMon на google code. Так же я обращался к статье на 3DNews.
Установка и настройка OpenVPN на Keenetic
Устанавливаем нужный пакет из репозитария
Затем создаём конфиг, который обеспечит нам подключение Keenetic'а к нашему удалённому VPN серверу, обеспечив авторизацию по ключу и сертификату. Подразумевается, что у вас ключ и сертификаты уже сгенерированны, а удалённый сервер VPN работает.
client
dev tun
proto tcp
#enforce server certificate verification by clients
remote-cert-tls server
remote VPN.SERVER.EXAMPLE.COM 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca /media/DISK_A1/system/etc/openvpn/key/ca.crt
cert /media/DISK_A1/system/etc/openvpn/key/client.crt
key /media/DISK_A1/system/etc/openvpn/key/client.key
comp-lzo
Под себя нужно заменить строчку с именем сервера и портом, который он слушает - remote VPN.SERVER.EXAMPLE.COM 1194
Так же в этой же папке /media/DISK_A1/system/etc/openvpn/ создаём папку key с ключами и сертификатами клиента, чтобы мы могли подключиться к впн серверу и создать туннель (проходить авторизацию).
Собственно что за файлы и где они лежат видно из openvpn конфига.
- ca.crt
- client.crt
- client.key
Запускаем openvpn, что создаст туннель до нашего сервера.
Если всё пройдёт успешно, то создастся интерфейс tun, где ifconfig выдаст примерно следующее:
tun0 Link encap:UNSPEC HWaddr 00-00-00-00-00-00-00-00-00-00-00-00-00-00-00-00
inet addr:10.8.XXX.XXX P-t-P:10.8.XXX.YYY Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 B) TX bytes:0 (0.0 B)
Настройка соединения с Keenetic'ом по SSH через VPN туннель
Теперь у нас уже есть туннель, который поднимает сам кинетик, обращаясь к OpenVPN серверу, который уже работает где-то в сети. Нам хотелось бы как-то опробовать это. Можно для начала попинговать с сервера наш кинетик, а так же наоборот - с кинетика VPN сервер. Но ping это конечно хорошо, но хотелось бы чуть большего =), а для чего нужно открыть возможность соединяться по ssh из вне (по нашему vpn туннелю), то есть в фаерволе откроем 22й порт, для чего выполним в консоли
и попробуем теперь ssh соединение с сервера по туннелю к кинетику - всё должно работать.
Теперь есть резон добавить это правило в папку правил Firewall (netfilter), чтобы оно запускалось автоматом. Для чего создаём файлик для этого правила
Далее правим его
добавляя нужное правило. После чего он должен выглядеть как
#!/bin/sh
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
Теперь даём права на исполнение
# Make sure IP forwarding is enabled echo 1 > /proc/sys/net/ipv4/ip_forward
Автоматический старт OpenVPN вместе с Linux на Keenetic
Теперь нужно сделать так, чтобы VPN поднимался каждый раз автоматом сам: