5

ƒвусторонний VPN на Asus RT-56U и Zyxel Keenetic Lite

Ќедавно ушЄл с работы. ”ехал за город отдыхать. –укам скучно и они всегда ищут на чЄм потренироватьс€. Ѕыл вечер и мне написал мой давний при€тель по радиоэфиру. ћол, раз ты у нас админ, хоть и в прошлом, то уж точно должен знать, как выполнить тривиальную задачу: необходимо сети дачи и квартиры между собой объединить через OpenVPN. Ѕелый динамический IP существует и даже с двух сторон. ”стройства Kennetic Lite и Asus. ” него получилась следующее:

ƒома подн€т OpenVPN сервер на Asus RT-56U и на дачу скопирована конфигураци€ с ключами. —оединение устанавливаетс€, но он с дачи видит то, что существует дома, а из дома - не видит дачи.

ƒвусторонний VPN на Asus RT-56U и Zyxel Keenetic Lite VPN, —ети, Asus, Zyxel, Pptp, Openvpn, ƒлиннопост

 ак ни пыталс€ он из дома достучатьс€ до дачи - никак. Ќичего умнее не придумал, как создать сервер PPTP на Keenetic Lite и дл€ доступа из дома через роутер подключатьс€ на дачу. “еперь он видел сеть, котора€ существует на даче, но при этом весь интернет трафик заворачиваетс€ на дачу.

ƒвусторонний VPN на Asus RT-56U и Zyxel Keenetic Lite VPN, —ети, Asus, Zyxel, Pptp, Openvpn, ƒлиннопост

“ребуетс€ же сделать так, чтобы сети были общие, а в интернет все ходили по своим коннектам. «адача, на мой взгл€д, плЄва€ и решалась мной обычно не дольше, чем за дес€ть минут. »з которых п€ть уходило на заполнение задачи.

ƒвусторонний VPN на Asus RT-56U и Zyxel Keenetic Lite VPN, —ети, Asus, Zyxel, Pptp, Openvpn, ƒлиннопост

¬от только что-то пошло не так. “о ли кризис на мировых биржах, то ли ураган за окном, то ли коронавирус. — сетевым оборудованием Asus не работал уже сотню лет и, если честно, то не особо мне с ним хочетс€ работать. ћне дали доступ ко всему оборудованию и € приступил в ночи.  ѕервое, что посмотрел, что у нас происходит в таблицах роутинга. Keenetic при подключении получает push от Asus и добавл€ет в свою динамическую таблицу правильно:

192.168.85.0 255.255.255.0 10.8.0.2

то есть за полученным адресом 10.8.0.2 существует домашн€€ сеть 192.168.85.0/24.

—мотрю на то, что со стороны Asus и не вижу ни созданной сети OpenVPN 10.8.0.0 255.255.255.0 10.8.0.1, ни 192.168.100.0 255.255.255.0 10.8.0.2. ¬ижу только 10.8.0.0 255.255.255.0 * (дефолтный маршрут).

¬ебинтерфейс Asus при всей своей красоте очень скучен дл€ настроек. Ѕилс€ с ним долго и не получил никакого результата. «а окном дождь превращалс€ то в крупу, то в снег, а ветер хлестал по окнам. ѕолистал форумы. Ќаписано, что если что-то и можно сделать, то исключительно через SSH. ¬ключил. ѕосмотрел настройки через консоль. ƒобавил клиентский файл дл€ включени€ роутинга с прописанной сетью. ¬ логах ошибки нет, но не подключает он его. —овсем. » так крутил, и с€к крутил. ”ма€лс€. Ќа часах был третий час. ”шЄл спать.

—даватьс€ не хотел. —казал человеку всЄ, что думаю, что Asus скорее всего имеет на своЄм борту урезанный OpenVPN, поэтому через него не получитс€. –ешил отдохнуть от задачи. ƒел в доме до фига, в том числе и от этого сильного ветра.

” мен€ получалось установить соединение и в ручном режиме добавить рутинги. —еть за Keenetic'ом была видна, но после добавлени€ правил файрвола дл€ ICMP, TCP, UDP. ѕосле разрыва соединени€ маршруты необходимо было писать заново.

¬ыходные прошли и тут решил попробовать сделать иначе. –аз доступен PPTP, то следует изучить его. ¬ консоли по настройкам оного ничего (повтор€ю по буквам: Ќ»-„≈-√ќ) нет.  роме общих файлов секретов.

»зучил настройки подключени€ клиента PPTP в вебе и пон€л, что можно указать сеть клиента при подключении, что и сделал. ƒобавил на Keenetic те же правила файрвола и... сеть за ним стала доступна, но ввиду отсутстви€ галки у default route, который используетс€ дл€ проброса всего трафика до квартиры, на Zyxel пришлось добавить статические маршруты дл€ этого соединени€ с указанием подсети 192.168.85.0 255.255.255.0, а в шлюзе оставил пустоту, интерфейс мной был указан PPTP (по названию соединени€). “рафик начал ходить в обе стороны, интернет у каждого роутера свой. «адача выполнена полностью и правильно. —ебе на пиво заработал.

ѕодытожу: на стороне сервера Asus RT-56U необходимо создать PPTP сервер, создать подключение, в свойствах которого необходимо указать сеть, наход€щуюс€ за этим соединением при подключении в формате подсеть/маска (192.168.0.0/255.255.255.0).

Ќа стороне Zyxel Keenetic: создать соединение с реквизитами. заданными на PPTP сервере и не использовать его дл€ выхода в интернет. ƒл€ добавить в маршруты сеть, наход€щуюс€ за PPTP-сервером дл€ этого подключени€, поставив галку автоматическое создание при подключении. » создать правила файрвола дл€ этого соединени€, где необходимо разрешить нужные вам протоколы ICMP/TCP/UDP и прочее.

„еловек доволен, что ему пока не придЄтс€ мен€ть сетевое оборудование. ћне же урок, что вс€ка€ железка может иметь свою реализацию, котора€ может не отвечать общеприн€тым стандартам.

ƒубликаты не найдены

0
” мен€ такой ламерский вопрос. ѕодключаюсь через VPN к сети организации 192.168.1.0/24 на ¬инде. ѕрописываю маршрут route add 0.0.0.0 mask 0.0.0.0 192.168..89.1 (это айпишник моего соединени€). —еть организации видно, все ок. Ќо весь трафик идЄт через vpn соотаетственно, что логично, € же это и указал.  ак правильно указать, чтобы трафик к сети 192.168.1.0 шел через ¬ѕЌ, а весь прочий - через 192.168.0.1?
раскрыть ветку 1
0

Ќаверное, прописать эту сеть при подключении:

192.168.1.0 MASK 255.255.255.0 192.168.89.1


0.0.0.0 - весь трафик туда

0

”бедитесь, что у вас маршруты есть в ќЅ≈ стороны. “оесть каждому хосту известно куда отвечать. ѕопунгуйте с роутеров в обе стороны. —оответственно  инетик должен понимать где находитс€ 192.168.85.0/24, а јсус где 192.168.100.0/24. ѕингуйте последовательно: начало тунел€, конец тунел€, адрес роутера в другой сети, хост в другой сети. ѕокажите route list'ы обоих роутеров.

раскрыть ветку 3
0

¬ обе стороны. ¬сЄ перепровер€л человек, которому сделал. ѕереподключали соединени€ тоже. ¬сЄ штатно восстановилось.


ѕинговать желательно не с роутеров, а с оконечного оборудовани€, чтобы убедитьс€ в том, что трансл€ци€ адресов не нужна.


ћаршруты уже не покажу, так как после проверки попросил сразу же закрыть мне доступ, так как допиливать там больше нечего.

раскрыть ветку 2
0

 ак вы определите через какой из фаерволов не лезет ICMP, пингу€ с дальних хостов? ¬ключен ли proxy-arp?  роме icmp что нибудь лезет? ”бедитесь сначала, что оба роутера друг-друга вид€т и могут общатьс€. ƒальше, как только убдитесь, что маршруты в обе стороны работают, камлайте над фаерволами.

раскрыть ветку 1
0
ћожет кому то и пригодитс€. Ќо задача очень узка€.оборудовонание разных производителей в€жетс€ между собой как правило криво. ѕолучилось - отлично. Ќе получилось - дешевле помен€ть оборудование
раскрыть ветку 17
0

јбсолютно с вами согласен. Ѕолее того, что данна€ задача тривиальна дл€ любого маломальски понимающего человека. ќднако, видите, зат€нулась надолго. ” себ€ дома это делаю за 2-3 минуты, когда нужно что-то добавить (да, приходитс€ к себе внешние сети добавл€ть иногда).

раскрыть ветку 16
0
—ейчас встретил странный глюк на вин10. ћаршрут не добавл€етс€. ѕосле ручного добавлени€ работает. Ќо после отключени€, не смотр€ на существование маршрута - не работает. ”дал€ю, добавл€ю - оп€ть работает
раскрыть ветку 15
ѕохожие посты
61

—оздаЄм свой VPN-сервер. ѕодробна€ инструкци€

ѕривет!
— сегодн€шнего дн€ в –‘ прикрывают VPN-сервисы дл€ обхода блокировок.

Ќо блокируют только публичные сервисы, поэтому расскажу как сделать свой собственный VPN-сервис всего за $2.5 в мес€ц (около 150 рублей).


Ѕольше года назад был пост об этом, но простому пользователю будет сложно следовать этой инструкции. https://pikabu.ru/story/sobstvennyiy_vpn_4693285


–егистрируем VPS (предлагаю vultr.com, ибо там недорого, вообще, можно где угодно).

vultr предлагает VPS в ћайами или Ќью-…орке недорого, в остальных местах минимальный ценник чуть больше Ч $5.

ѕрив€зываем карту или пополн€ем баланс.

—оздаЄм свой VPN-сервер. ѕодробна€ инструкци€ VPN, Openvpn, «апрет VPN, ƒлиннопост

—оздаЄм сервер.

—оздаЄм свой VPN-сервер. ѕодробна€ инструкци€ VPN, Openvpn, «апрет VPN, ƒлиннопост
—оздаЄм свой VPN-сервер. ѕодробна€ инструкци€ VPN, Openvpn, «апрет VPN, ƒлиннопост
—оздаЄм свой VPN-сервер. ѕодробна€ инструкци€ VPN, Openvpn, «апрет VPN, ƒлиннопост

ѕровер€ем, что всЄ нажали верно. ∆мЄм "Deploy Now". ѕопадаем в список серверов, ждЄм запуска.

—оздаЄм свой VPN-сервер. ѕодробна€ инструкци€ VPN, Openvpn, «апрет VPN, ƒлиннопост

Ќа странице конкретного сервера будет информаци€ дл€ подключени€ по SSH. ≈сли эти три буквы видите впервые, то жмЄм кнопку "View Console"

—оздаЄм свой VPN-сервер. ѕодробна€ инструкци€ VPN, Openvpn, «апрет VPN, ƒлиннопост

јвторизуемс€ в консоли (или по SSH) с помощью данных дл€ входа и выполн€ем следующие действи€ (копируйте построчно в консоль):


1. apt-get update
2. apt-get install git
3. cd /root
4. git clone https://github.com/Nyr/openvpn-install.git
5. cd openvpn-install
6. chmod +x openvpn-install.sh
7. ./openvpn-install.sh

Ётими действи€ми мы скачаем и запустим скрипт дл€ автоматической настройки сервера OpenVPN. —оглашаемс€ со всем, кроме имени клиента. ≈го нужно придумать, только латиница. ѕод каждое устройство делаетс€ один "клиент". ѕервый создастс€ сейчас, чтобы добавить ещЄ несколько, нужно повторно запустить скрипт (см. выше, команда под номером 7).

—оздаЄм свой VPN-сервер. ѕодробна€ инструкци€ VPN, Openvpn, «апрет VPN, ƒлиннопост

“еперь в домашней директории (команда дл€ перехода туда: cd ~) по€вились файлы с расширением .ovpn (по одному на каждого созданного клиента).  аким-либо образом забираете файлы с сервера (можно использовать SCP, удобный сервис transfer.sh или просто скопировать содержимое файлов и создать файлы с этим содержимым и расширением .ovpn Ч команда cat pupkin.ovpn).


Ёти файлы используем в программах дл€ подключени€ к OpenVPN. ¬от подход€щие программы:

iOS: https://itunes.apple.com/ru/app/openvpn-connect/id590379981

Android: https://play.google.com/store/apps/details?id=net.openvpn.openvpn

Windows: https://swupdate.openvpn.org/community/releases/openvpn-install-2.4.4-I601.exe

OS X: https://tunnelblick.net/downloads.html

Ubuntu: apt-get install openvpn Ч установка. openvpn pupkin.ovpn Ч запуск.


¬сего хорошего! ≈сли возникнут вопросы, пишите в комментарии, постараюсь помочь.

ѕоказать полностью 5
366

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников („асть 5)

ѕредыдущие части: 1, 1.1(она же 4), 2, 3


≈сли вы вдохновились моими стать€ми и сделали всЄ, как написано, то у вас уже есть:

1. —ервер, расположенный где-то в дебр€х ≈вропы.

2. Ќа сервере настроен вход SSH по сертификату и файрвол.

3. Ќа сервер установлен VPN-сервер, сгенерирован ворох сертификатов дл€ сервера и клиентов.

4. ¬аши устройства (компьютеры, смартфоны, планшеты и т.п.) настроены на соединение с VPN-сервером.


“еперь ваш трафик по территории собственной страны идет только в зашифрованном виде, а доступ к ключам шифровани€ только у вас.


 азалось бы, живи и радуйс€. Ќо не всЄ так просто. ¬аше клиентское устройство, напр€мую или косвенно, продолжает многое сообщать о вас: тип устройства, операционна€ система, внутренний IP адрес, и пр. “ак происходит, потому что VPN-ервер не модифицирует полученные от вас пакеты, он просто их расшифровывает и отправл€ет в сеть.


’ватит это терпеть! ћы запилим свой прокси-сервер с анонимностью и прозрачностью.

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников („асть 5) »нструкци€, VPN, Openvpn, ѕрокси, Vps, 3proxy, Squid, Ќастройка, ƒлиннопост

»з статьи в википедии:

Proxy server (ѕрокси сервер) Ц промежуточный компьютер, который €вл€етс€ посредником между вашим компьютером и »нтернетом. ѕрокси обычно используют либо дл€ ускорени€ работы в сети »нтернет, либо дл€ анонимного прохождени€ в сети »нтернет. “ак же использование анонимного прокси, может быть использовано, как дополнительное средство защиты: анонимный прокси (anonymous proxy) подмен€ет ¬аш IP-адрес, и злоумышленник будет пытатьс€ совершить атаку не на ¬аш компьютер, а на прокси сервер, у которого, зачастую, максимально мощна€ система защиты.

“ам ещЄ есть интересное в статье, почитайте.


Ќас интересует умение прокси подмен€ть отправител€ пакетов и обрезать из них всЄ лишнее. “.е. повысить нашу анонимность. я уже писал в первой части, что 100% анонимности мы не добьЄмс€, но двигатьс€ в этом направлении мы будем.


≈сть over9000 реализаций прокси. »значально € хотел использовать squid в св€зке с squidguard + adblock, но с кальмаром возникли проблемы. ¬ разных верси€х дистрибутивов он вЄл себ€ по-разному с протоколом https, да и вообще последние его редакции какие-то не удачные. ѕоскольку данна€ стать€ рассчитана на не квалифицированного читател€, то перегружать еЄ всеми возможными костыл€ми дл€ squid € посчитал не целесообразным. ѕоэтому, после недолгих исканий, был выбран 3proxy. ¬ дальнейшем € всЄ-таки запили статью про squid.


» да, как вы наверн€ка помните, наш файрволл настроен таким образом, что прокси будет принимать подключени€ только от клиентов VPN-сети.


ѕока мы еще не сделали анонимный прокси, попробуйте позаходить на сайты, показывающие степень вашей анонимности. Ќапример:


https://do-know.com/privacy-test.html

https://whoer.net/ru

https://2ip.ru/privacy/

http://witch.valdikss.org.ru/

и прочие. “ыс€чи их. ѕотом сравните с тем, что будет после настройки прокси.


’ватит читать, открываем консоль. Ѕудем отращивать бороду собирать наш прокси из исходников.

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников („асть 5) »нструкци€, VPN, Openvpn, ѕрокси, Vps, 3proxy, Squid, Ќастройка, ƒлиннопост

”становим компил€тор

yum -y install gcc

ѕерейдЄм в домашнюю папку

cd ~

Ѕыстренько посмотрим, кака€ верси€ 3proxy сейчась актуальна на странице загрузок https://www.3proxy.ru/download/

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников („асть 5) »нструкци€, VPN, Openvpn, ѕрокси, Vps, 3proxy, Squid, Ќастройка, ƒлиннопост

Ќа момент написани€ статьи это была верси€ 0.8.9

 ачаем еЄ

wget https://github.com/z3APA3A/3proxy/archive/0.8.9.tar.gz

–аспаковываем

tar -xvzf 0.8.9.tar.gz

» переходим в папку с исходниками

cd 3proxy-0.8.9

¬ опци€х исходников делает наш сервер полностью анонимным.

sed -i '1s/^/#define ANONYMOUS 1\n/' ./src/proxy.h

 омпилируем (ќ да! “еперь вы можете хвастатьс€, что в линуксе компилировали из сырцов. „увствуете, как на вашем лице начинает пробиватьс€ борода, на спине прорастать свитер?)

make -f Makefile.Linux

ѕодготовим рабочее место дл€ нашего прокси

mkdir -p /etc/3proxy/bin
touch /etc/3proxy/3proxy.pid

“еперь перенесем скомпилированные исполн€емые файлы в рабочую папку

cp ./src/3proxy /etc/3proxy/bin
cp ./src/TransparentPlugin.ld.so /etc/3proxy/bin
cp ./cfg/3proxy.cfg.sample /etc/3proxy/3proxy.cfg

¬ папке /etc/rc.d/init.d

создаем файл 3proxy следующего содержани€

#!/bin/sh
#
# chkconfig: 2345 20 80
# description: 3proxy tiny proxy server
#
#
#
#
case "$1" in
start)
echo Starting 3Proxy
/etc/3proxy/bin/3proxy /etc/3proxy/3proxy.cfg
RETVAL=$?
echo
[ $RETVAL ]
;;
stop)
echo Stopping 3Proxy
if [ /etc/3proxy/3proxy.pid ]; then
/bin/kill `cat /etc/3proxy/3proxy.pid`
else
/usr/bin/killall 3proxy
fi
RETVAL=$?
echo
[ $RETVAL ]
;;
restart|reload)
echo Reloading 3Proxy
if [ /etc/3proxy/3proxy.pid ]; then
/bin/kill -s USR1 `cat /etc/3proxy/3proxy.pid`
else
/usr/bin/killall -s USR1 3proxy
fi
;;
*)
echo Usage: $0 "{start|stop|restart}"
exit 1
esac
exit 0

—охран€ем и устанавливаем права 0755.   сожалению формат пикабу не позвол€ет разместить тексты скриптов с нормальным форматированием. ћожете посмотреть, как он выгл€дит в нормальном виде здесь. Ќо и без форматировани€ работать будет.

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников („асть 5) »нструкци€, VPN, Openvpn, ѕрокси, Vps, 3proxy, Squid, Ќастройка, ƒлиннопост

“еперь откроем файл /etc/3proxy/3proxy.cfg

”далите всЄ его содержимое и вставьте следующее:

daemon
pidfile /etc/3proxy/3proxy.pid
plugin /etc/3proxy/bin/TransparentPlugin.ld.so transparent_plugin
nserver 8.8.8.8
nserver 8.8.4.4
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
#log /dev/null
log /etc/3proxy/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
external 123.123.123.123
internal 10.8.0.1
auth none
maxconn 64
allow *
parent 1000 http 0.0.0.0 0
allow *
parent 1000 socks5 0.0.0.0 0
tcppm -i10.8.0.1 8080 127.0.0.1 11111

«десь, в строчке

external 123.123.123.123

место 123.123.123.123 вписываем IP адрес вашего сервера.


—охраним и закроем.

ѕрокси-сервер готов к запуску. «апустим его

service 3proxy start
’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников („асть 5) »нструкци€, VPN, Openvpn, ѕрокси, Vps, 3proxy, Squid, Ќастройка, ƒлиннопост

ќтлично, прокси запустилс€.


≈сли пишет ошибки, смотрим, что написано в консоли, что написано в /etc/3proxy/3proxy.log.[дата и врем€ лога]


≈сли вы всЄ сделали в точности, как написано выше, ошибок быть не должно.


“еперь нам нужно поправить правила дл€ iptables. „тобы не настраивать прокси-сервер на всех клиентских устройствах (на смартфонах это зачастую попросту невозможно без рут-прав), мы сделаем наш прокси-сервер прозрачным. “.е. дл€ клиентов он будет не виден. ќднако весь трафик, приход€щий по VPN будет заворачиватьс€ на прокси-сервер, а уже потом отправл€тьс€ в открытую сеть.


ќткрываем ‘айл /root/ipt-set и аккуратно вносим следующие исправлени€:

Ќаходим строчку:

SQUID_PORT=»8080″

и исправл€ем на

PROXI_PORT=»8080″

Ќаходим строчки

# squid
$IPT -A INPUT -i $IF_OVPN -p tcp Чdport $SQUID_PORT -j ACCEPT
$IPT -A INPUT -i $IF_OVPN -p udp Чdport $SQUID_PORT -j ACCEPT

и исправл€ем на

# proxi
$IPT -A INPUT -i $IF_OVPN -p tcp Чdport $PROXI_PORT -j ACCEPT
$IPT -A INPUT -i $IF_OVPN -p udp Чdport $PROXI_PORT -j ACCEPT

» сразу, после этих строчек добавл€ем ещЄ две:

$IPT -t nat -A PREROUTING -i $IF_OVPN -p tcp -m tcp Чdport 80 -j DNAT Чto-destination 10.8.0.1:$PROXI_PORT
$IPT -t nat -A PREROUTING -i $IF_OVPN -p tcp -m tcp Чdport 443 -j DNAT Чto-destination 10.8.0.1:$PROXI_PORT

—охран€ем и закрываем файл.

ѕриведу, на вс€кий случай, файл /root/ipt-set полностью:

#!/bin/sh
IF_EXT="venet0"
IF_OVPN="tun0"
OVPN_PORT="443"
PROXI_PORT="8080"
IPT="/sbin/iptables"
IPT6="/sbin/ip6tables"
# flush
$IPT --flush
$IPT -t nat --flush
$IPT -t mangle --flush
$IPT -X
$IPT6 --flush
# loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
# default
$IPT -P INPUT DROP
$IPT -P OUTPUT DROP
$IPT -P FORWARD DROP
$IPT6 -P INPUT DROP
$IPT6 -P OUTPUT DROP
$IPT6 -P FORWARD DROP
# allow forwarding
echo 1 > /proc/sys/net/ipv4/ip_forward
# NAT
# #########################################
# SNAT - local users to out internet
$IPT -t nat -A POSTROUTING -o $IF_EXT -j MASQUERADE
# INPUT chain
# #########################################
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# ssh
$IPT -A INPUT -i $IF_EXT -p tcp --dport 22 -j ACCEPT
# VPN
$IPT -A INPUT -i $IF_OVPN -p icmp -s 10.8.0.0/24 -j ACCEPT
# DNS
$IPT -A INPUT -i $IF_OVPN -p udp --dport 53 -s 10.8.0.0/24 -j ACCEPT
# openvpn
$IPT -A INPUT -i $IF_EXT -p udp --dport $OVPN_PORT -j ACCEPT
# proxi
$IPT -A INPUT -i $IF_OVPN -p tcp --dport $PROXI_PORT -j ACCEPT
$IPT -A INPUT -i $IF_OVPN -p udp --dport $PROXI_PORT -j ACCEPT
$IPT -t nat -A PREROUTING -i $IF_OVPN -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.8.0.1:$PROXI_PORT
$IPT -t nat -A PREROUTING -i $IF_OVPN -p tcp -m tcp --dport 443 -j DNAT --to-destination 10.8.0.1:$PROXI_PORT
# FORWARD chain
# #########################################
$IPT -A FORWARD -i $IF_OVPN -o $IF_EXT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -i $IF_EXT -o $IF_OVPN -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -s 10.8.0.0/24 -d 10.8.0.0/24 -j ACCEPT
# OUTPUT chain
# #########################################
$IPT -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

“еперь весь трафик из VPN дл€ портов 80 и 443 (т.е. http и https) будет перенаправлен на наш прокси.


ѕрименим правила командой:

/root/ipt-set

≈сли вы пр€мо сейчас подключены к VPN-серверу, то уже можете заходить на разные сайты и провер€ть, что всЄ работает. «айдите на один-два любых сайта, убедитесь, что они открываютс€. “еперь посмотрите в файл лога /etc/3proxy/3proxy.log.[дата и врем€ лога]


¬ нем вы должны увидеть свою активность. ≈сли всЄ работает, то остановим наш прокси:

service 3proxy stop

ќткроем его конфиг /etc/3proxy/3proxy.cfg и строчки:

#log /dev/null
log /etc/3proxy/3proxy.log D
logformat «- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T»

превратим в:

log /dev/null
#log /etc/3proxy/3proxy.log D
#logformat «- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T»

“еперь прокси-сервер не будет писать логи и сохран€ть историю посещений сайтов. —разу удалим уже имеющийс€ лог /etc/3proxy/3proxy.log.[дата и врем€ лога]


» запустим прокси:

service 3proxy start

» добавим его в автозагрузку:

/sbin/chkconfig 3proxy on

»так, что мы имеем после выполнени€ всех инструкций:

1. јрендован и настроен VPS. ¬ход по сертификату.

2. ”становлен и настроен личный VPN-сервер и, в нагрузку, свой удостовер€ющий уентр.

3. Ќастроены клиенты VPN-сети.

4. ”становлен и настроен анонимный, прозрачный прокси-сервер.


¬ следующих стать€х мы добавим еще немного анонимности нашему серверу и вообще поговорим за личную информационную безопасность во всемирной паутине. Ќе переключайтесь.

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников („асть 5) »нструкци€, VPN, Openvpn, ѕрокси, Vps, 3proxy, Squid, Ќастройка, ƒлиннопост
ѕоказать полностью 6
2719

ѕро законодательный запрет VPN и анонимайзеров + ответы на вопросы про личный VPN

«а сегодн€ новость о очередном дебильном законопроекте успела стать ба€ном. Ќе буду расписывать, сами почитаете.


„то мы должны вынести из неЄ дл€ себ€:

1. –оскомнадзор последователен в своей некомпетентности. Ёто уже привело к весьма комичным/трагичным последстви€м. Ёто хорошо, всЄ ближе тот момент, когда сизифов труд станет дл€ –оскомнадзора неподъЄмным.

2. Ѕлокировка/склонение к сотрудничеству VPN-провайдеров и анонимайзеров в очередной раз показывает, что не стоит довер€тьс€ сервисам, которые вы не контролируете. ќни или сливают информацию о вас, или будут сливать.

3. —вои криптографические ключи создавать и хранить нужно самосто€тельно.


VPN - это не волшебное слово, а очень проста€ и нужна€ технологи€. ѕоскольку всЄ уже давно катитс€ в сраное говно шло к тому, что такой законопроект по€витс€, € и начал идти по пути просвещени€ народных масс в вопросе создани€ личных VPN. я хочу вынести эту тему со страниц профессиональных ресурсов в повседневный быт. Ўифрование трафика должно стать столь же обыденным, как стиральные машинки, утюги и пр. „итайте мои статьи, пробуйте. Ёто действительно просто, дЄшево, доступно всем. ƒаже если вы гуманитарий.


“еперь про вопросы (и замечани€). я обобщил их и отвечу разом всем:


«амечание: ѕредложенное решение не обеспечивает анонимности

ќтвет: предложенное решение не защити вас от ответственности если вы продаЄте наркотики/оружие, публикуете детское порно и пр. Ќе в этом цель. ÷ель:

- помешать провайдерам интернета модифицировать трафик. “.е. не дать им технически заблокировать посещение сайта, вставить свою рекламу и пр.;

- сделать так, чтобы в —ќ–ћ и аналогичных системах хранилс€ только зашифрованный хлам. Ёто покажет их бесполезность и скомпрометирует тех, что прин€л решение о колоссальных затратах на такие системы;

- помешать рекламным сет€м собирать информацию о пользовател€х сайта. Ќет, совсем мы от них не избавимс€, но работать в этом направлении можно и нужно.

¬сЄ! »менно это € вкладываю в пон€тие "анонимность" в рамках моих статей. я не пишу инструкцию дл€ преступников.


¬опрос: нах.€ така€ геморойна€ настройка?

ќтвет: я рад вашей эрудированности. ƒействительно, есть много способов поставить VPN очень быстро. Ќо если вы это знаете, зачем вам мо€ стать€? ѕоймите цель статьи не столько VPN сервер, сколько понимание процессов. ќткуда берутс€ ключи, дл€ чего они, как примен€ютс€, что написано в конфиге, зачем нужен прокси и пр. ≈сли вы будете настаивать, чтобы ребЄнок мыл руки с мылом но не расскажете про микробов, не покажете живые примеры их воздействий, он не будет мыть руки с мылом. ћо€ идеалистическа€ цель: все должны знать про шифрование и VPN и пользоватьс€ ими.



«амечание: Ќа андроиде/IOS нужен рут дл€ OpenVPN. Ѕез него не настроить маршрутизацию.

ќтвет: Ќет, не нужен. Ќастройка маршрутизации выполн€етс€ в конфиге сервера.


«амечание: ћожно использовать opera vpn/сжатие трафика yandex-браузера и chrome/иные готовые решени€, где не нужно думать.

ќтвет: ѕовторюсь, не стоит довер€тьс€ сервисам, которые вы не контролируете. ќни или сливают информацию о вас, или будут сливать. —вои криптографические ключи создавать и хранить нужно самосто€тельно.

ѕоказать полностью
801

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 3)

ѕосле публикации второй части, число подписчиков утроилось. Ёто хорошо, чем раньше мы все перейдем на личные VPN, тем раньше (€ наивно надеюсь), наши законотворцы осознают своЄ бессилие в борьбе с »нтернетом.


„асть1


„асть2


Ќастало врем€ подключить к VPN серверу наш смартфон (или любое другое устройство).


 ак вы заметили выше, клиенту нужно отдать файл конфигурации .ovpn и четыре ключа к нему. ¬сего п€ть файлов. Ёто не удобно. ѕоэтому мы сделаем проще, мы «засунем» ключи в файл конфигурации клиента.


—оздавать файл мы будем на компьютере. ћожете создать его р€дом с уже имеющимс€ файлом (в нашем примере это test_pc.ovpn), заодно сразу проверим, что он работает.


»так создаем файл с произвольным названием и расширением .ovpn. я сделаю файл test_smart.ovpn

—одержимое файла

client
dev tun
proto udp
remote 123.123.123.123 443
resolv-retry infinite
nobind
block-outside-dns
persist-key
persist-tun
mute-replay-warnings
remote-cert-eku "TLS Web Server Authentication"
remote-cert-tls server
tls-client
auth SHA512
key-direction 1
<tls-auth>
</tls-auth>
<ca>
</ca>


<cert>
</cert>
<key>
</key>
cipher AES-256-CBC
comp-lzo
verb 3

«десь вместо 123.123.123.123 вставьте IP-адрес вашего VPN-сервера.

ќбратите внимание, что у нас ушли строчки с указанием имени файлов ключей, но добавились секции вида <ca> </ca>. ¬от в эти секции мы и будем добавл€ть ключи. ƒл€ этого в WinCSP, в левой панели найдем поочередно необходимые файлы (ca.crt, ta.key, test_smart.key, test_smart.crt) и откроем их. ¬ каждом файле будет запись вида (на примере ca.crt):

-----BEGIN CERTIFICATE-----

MIIFNTCCAx2gAwIBAgIJAJaBlANf4UOFMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV

BAMTC0Vhc3ktUlNBIENBMB4XDTE3MDYwMTA5NTA0MVoXDTI3MDUzMDA5NTA0MVow

FjEUMBIGA1UEAxMLRWFzeS1SU0EgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw

SirEaEdDwXsnV1o/xV7N3F6C8Hb5qpg8BKAWGrK9ABPnByABd2kRxxDbnWl42qjF

TlzUPR90pyv0+2h9V1mGD6t8lbcJO0kJEHgqG7L95QYGPq8WEaSju9EMsHL3Jsc6

2VSVrfA+4SJwUmY7R53nLaRVY3m9qy2erVWDjnylNk17TGSs5MfZDf1ZOq6ec78M

USBEo7W/Pa564jtwm8xqusI/jleFKZTXbJdq33Fmakn5caxEDiEBPUxb1c/VgAP/

lSAot8w57BaWB9jSxDCMxv9YOOLpMvMX45OMOEwwbztt9dY3PAiTZVWtijXziiUd

-----END CERTIFICATE-----

ћы должны скопировать эту запись и вставить еЄ в соответствующую секцию нашего ovpn файла. ѕолучитс€ как-то так:

<tls-auth>
-----BEGIN OpenVPN Static key V1-----
0b9b161b4494f29b1684a7cf3acf5ef8
38b5d9ae30c000f28d6fe0185058e6a6
170fe69d48d2705441ac467b7896aa5e
9298c21d680c67c7b8bfb2adf2c8250e
886954d66b8037be62269eeb0f554b9d
5285ed47136703030d5e5b8c7b712212
-----END OpenVPN Static key V1-----
</tls-auth>


<ca>
-----BEGIN CERTIFICATE-----
MIIFNTCCAx2gAwIBAgIJAJaBlANf4UOFMA0GCSqGSIb3DQEBCwUAMBYxFDASBgNV
BAMTC0Vhc3ktUlNBIENBMB4XDTE3MDYwMTA5NTA0MVoXDTI3MDUzMDA5NTA0MVow
FjEUMBIGA1UEAxMLRWFzeS1SU0EgQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAw
SirEaEdDwXsnV1o/xV7N3F6C8Hb5qpg8BKAWGrK9ABPnByABd2kRxxDbnWl42qjF
TlzUPR90pyv0+2h9V1mGD6t8lbcJO0kJEHgqG7L95QYGPq8WEaSju9EMsHL3Jsc6
2VSVrfA+4SJwUmY7R53nLaRVY3m9qy2erVWDjnylNk17TGSs5MfZDf1ZOq6ec78M
USBEo7W/Pa564jtwm8xqusI/jleFKZTXbJdq33Fmakn5caxEDiEBPUxb1c/VgAP/
lSAot8w57BaWB9jSxDCMxv9YOOLpMvMX45OMOEwwbztt9dY3PAiTZVWtijXziiUd
-----END CERTIFICATE-----
</ca>


<cert>
-----BEGIN CERTIFICATE-----
MIIFPjCCAyagAwIBAgIBAzANBgkqhkiG9w0BAQsFADAWMRQwEgYDVQQDEwtFYXN5
LVJTQSBDQTAeFw0xNzA2MDExMTI0MjlaFw0yNzA1MzAxMTI0MjlaMBUxEzARBgNV
BAMUCnRlc3Rfc21hcnQwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCs
/ULqWUKxtzlgkkWviE2WatSxOOqhL4zNoTbYgyyuzrsRVIrfWX8GdtjXlEQ2L7zx
tMzVTUuta4tj+9/MoZjre68ncyaNzaxXSeiR/CVczT4juz9a9Iws1Zwx9XFev+wQ
RVE=
-----END CERTIFICATE-----
</cert><key>
-----BEGIN PRIVATE KEY-----
MIIJQwIBADANBgkqhkiG9w0BAQEFAASCCS0wggkpAgEAAoICAQCs/ULqWUKxtzlg
kkWviE2WatSxOOqhL4zNoTbYgyyuzrsRVIrfWX8GdtjXlEQ2L7zxtMzVTUuta4tj
+9/MoZjre68ncyaNzaxXSeiR/CVczT4juz9a9Iws1Zwx9XFev+wQyxLWlQxGrj1+
TcJ4zLUeCfiRqtiSxi/gJBLpMjJVdQWOarsbD1f7vGMzekLJGmCPxdnm1HCOOYi+
DzvvhwDG9NL0+8OQSvgur417mQ1UZS5TLtHUgxkkDMybtIT/UR23pGRnWSSuRqvD
/HUmGQwEHk2AjW6nV+dmBfeeP0ZMH1iaii7Iv9Tt2404QW8FStp2aNHexup1gQeP
P2ZvHMdf6MGsd1QT8tFuHKsCsmi/wvTc8BgEiiPbwEHnjuqtElsW4Av6uuKLRUKq
-----END PRIVATE KEY-----
</key>

 оличество строк с абракадаброй в показанной выше записи € уменьшил, у вас их будет больше. Ќе пугайтесь, это норма.

ќбратите внимание на строчку

key-direction 1

ќна об€зательно должна быть перед секцией <tls-auth> </tls-auth>

—охраним файл ovpn и поместим его в папку C:\Program Files\OpenVPN\config\

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 3) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

“еперь, если щелкнуть по значку OpenVPN в трее, увидим еще одну строчку

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 3) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

и пробуем подключитьс€. ¬се должно быть хорошо. ≈сли подключение зависло, попробуйте нажать кнопку «ѕереподключитьс€» в окне с логом подключени€. ≈сли всЄ равно зависает, значит вы накос€чили в файле ovpn. ѕровер€йте.

ѕосле проверки можете убрать файл из папки C:\Program Files\OpenVPN\config\


“еперь на своем устройстве устанавливаем клиент OpenVPN Connect. ќни есть и дл€ Android (https://play.google.com/store/apps/details?id=net.openvpn.openvpn&hl=ru) и дл€ IOS (https://itunes.apple.com/ru/app/openvpn-connect/id590379981?mt=8). » у той, и у той функционал убог, но у обоих есть функци€ Import profile, а большего нам и не нужно.

„тобы передать файл конфигурации на устройство, отправим его сами себе на тот e-mail, к которому у вас есть доступ с этого устройства. ќткрываем на устройстве это письмо и сохран€ем файл .ovpn в любое удобное место. √лавное не забыть Ц куда.


ћожно передать конечно и другим способом. Ќапример, через любой облачный ресурс (Google Drive, iTunes, Hubic, Yandex Disk и пр.). “ут как вам удобнее.

Ќа андроиде:

ћожно попробовать просто открыть файл .ovpn. ¬ большинстве случаев сразу откроетс€ приложение OpenVPN Connect. ѕо€витс€ запрос, нужно ли установить файл .ovpn. ѕодтвердите данное действие.


≈сли так не получилось, то запускаем OpenVPN Connect

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 3) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

¬ыбираем Import -> Import Profile from SD card

Ќаходим наш .ovpn файл, становимс€ на него и жмЄм SELECT

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 3) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

Ќу и жмем Connect

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 3) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост
’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 3) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

¬ строке статуса, вверху, по€витс€ ключик. ¬сЄ, ваше устройство теперь подключено к интернету через VPN-сервер.

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 3) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

ƒл€ iPhone / iPad


¬сЄ очень похоже.


“акже передаем на устройство файл .ovpn любым удобным способом (см. выше).


ѕри попытке открыть файл .ovpn на смартфоне / планшете iOS сразу откроетс€ приложение OpenVPN Connect. ѕо€витс€ запрос, нужно ли установить файл .ovpn. Ќажмите кнопку У+Ф и установите файл .ovpn.


“еперь запустите OpenVPN Connect, выберите импортированный файл и нажмите по переключателю УOffФ. ѕо€витс€ статус «Connected».


¬верху, в строке состо€ни€ по€витс€ пиктограмма VPN.


“еперь можно (и нужно) удалить файл .ovpn из того места, куда вы его сохран€ли при переносе на устройство.

¬ј∆Ќќ:

ѕосле импортировани€ файла .ovpn в OpenVPN Connect файл записан в хранилище программы. “еперь можно (и нужно) удалить файл .ovpn из того места, куда вы его сохран€ли при переносе на устройство. » письмо с этим файлом, если переносили через почту. » из облака (если переносили через облако). » из корзины. ќтовсюду!

ƒомашнее задание дл€ подписчиков:

1. нагенерируйте сертификов дл€ всех своих гаджетов;

2. сделайте .ovpn файлы и подключите гаджеты к VPN серверу.

≈сли будут трудности, спрашивайте в комментари€х.

ѕоказать полностью 7
208

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2)

ѕерва€ часть статьи особого ажиотажа не вызвала, но после неЄ на мен€ подписалась 10 человек, а значит они ждут продолжени€. 10 человек, это не мало. ѕоэтому продолжаем.


ѕерва€ часть.


ћы выполнили необходимый минимум подготовительных работ, наш сервер неплохо защищен от злонамеренных воздействий. “еперь пора сделать, дл€ чего мы всЄ это затевали.

Ќемного теории, дл€ понимани€ того, что мы сечас будем делать. VPN (Virtual Private Network) Ч виртуальна€ частна€ сеть. »де€ в том, что мы строим свою сеть «поверх» других сетей.


ƒопустим вы решили зайти на запрещенный ресурс (да на любой ресурс).  акой маршрут вашего интернет трафика? ¬ большинстве случаев схема така€:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

Ѕезусловно, это очень упрощенна€ схема. Ќо дл€ понимани€ процесса достаточна.  ак видите, у провайдера есть некий-фильтр, который «просматривает» весь ваш трафик и принимает решени€, пропустить или нет (настучать на вас или нет :) ). ‘актически ваша точка выхода в интернет Ц это внешние маршрутизаторы вашего провайдера. »менно тут принимаетс€ решение, увидите вы тот или иной ресурс или нет.

„то сейчас сделаем мы, запустив наш трафик через интернет:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

Ќа наших личных устройствах (компьютер, смартфон, планшет и т.д.) будут установлены и настроены программы-клиенты дл€ VPN сервера. Ќа нашем VPS будет установлена и настроена программа-сервер VPN.  ак только они соедин€тс€ между собой, по€вл€етс€ наш виртуальный зашифрованный канал поверх всех остальных каналов (красна€ пунктирна€ лини€ на рисунке). “еперь никто не знает, что содержитс€ в трафике между нашими устройствами и нашим VPN сервером, весь трафик надЄжно зашифрован. ‘актически, теперь наша точка выхода в интернет Ц это наш VPS. »менно его IP-адрес будут видеть все те »нтернет-ресурсы, на которые мы будем заходить. “еперь никакой товарищ майор не узнает, какие видосики вы смотрите, на какие сайты вы ходите и какие сообщени€ на форумах пишете. ƒа, если получить доступ к вашему VPS, можно узнать содержимое вашего трафика. Ќо ведь наш VPS в другой стране, надавить авторитетом на хостера не получитс€, у него пердставительств и имущества на территории нашей страны и нашего товарища майора пошлют. Ќужно затевать полноценное расследование, привлекать международные соглашени€, »нтерпол, направл€ть обоснованный (причем обоснованный с точки зрени€ законодательства страны хостера) запрос. ¬ общем, если вы не натворите чего-нибудь совсем плохого, никто ничего и не получит. ≈динственное, что от вас требуетс€: аккуратное обращение с ключами и парол€ми. ¬ернЄмс€ к этому вопросу позже.


’ватит теории, переходим к практике.


” вас уже запущены и соединены с сервером PuTTY и WinCSP. ѕереходим к консоли PuTTY и выполн€ем следующие команды:

yum install wget -y
yum install unzip zip -y
yum install openvpn -y

—оздадим папку дл€ ключей установим еЄ текущей. ƒл€ это выполним в консоли команды:

mkdir /etc/openvpn/keys
cd /etc/openvpn/keys

ƒл€ генерации ключей мы используем утилиту Easy-RSA. ƒл€ начала скачем еЄ себе:

wget https://github.com/OpenVPN/easy-rsa/archive/master.zip

–аспакуем:

unzip master.zip

—оздадим файл с настройками из приложенного образца:

cp vars.example vars

ѕерейдем в папку с утилитой:

cd /etc/openvpn/keys/easy-rsa-master/easyrsa3

—вернЄм пока консоль и развернЄм WinCSP. ѕерейдЄм в папку /etc/openvpn/keys/easy-rsa-master/easyrsa3.


ѕримечание: если в правой панели WinCSP вы вдруг не видите каких-либо файлов или папок, которые там должны быть, нажмите кнопку обновлени€:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

Ќаходим и открываем файл vars. Ќаходим строчки


#set_var EASYRSA_REQ_COUNTRY "US"

#set_var EASYRSA_REQ_PROVINCE "California"

#set_var EASYRSA_REQ_CITY "San Francisco"

#set_var EASYRSA_REQ_ORG "Copyleft Certificate Co"

#set_var EASYRSA_REQ_EMAIL "me@example.net"

#set_var EASYRSA_REQ_OU "My Organizational Unit"


и убираем в начале каждой символ #

“еперь можно включить фантазию и изменить под себ€ значени€ в кавычках. Ќапример:


set_var EASYRSA_REQ_COUNTRY "RU"

set_var EASYRSA_REQ_PROVINCE "Moscow"

set_var EASYRSA_REQ_CITY "Moscow"

set_var EASYRSA_REQ_ORG "RosComNadzor"

set_var EASYRSA_REQ_EMAIL "admin@rkn.ru"

set_var EASYRSA_REQ_OU "Otdel besnennogo printera"


Ёти параметры об€зательны при генерации ключа, но, в нашем случае, ни на что не вли€ют. ƒалее находим и приводим к указанному виду следующие параметры:

—трочку


#set_var EASYRSA_KEY_SIZE 2048


превращаем в:


set_var EASYRSA_KEY_SIZE 4096


—трочку


#set_var EASYRSA_DIGEST "sha256"


превращаем в:


set_var EASYRSA_DIGEST "sha512"


¬ этом файле можно еще много чего поправить, например, срок действи€ ключа. Ќо мы не будем этого делать. ѕерегенерировать ключ раз 180 дней Ц не так уж и сложно. «акрываем файл с сохранением.


¬озвращаемс€ к консоли PuTTY. —оздаем инфраструктуру публичных ключей (PKI, Public Key Infrastructure). ¬ыполним команду:


./easyrsa init-pki
’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

Easy-RSA отвечает нам, что создан каталог /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/

Ќе буду расписывать, что такое PKI. ѕро это есть отлична€ статьс€ с картинками в ¬икипедии.

Ќам важно знать, что ключи создаютс€ парами Ц закрытый и открытый. ƒл€ обмена с кем-то защищаемой информацией мы обмениваемс€ открытыми ключами. ¬ данном случае у сервера будет свой закрытый ключ и открытые ключи клиентов. ” клиентов свои закрытые ключи и открытый ключ сервера. ј удостовер€ть подлинность ключей, будет созданный нами же удостовер€ющий центр. ≈го корневой сертификат будет у всех участников обмена.


—оздадим свой удостовер€ющий центр (—ј). ѕо-хорошему, его бы надо создавать не здесь, а на какой-то отдельной машине и, в идеале, не подключенной к интернету. Ќо, в нашем частном случае, это чрезмерна€ параной€. Ќе будем забывать, что наша задача просто выйти из-под регулировани€ законодательства своей страны. ≈сли кто-то получит возможность покопатьс€ в нашем сервере, он и так всЄ узнает. ѕоэтому не будем усложн€ть.


¬ыполним команду:

./easyrsa build-ca

Ќас прос€т придумать пароль:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

ƒа-да, оп€ть пароль. “ребовани€ к сложности примерно такие же, как и дл€ парол€ ключа SSH. «ачем этот пароль: если корневой сертификат вашего удостовер€ющего центра попадЄт в чужие руки, то любой сможет сгенерировать пользовательские сертификаты и подключитьс€ к вашему VPN-серверу. ѕоэтому вы должны беречь от разглашени€ и закрытый ключ корневого сертификата (файл ca.key), и пароль к нему. «абывать этот пароль также не стоит. ¬осстановить его нельз€ и придетс€ заново создавать корневой сертификат и все пользовательские сертификаты. Ќе смертельно, но не при€тно. ¬ общем придумываем и вводим пароль. Ќас попрос€т ввести его два раза. Ќа следующий вопрос:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

просто жмЄм Enter (также будем поступать дл€ всех остальных ключей). ” нас по€вились файлы ca.crt (корневой сертификат. ќн открытый, мы его будем передавать клиентам)

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

и ca.key (закрытый ключ удостовер€ющего центра, его нужно беречь от разглашени€. Ёто сама€ ценна€ дл€ вас вещь на вашем сервере).

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

“еперь создадим пару (открытый, закрытый) ключей дл€ нашего VPN-сервера. «акрытый ключ сервера мы не будем защищать паролем, так как вводить этот пароль пришлось бы при каждой перезагрузке сервера. —оздаЄм запрос на сертификат:

./easyrsa gen-req server nopass

Ќа запрос ввести Common Name просто жмЄм Enter.

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

 ак видите, на выходе у нас два файла: server.key Ц это закрытый ключ сервера; server.req Ц это запрос нашему CA на удостоверение (подписывание) сертификата. —кормим запрос нашему CA:

./easyrsa sign-req server server

CA просит подтвердить, что мы в своЄм уме и действительно хотим подписать сертификат. ”бедим его в этом: наберЄм yes и нажмЄм Enter.

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

“еперь введЄм пароль от нашего закрытого ключа CA

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

» вот CA создал подписанный открытый ключ нашего сервера /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/issued/server.crt

ј теперь мы сделаем очень нужную штуку. ћы создадим ключ ƒиффи-’елмана. Ётот ключ защитит наш трафик от расшифровки даже в случае похищени€ ключей сервера и клиентов. “.е. если товарищ майор записывал весь ваш шифрованный трафик, скрип€ зубами от досады, что не может пон€ть, что ж такое вы делаете. ј потом он вдруг заполучит все ваши ключи, то он всЄ равно не сможет расшифровать тот трафик, который у него записан. ¬от така€ вот маги€ математики. Ѕерегите математиков, они умные и защищают нас от товарища майора.

¬водим в консоли команду:

./easyrsa gen-dh

и идЄм пить чай ибо процесс это не быстрый. ј учитыва€, что процессор у VPS весьма слабенький, генераци€ может зан€ть до 15 минут (а может и больше). ¬ общем ждите, маги€ быстро не делаетс€.

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

 огда генераци€ завершитс€, мы получим файлик /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/dh.pem

≈ще мы сделаем список отозванных сертификатов. ќн нам пригодитс€, чтобы сделать недействительными какие-либо клиентские ключи. Ќапример, при утере смартфона с настроенным VPN-клиентом.

¬ыполним команду:

./easyrsa gen-crl

» получим файл /etc/openvpn/keys/easy-rsa-master/easyrsa3/pki/crl.pem. ¬ нЄм и будет список отозванных сертификатов. ќтзывать сертификаты мы потренируемс€ позже, пока оставим так.


“еперь подкинем VPN-серверу все необходимые ключи. ƒл€ этого выполним несколько команд:

cp pki/ca.crt /etc/openvpn/
cp pki/dh.pem /etc/openvpn/
cp pki/crl.pem /etc/openvpn/
cp pki/issued/server.crt /etc/openvpn/
cp pki/private/server.key /etc/openvpn/

ѕолучитс€ вот так:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

» сделаем текущей папку VPN-сервера:

cd /etc/openvpn

≈ще не много магии дл€ усилени€ безопасности. —делаем HMAC (ищите описание на ’абре и в ¬икипедии). ¬ыполним команду:

openvpn --genkey --secret ta.key

–€дом с нашими ключами в папке /etc/openvpn будет создан файл ta.key. ≈го мы также будем отдавать клиентам.

“еперь с помощью WinCSP поправим права на файлы: ca.crt, crl.pem, dh.pem, server.crt. —делаем дл€ всех 0644.

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

ј дл€ файлов server.key, ta.key установим права 0600 (по-идее они сразу такие и есть, но на вс€кий случай проверьте).


¬ принципе VPN-сервер можно уже сконфигурировать и запускать, но нам пока нечем к нему подключитьс€. ѕоэтому создадим ключи дл€ клиента. ¬ернЄмс€ в папку утилиты Easy-RSA:

cd /etc/openvpn/keys/easy-rsa-master/easyrsa3

ƒл€ создани€ ключа и запроса на подпись используетс€ команда (не спешите вводить, сначала прочитайте то, что ниже):

./easyrsa gen-req client_name nopass

ƒл€ подписани€ запроса и создани€ открытого ключа команда:

./easyrsa sign-req client client_name

¬сЄ также, как и при создании ключей сервера. ≈сли возникнут вопросы, смотри выше, как мы там это делали.


ќбратите внимание на следующее:


- ключ nopass вы можете использовать, а можете не использовать. — ключом nopass вам не потребуетс€ придумывать пароль дл€ закрытого ключа клиента. “огда, при подключении к VPN-серверу, и вводить его не придЄтс€. Ќо в этом случае любой, кто завладеет ключом клиента, сможет подключитьс€ к вашему VPN-серверу. ќднако, вводить каждый раз пароль не удобно. »щите компромисс. Ќапример, на домашнем компьютере ключ без парол€, на рабочем Ц с паролем. ≈сли ваше переносное устройство не имеет дополнительных мер защиты (шифрование накопител€, контроль доступа и пр.) и есть риск потер€ть устройство, или иным образом скомпрометировать Ц сделайте ключ с паролем.


- client_name это произвольное, пон€тное вам название того клиента, который будет им пользоватьс€. Ќапример, дл€ домашнего компьютера можно сделать им€ my_home_pc. “огда команды будут выгл€деть так:

./easyrsa gen-req my_home_pc nopass
./easyrsa sign-req client my_home_pc

ј дл€ своего смартфона сделать ключи с именем my_smartphone и с защитой паролем. “огда команды будут выгл€деть так:

./easyrsa gen-req my_smartphone
./easyrsa sign-req client my_smartphone

¬ общем делайте удобное и пон€тное им€, чтобы не запутатьс€ в ключах.


ƒл€ данной статьи € сделаю тестовые ключи дл€ компьютера и смартфона с именами test_pc и test_smart


—начала покажу как настроить подключение с компьютера. ћы проверим, что наш VPN работает, а потом расскажу, как настроить на смартфоне.


 лиенту нужно будет передать следующие файлы:

- сгенерированную пару ключей клиента (в моЄм случае test_pc.crt и test_pc.key)

- открытый сертификат CA (ca.crt)

- ta.key


Ќикаких других ключей и сертификатов у клиента быть не должно!


Ќу вот, все ключи у нас есть. ƒавайте уже конфигурировать и запускать.

¬ папке /etc/openvpn создадим файл server.conf (если он там уже есть, удалите и создайте заново).  ак создавать файлы, было написано ранее. —одержимое файла будет следующее:


port 443

proto udp

dev tun

ca ca.crt

cert server.crt

key server.key

dh dh.pem

crl-verify crl.pem

server 10.8.0.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway def1"

push "dhcp-option DNS 8.8.8.8"

push "dhcp-option DNS 8.8.4.4"

remote-cert-eku "TLS Web Client Authentication"

keepalive 10 120

tls-server

tls-auth ta.key 0

tls-timeout 120

auth SHA512

cipher AES-256-CBC

comp-lzo

max-clients 10

user nobody

group nobody

persist-key

persist-tun

status openvpn-status.log

log openvpn.log

verb 4


ќписание опций файла выходит за рамки статьи. ќ некоторых опци€х € расскажу ниже, в процессе.


—охраним файл. ѕроверим, чтобы права были 0644.

“еперь пробуем запустить сервер. ¬ консоли команда:

systemctl start openvpn@server

ѕровер€ем, что запустилс€.

—начала посмотрим на состо€ние службы сервера командой:

systemctl status -l openvpn@server

≈сли всЄ хорошо, то это будет выгл€деть вот так:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

Ќо может быть и плохо:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

—мотрим лог (/etc/openvpn/openvpn.log) и видим там, например:


us=64300 ERROR: Cannot open TUN/TAP dev /dev/net/tun: No such file or directory (errno=2)

us=64310 Exiting due to fatal error


“.е. не найден TUN/TAP драйвер. ќб этом € писал в начале статьи. ¬ случае моего текущего хостера это решаетс€ просто. ¬ письме (смотри раздел про аренду VPS), которое содержало IP-адрес сервера и пароль на SSH, была дана ссылка на панель управлени€ сервером и логин-пароль к ней. «аходим в эту панель и видим:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

“ак включим же его. ѕосле включени€ сервер уйдет в перезагрузку, придетс€ закрыть PuTTY и WinCSP, открыть их заново и подключитьс€ к серверу. ¬озможно, в случае другого хостера, дл€ включени€ TUN/TAP вам придетс€ написать в тех.поддержку.

≈ще раз пробуем запустить службу и проверить еЄ состо€ние. ¬сЄ должно стать хорошо. ≈сли не стало, смотрим логи. “ут универсального рецепта нет. Ќапример, может мешать SELinux (это така€ система безопасности Linux). „иним командой:

semanage port -a -t openvpn_port_t -p udp 443

» оп€ть пробуем запустить службу и проверить состо€ние.


≈ще проверим, что служба VPN-сервера слушает нужный порт (у нас 443):

netstat -tulnp | grep 443

≈сли напишет что-то типа: -bash: netstat: command not found, то выполн€ем команду:

yum install net-tools -y

» потом снова:

netstat -tulnp | grep 443

ƒолжно быть так:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

”бедившись, что служба стартует без проблем, добавл€ем еЄ в автозагрузку:

systemctl enable openvpn@server

Ќу и отключим логи. Ќа вс€кий случай ;) ƒл€ этого откроем дл€ редактировани€ файл /etc/openvpn/server.conf и строчку:


log openvpn.log


переделываем в:


log /dev/null


сохран€ем и закрываем. ƒелаем перезапуск службы, чтобы применилс€ новый конфиг:


systemctl restart openvpn@server

» удал€ем файл /etc/openvpn/openvpn.log


Ќет у нас логов, товарищ майор.


ѕришла пора подключитьс€ к нашему серверу. –ечь пойдет о компьютерах под управлением операционной системы семейства Windows. ≈сли у вас Linux, то € не пойму, зачем вы всЄ это читаете.


—качиваем клиента.


» устанавливаем. ¬ процессе убираем галочку с OpenVPN Service

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

ќстальное не трогаем.

ѕосле установки открываем папку C:\Program Files\OpenVPN\config\ и создаем в ней файл client_name.ovpn


¬ данном случае client_name это произвольное им€, можете сделать его совпадающим с именем ключей.

—одержимое файла:


client

dev tun

proto udp

remote 123.123.123.123 443

resolv-retry infinite

nobind

block-outside-dns

persist-key

persist-tun

mute-replay-warnings

remote-cert-eku "TLS Web Server Authentication"

remote-cert-tls server

tls-client

tls-auth "C:\\Program Files\\OpenVPN\\config\\ta.key" 1

auth SHA512

ca "C:\\Program Files\\OpenVPN\\config\\ca.crt"

cert "C:\\Program Files\\OpenVPN\\config\\test_pc.crt"

key "C:\\Program Files\\OpenVPN\\config\\test_pc.key"

cipher AES-256-CBC

comp-lzo

verb 3


¬место 123.123.123.123 вписываем IP-адрес своего сервера. ¬место test_pc.crt, test_pc.key вписываем правильные названи€ своих клиентских ключей. ¬ общем-то ключи совсем не об€зательно должны лежать в папке C:\Program Files\OpenVPN\config\, даже было бы намного лучше, чтобы они здесь не лежали, а находились на флешке и были всегда под контролем. “огда путь выгл€дел бы примерно так:

ca "E:\\my_keys\\ca.crt"


Ќо мы не будем пока мудрить и сделаем так. —охран€ем файл.


ѕри помощи WinCSP скопируем к себе на компьютер все необходимые ключи с сервера:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

» запускаем OpenVPN GUI (кнопка ѕуск -> OpenVPN -> OpenVPN GUI)

“ак как у вас всего один файл .ovpn в папке C:\Program Files\OpenVPN\config\, то соединение должно начатьс€ автоматически. ѕо€витс€ окно с логом соединени€:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

ј как только соединение будет установлено, в трее по€витс€ соответствующий значок зеленого цвета:

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост

ўелкнув правой кнопкой мыши на этом значке, можно увидеть меню управлени€ клиентом (отключитьс€, подключитьс€, настройка).

≈сли значок желтый, то клиент в процессе установление соединени€.

≈сли серый, клиент не подключен к VPN-серверу.


≈сли подключитьс€ не получаетс€, провер€йте настройки файрволла сервера, как это написано выше (в предыдущей части статьи).


ѕровер€ем, что теперь наш видимый в интернете IP-адрес совпадает с IP-адресом сервера. Ќапример, по пройдем по адресу http://myip.ru/ и посмотрим.


¬сЄ, ваша лична€ VPN сеть работает, товарищ майор больше не может отслеживать ваш трафик.

’отим свободы и анонимности в сети или еще раз про свой VPN сервер дл€ чайников (часть 2) »нструкци€, VPN, Openvpn, Vps, јнонимность, ќбход ограничений, ƒлиннопост
ѕоказать полностью 22
1046

—обственный vpn?

—обственный vpn? VPN, Openvpn, ќбход, ќграничени€, ƒлиннопост

Ќачну, пожалуй, с причин, по которым € захотел его. ∆иву € с недавних пор в районе, где проводного интернета нет, а мобильный по LTE представлен только одним оператором. ѕосле переезда € расчехлил свой старый TP-LINK MR 3020, припа€л разъем под антенну wifi и накрутил саму антенну, в usb вставил купленный у друга huawei m150-2 (E3372s). ¬се было замечательно, пока единственный доступный оператор с единственным "безлимитным" тарифом не решил брать 200% сверху за факт "раздачи" интернета. »того - 300%. я такие вещи обычно называю - "о***ли".

Ќа все это наложилось нежелание посто€нно видеть сообщение, что такой-то сайт закрыт по решению каких-то там д€дек, знающих лучше мен€, как мне жить. ј интернет нужен дл€ работы. » привык € смотреть фильмы и сериалы онлайн, а то и в UO на FW погон€ть изредка.

“о есть скорость скачивани€ и задержки должны быть приемлимыми.

  тому же, € заметил, что вечерами €вно присутствует ограничение на число соединений. то есть - открываем 10 вкладок, 11-€ уже говорит об ошибке - "соединение сброшено". «акрываем какую-либо, обновл€ем 11-ю - все открываетс€.


я хотел установить клиента VPN сразу в роутере, что позволило бы не заморачиватьс€ с клиентами на конечных устройствах (два андроид-фона, медиацентр на pi2/openelec, пара ноутов) и скрыть от провайдера сам факт раздачи. ѕровайдер должен видеть один шифрованный канал на подход€щий дл€ этого порт.


ѕопул€рных технологий, имеющих возможность стартануть на роутере, было две. Ёто L2TP и OpenVPN. ƒл€ первой даже была вебморда, но, как € ни старалс€ - клиентска€ часть не поднималась. ј, да. ¬ "родной" прошивке отсутствовала возможность использовать L2TP через usb 3g/4g, только как авторизационна€ составл€юща€ дл€ WAN-порта (ethernet). — openwrt € был на "вы", и осторожно, поэтому предпочел поискать готовую прошивку, которой можно было бы прошитьс€ через стандартную вебморду. » € ее нашел.


ѕостроена она на openwrt, поэтому си€ инструкци€ сгодитс€ дл€ любой openwrt - прошивки с установленным пакетом openvpn, да и дл€ других кастомных прошивок тоже.


»так - OpenVPN. —ерверна€ часть. ќпыт работы с ним уже был, пусть и без клиентской части в роутере. я много работаю с дистрибутивами CentOS, преимущественно 6.X, поэтому еЄ и выбрал. Ќам понадобитс€ vps/vds сервер, который можно относительно недорого арендовать. ” мен€ была возможность протестировать три площадки, и по итогам € сделал свой выбор. –ассматривал площадки исключительно в –‘, хотелось комфортной скорости в рунете.  ак ни крути, с зарубежными площадками есть такие проблемы.


ѕерва€ площадка - недорогой VDS на kvm (более подход€ща€ технологи€ виртуализации), 129р/мес, 400мб ќ«”, ssd, MSK. ѕинги радуют, но обща€ скорость маловата.

¬тора€ площадка - kvm, Ќовосибирск. 400р. –есурсы сервера хорошие. ѕинги не радуют, скорость по итогу тоже.

“реть€ площадка - OpenVZ, MSK, 1Gb ќ«”, ssd, 299р. (UDP: полез провер€ть цены и вы€снил, что тарифы подн€ли, но ресурсов значительно больше. ѕодробнее в самом конце поста). ѕришлось попросить техподдержку подключить tun/tap девайсы, сделайте это сразу, если у ¬ас OpenVZ. ѕеред покупкой уточните, что это возможно. —сылку на эту площадку € отправлю попросившему пикабушнику в электропочту, но запросы пишите мне на мойник_собака_майлру. ѕриложите ссылку на свой профиль, буду провер€ть каждого, пикабушникам 1 день не высылаю :)


 ак ¬ы уже пон€ли, ограничени€ на доступы к сайтам не распростран€ютс€ на хостинги и ƒ÷, не предназначенные дл€ розничной доставки интернета населению. Ёто хорошо.


»так, у ¬ас есть VDS, это либо KVM, либо OpenVZ с подключенными tun/tap девайсами. «аказываем операционку - CentOS 6.x [minimal i686]. —качиваем клиент ssh - например, putty. Ћогинимс€ по ip сервера на порт 22 по протоколу ssh, вводим им€ root и пароль. ћы в консоли!

—обственный vpn? VPN, Openvpn, ќбход, ќграничени€, ƒлиннопост

“акже нужно качнуть WinSCP либо другой файл-менеджер, поддерживающий SSH, и залогинитс€ похожим образом. ¬ первом клиенте мы вбиваем команды, во втором оперируем с файлами. ѕоехали устанавливать серверную часть.


ќбновл€ем все пакеты

yum update -y

”станавливаем репозиторий

cd /usr/src/ && wget http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8... && wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -Uvh remi-release-6*.rpm epel-release-6*.rpm


”станавливаем нужные пакеты

yum install mc wget unzip ntp
yum -y install openvpn

Ќастраиваем автообновление даты и времени, правильные значени€ нам нужны дл€ работы openvpn-сервера

ntpdate pool.ntp.org && service ntpd start && chkconfig ntpd on && rm -f /etc/localtime && cp -uf /usr/share/zoneinfo/Europe/Moscow /etc/localtime

–азрешаем форвард пакетов

sed -i 's/net.ipv4.ip_forward = 0/net.ipv4.ip_forward = 1/g' /etc/sysctl.conf
sudo sysctl -p

¬озможно, на kvm также понадобитс€ отключить selinux

sed -i s/SELINUX=enforcing/SELINUX=disabled/g /etc/selinux/config
reboot


—ервер перезагрузитс€, логинимс€ заново. ƒалее нам нужно скачать easyrsa3, распаковать его и сгенерировать несколько сертификатов, нужных дл€ работы как сервера, так и клиента:

cd /usr/src && wget http://hldns.ru/dnld/ovpn/master.zip
unzip master.zip && rm -f master.zip && ln -s /usr/src/easy-rsa-master/easyrsa3 /etc/openvpn/
cd /etc/openvpn/easyrsa3 && ./easyrsa init-pki && ./easyrsa build-ca nopass && ./easyrsa build-server-full server nopass
cd /etc/openvpn/easyrsa3 && ./easyrsa gen-dh
cp /etc/openvpn/easyrsa3/openssl-1.0.cnf /etc/openvpn/
cd /etc/openvpn/easyrsa3/ && ./easyrsa build-client-full client nopass

“акже нам понадобитс€ ключ TA:

cd /etc/openvpn && openvpn --genkey --secret ta.key


—качивание идет с моего сайта, ибо € не помню, где брать оригинал и не знаю, будет ли подход€ща€ верси€. ѕоследней строкой генерируетс€ сертификат клиента. —ледующие файлы нужно пока сохранить себе на комп через WinSCP: /etc/openvpn/easyrsa3/pki/private/client.key, /etc/openvpn/easyrsa3/pki/ca.crt, client.crt, /etc/openvpn/ta.key


ƒалее создаем файл /etc/openvpn/server.conf следующего содержимого:

mode server
tls-server
dev tap
port 664
script-security 2
tls-auth /etc/openvpn/ta.key 0
ca easyrsa3/pki/ca.crt
cert easyrsa3/pki/issued/server.crt
key easyrsa3/pki/private/server.key
dh easyrsa3/pki/dh.pem
crl-verify easyrsa3/pki/crl.pem
ifconfig 10.8.0.1 255.255.255.0
ifconfig-pool 10.8.0.2 10.8.0.254
ifconfig-pool-persist ipp.txt 0
push "route-gateway 10.8.0.1"
push "redirect-gateway def1"
push "dhcp-option DNS 77.88.8.88"
push "dhcp-option DNS 8.8.8.8"
push "sndbuf 393216"
push "rcvbuf 393216"
sndbuf 393216
rcvbuf 393216
cipher BF-CBC
tls-timeout 120
keepalive 10 120
persist-key
persist-tun
tun-mtu 1500
fragment 1300
mssfix
fast-io
verb 3
status openvpn-status.log
log openvpn.log
log-append openvpn.log

 раткое резюме конфига сервера. TAP вместо TUN € выбрал, потому что хотел соедин€ть через этот же сервер несколько мест в одну локальную сеть - это по работе. ƒл€ этого достаточно сгенерировать дополнительные клиентские сертификаты и их настроить в клиенте вместо client.key/client.crt. —трочка выше, где присутствует build-client-full.

–ежим udp (протокол udp) позвол€ет работать тоннелю с минимальными задержками, мину€ ненужные на данном этапе процедуры гарантированной доставки, которые имеютс€ в TCP. ѕусть этим занимаютс€ протоколы и приложени€ уже внутри тоннел€.

ѕорт 664/udp позвол€ет слегка "прикинутьс€" протоколом ASF-SECURE-RMCP. я не знаю, зачем он нужен, но в нем есть слово SECURE, и наш тоннель зашифрован. Ћучшего € не придумал. 443 (https) работает по TCP, нам неподходит. Ўифрование BF-CBC €вл€етс€ простым и легким, минимально нагружающим процессор как сервера, так и клиента. Ќапомню, клиент у нас - роутер, и сложное шифрование очень значительно снижает скорость работы.


ƒалее создадим в каталоге /etc/openvpn файл ipp.txt, и будем в него прописывать внутренние адреса наших клиентов. ѕока клиент у нас один. Ќе то, чтобы это было необходимо, но так будет проще в будущем, если клиентов несколько.

client,10.8.0.250

Ќастраиваем права:

chown -R openvpn. /etc/openvpn


¬ключаем автозагрузку openvpn и стартуем серверную часть:

chkconfig openvpn on
service openvpn start

≈сли старт не удалс€ - лезем в лог и читаем, думаем. ћожно выложить ошибку в комменты, подумаем вместе. Ћог у нас задан в конфиге сервера: log openvpn.log, располагаетс€ в /etc/openvpn.


ƒл€ работы в SSH-консоли пригодитс€ уже установленный нами файл-менеджер, запускаемый одноименной командой: mc. ≈сли кто знаком с norton commander, far или хот€ бы total commander - то он проблем с использованием испытывать не будет.


»так, серверна€ часть запущена. Ќо у нас есть только подключение к серверу, а нам надо, чтобы сервер прикинулс€ роутером и NAT-ил трафик. “ут нам поможет iptables, и у нас два варианта. Ѕолее классический, но не всегда работающий на OpenVZ:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

где нужно eth0 заменить на имеющийс€ интерфейс, который видно командой ifconfig. ≈сли не прокатило, то удал€ем правило (-A мен€ем на -D) и пробуем такой вариант:

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -d 0/0 -j SNAT --to-source ¬јЎ_¬Ќ≈ЎЌ»…_IP


¬озможно, включить "таблицу nat" также нужно посредством обращени€ в техподдержку, если у вас OpenVZ!


¬нешний ip видно все той же командой ifconfig, да и в ѕ” хостера тоже. ¬се эти манипул€ции с iptables имеет смысл делать после подключени€ клиента, чтобы было чем провер€ть результат.  огда все получилось - сохран€ем конфиг iptables: service iptables save


“еперь клиент. Ћезем на роутер все теми же putty и winscp. —оздадим в каталоге /root каталог openvpn, скопируем в него ранее сохраненные с сервера файлы:

—обственный vpn? VPN, Openvpn, ќбход, ќграничени€, ƒлиннопост

‘айл client.ovpn нужно создать, его содержимое:

client
proto udp
remote —≈–¬≈–ј_IP 664
resolv-retry infinite
dev tap
remote-cert-tls server
script-security 2
tls-auth /root/openvpn/ta.key 1
ca /root/openvpn/ca.crt
cert /root/openvpn/client.crt
key /root/openvpn/client.key
cipher BF-CBC
persist-key
persist-tun
tun-mtu 1500
fragment 1300
mssfix
fast-io
verb 0
tls-timeout 120
keepalive 20 360


≈сли вдруг на вашем openwrt не установлен openvpn - то установите его

opkg update
opkg install openvpn-openssl

ƒалее приводим файл /etc/config/openvpn к виду:

package openvpn
config openvpn custom_config
option enabled 1
option config /root/openvpn/client.ovpn


» в вебморде luci включаем его:

—обственный vpn? VPN, Openvpn, ќбход, ќграничени€, ƒлиннопост

ѕровер€ем, изменилс€ ли наш ip-адрес например на myip.ru. ƒолжен быть адрес сервера vds.
≈сли что не так - по прежнему читаем и анализируем лог на сервере.


“еперь дополнение. ≈сли вдруг ¬ам нужно пробросить какой-либо порт внутрь локалки - то пробрасывать дважды - на сервере и в роутере. — роутером сами разберетесь, а вот как на сервере, дл€ примера:

iptables -t nat -A PREROUTING -p ѕ–ќ“ќ ќЋ(tcp/udp) -d ¬Ќ≈ЎЌ»…_IP --dport ¬Ќ≈ЎЌ»…_ѕќ–“ -j DNAT --to-destination 10.8.0.250:ѕќ–“_ ”ƒј


Ќе забываем service iptables save после проверки.


ѕисалось по пам€ти, что то мог забыть или где то незначительно ошибитьс€. √отов в комментах оказать поддержку. “акже, при возникновении проблемы  прошерстите комменты, вдруг ее уже решили?


—пасибо!

UPD: ¬ы€снил, что с момента аренды сервера на самой "быстрой" по итогам тестов площадке изменились цены, но и выросли ресурсы. “еперь она за 420 р/мес предлагает 4гб озу и два быстрых €дра. ¬ св€зи с чем могу абсолютно бесплатно помочь настроить серверную часть дл€ р€да пикабушников, изъ€вивших данное желание.


“о есть - платить ¬ы будете за сервер вскладчину. Ќо вам нужно организоватьс€, т.е. нужен человек, который будет собирать ежемес€чно оплату и собсно оплачивать сервер, отвечать за него и т.д. ћне нехочетс€ этим заниматьс€. Ќо настроить сервер и наделать сертификатов с конфигами € могу, повторюсь, бесплатно.


»тоги через OpenVPN:

—обственный vpn? VPN, Openvpn, ќбход, ќграничени€, ƒлиннопост
—обственный vpn? VPN, Openvpn, ќбход, ќграничени€, ƒлиннопост

Ѕез OpenVPN:

—обственный vpn? VPN, Openvpn, ќбход, ќграничени€, ƒлиннопост
—обственный vpn? VPN, Openvpn, ќбход, ќграничени€, ƒлиннопост
ѕоказать полностью 7
ѕохожие посты закончились. ¬озможно, вас заинтересуют другие посты по тегам: