Добрый день, Хабр! Недавно у меня возникла необходимость предоставить доступ в Интернет всем пользователям моей домашней сети через OpenVPN. Первоначально древний IBM NetVista 6646-Q1G с Linux Centos 6 на борту.
С этой задачей он справился хорошо, но, как говорится, совершенству нет предела.
Захотелось заменить его на что-то более компактное.
Изначально выбор пал на Малиновый Пи Модель Б , но смущала цена в 50 долларов, ведь нынешний сервер также успешно справился с той задачей, которую должен был выполнять.
Я начал рассматривать альтернативные варианты.
И я нашел, как мне казалось, идеальное решение — роутер + прошивка.
ДД-ВРТ , который содержит клиент OpenVPN. Далее пришло время выбора роутера.
я остановился на ТП-Линк WR841N .
Искать по база данных показал, что DD-WRT это поддерживает. Буквально в тот же день аппарат был куплен и прошит. Но тут меня разочаровало — в веб-интерфейсе на вкладке VPN не было возможности настроить клиент OpenVPN. Google очень быстро помог мне найти причину этой несправедливости: « OpenVPN доступен только на устройствах с флэш-памятью не менее 8 МБ (кроме сборки Broadcom VPN).
”.
Как говорят мудрейшие люди, внимательно читайте договорную документацию.
Ладно, это еще интереснее.
Быстрый поиск альтернативной прошивки привел меня к OpenWRT .
Его отличие от DD-WRT в том, что у него есть менеджер пакетов.
опкг с хорошим репозиторием и возможностью гибкой настройки системы под свои нужды.
По сути, это очень облегченная версия Linux. В OpenWRT настроить OpenVPN из коробки не удалось — проблема та же, что и с DD-WRT. Но, благодаря архитектуре этой прошивки, была надежда, что всё получится.
В tmpfs обнаружено довольно много свободного места:
Как следует из названия, оперативная память маршрутизатора монтируется в /tmp. Несколько минут поиска в Google привели меня к страница с решением этого вопроса.root@OpenWrt:~# df Filesystem 1K-blocks Used Available Use% Mounted on rootfs 1088 352 736 32% / /dev/root 2048 2048 0 100% /rom tmpfs 14608 3256 11352 22% /tmp tmpfs 512 0 512 0% /dev /dev/mtdblock3 1088 352 736 32% /overlay overlayfs:/overlay 1088 352 736 32% /
К сожалению, у меня это не сработало, так как после установки пакетов kmod-tun, liblzo и libopenssl в корневой файловой системе осталось критически мало места.
Поэтому было решено немного модернизировать данное руководство.
Вот что я получил.
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. Отредактируйте скрипт инициализации: 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. Скопируйте файл конфигурации (в нашем случае my.conf), сертификаты и ключ в папку /etc/openvpn.
4. Запускаем openvpn: /etc/init.d/openvpn start
Если все прошло успешно, то при выполнении команды ifconfig мы увидим новый интерфейс tun или Tap. Пример: 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.0.54 P-t-P:10.8.0.53 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:100558 errors:0 dropped:0 overruns:0 frame:0
TX packets:78362 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:85115045 (81.1 MiB) TX bytes:16184384 (15.4 MiB
Если соединение не установлено, можно попытаться найти ошибку с помощью команды: logread -f
Далее вам необходимо добавить сетевой интерфейс и настроить брандмауэр, чтобы разрешить клиентский трафик через VPN. Это можно сделать с помощью веб-интерфейса.
Примеры на скриншотах ниже:
Данное решение успешно протестировано и работает на роутере TP-Link WR841N, а также подойдет и для других.
поддерживаемые устройства OpenWRT , имеющий ПЗУ 4 мегабайта.
Теги: #linux #Беспроводные технологии #Системное администрирование #openvpn #Конфигурация Linux #OpenWRT #tp-link wr841n
-
Марокко
19 Oct, 24 -
Суп Кипит?
19 Oct, 24 -
5 Аргументов В Пользу Коробочной Атс
19 Oct, 24 -
Comet — Php-Фреймворк Для Быстрых Rest Api
19 Oct, 24 -
Как Должны Выглядеть Приложения Для Android?
19 Oct, 24 -
Свн: Шесть Месяцев Спустя
19 Oct, 24