Користувальницькькі налаштування

Налаштування сайту


vpn

Розбіжності

Тут показані розбіжності між вибраною ревізією та поточною версією сторінки.

Посилання на цей список змін

Both sides previous revision Попередня ревізія
Наступна ревізія
Попередня ревізія
vpn [2014/11/20 19:08]
wombat [Сервер] sslh link
vpn [2014/11/23 23:23] (поточний)
wombat [Сервер] примечание о нескольких OpenVPN с одним IP
Рядок 1: Рядок 1:
 +====== VPN ======
  
 +===== Установка =====
 +
 +==== в Debian GNU/Linux ====
 +
 +  sudo apt-get install openvpn
 +
 +===== Настройка =====
 +
 +==== Сервер ====
 +
 +Чтобы организовать защищённое подключение,​ нужно сгенерировать секретный ключ доступа:​
 +
 +  # openvpn --genkey --secret static.key
 +
 +Для подключения со статическим ключом доступа:​
 +
 +  sudo openvpn --secret /​etc/​openvpn/​static.key --proto tcp-server --lport 1194 --dev tun1 --ifconfig 10.9.8.1 10.9.8.2
 +
 +Если планируется подключаться к серверу только через SSH-тоннель (либо [[sslh|через SSLH]]), то нужно добавить к параметрам IP-адрес,​ к которому будет прикреплён сервер:​
 +
 +  sudo openvpn --secret /​etc/​openvpn/​static.key --proto tcp-server --local 127.0.0.1 --lport 1194 --dev tun1 --ifconfig 10.9.8.1 10.9.8.2
 +
 +Это позволит объединить сервер и подключившийся к нему компьютер в одну локальную сеть, однако ещё не даёт доступа подключённому компьютеру в интернет. Чтобы получить выход в интернет через такой сервер,​ на нём нужно включить NAT:
 +
 +  # echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward
 +  # iptables -A FORWARD -i <​NET_IF>​ -o tun1 -m state --state ESTABLISHED,​RELATED -j ACCEPT
 +  # iptables -A FORWARD -s 10.9.8.0/24 -o <​NET_IF>​ -j ACCEPT
 +  # iptables -t nat -A POSTROUTING -s 10.9.8.0/24 -o <​NET_IF>​ -j SNAT --to <​SERVER_IP>​
 +
 +''<​NET_IF>''​ -- это "​внешний"​ сетевой интерфейс сервера (через который осуществляется доступ в Интернет).
 +''<​SERVER_IP>''​ -- это IP-адрес сервера на внешнем сетевом интерфейсе.
 +
 +**Примечание:​** Если на сервере запустить несколько копий OpenVPN, указывая им один и тот же IP сервера,​ то сетевые пакеты будут свободно перемещаться из одной VPN в другую. Т.е. получается нечто вроде моста.
 +
 +===== Клиент =====
 +
 +Для начала нужно скопировать секретный ключ доступа,​ сгенерированный на сервере,​ к себе на компьютер. Расположить его можно в ''/​etc/​openvpn/​static.key'',​ как и на сервере.
 +
 +==== Прямое подключение ====
 +
 +  sudo openvpn --proto tcp-client --remote <​SERVER_IP>​ <​SERVER_PORT>​ --dev tun1 --ifconfig 10.9.8.2 10.9.8.1
 +
 +
 +==== Через прокси-сервер ====
 +
 +  sudo openvpn --proto tcp-client --remote <​SERVER_IP>​ <​SERVER_PORT>​ --http-proxy <​PROXY>​ <​PROXY_PORT>​ --dev tun1 --ifconfig 10.9.8.2 10.9.8.1
 +
 +
 +==== Через SSH-тоннель ====
 +
 +  ssh -f -N -L5611:​localhost:​1194 -p <​SERVER_SSH_PORT>​ <​SERVER_IP> ​
 +  sudo openvpn --proto tcp-client --secret /​etc/​openvpn/​static.key --remote localhost 5611 --dev tun1 --ifconfig 10.9.8.2 10.9.8.1
 +
 +=== DD-WRT ===
 +
 +Если в качестве SSH-клиента используется [[https://​matt.ucc.asn.au/​dropbear/​dropbear.html | Dropbear]] (как в [[dd-wrt|DD-WRT]]),​ тоннель через прокси нужно устанавливать следующим образом:​
 +
 +  ssh -f -N -L 1194:​localhost:​1194 -p <​SSH_SERVER_PORT>​ <​SSH_SERVER -J '​corkscrew <​PROXY_SERVER>​ <​PROXY_PORT>​ <​SSH_SERVER>​ <​SSH_SERVER_PORT>'​
 +  openvpn --proto tcp-client --secret /​jffs/​etc/​openvpn/​static.key --remote localhost 1194 --dev tun1 --ifconfig 10.9.9.3 255.255.255.0
 +
 +Для маршрутизатора удобнее сгенерировать SSH-ключ,​ чтобы обеспечить его беспарольное подключение к серверу.
 +
 +  ssh-keygen
 +
 +Затем загрузить полученные файлы ''​id_rsa''​ и ''​id_rsa.pub''​ в папку ''/​jffs/''​ маршрутизатора (подразумевается наличие файловой системы JFFS в маршрутизаторе),​ и сконвертировать закрытый ключ в формат Dropbear:
 +
 +  dropbearconvert openssh dropbear /​jffs/​id_rsa /​jffs/​id_rsa_dropbear ​
 +
 +Открытый ключ нужно загрузить на VPN-сервер,​ к которому будет подключаться маршрутизатор в домашний каталог пользователя,​ от имени которого будет производиться подключение. Например,​ если это будет пользователь "​stavrida",​ то дописать содержимое только что сгенерированного файла ''​id_rsa.pub''​ в файл ''/​home/​stavrida/​.ssh/​authorized_keys''​ на VPN-сервере.
 +
 +SSH-тоннель в этом случае следует устанавливать так:
 +  ​
 +  ssh -y -i /​jffs/​id_rsa_dropbear -f -N -L 1194:​localhost:​1194 -p <​SSH_SERVER_PORT>​ <​SSH_SERVER -J '​corkscrew <​PROXY_SERVER>​ <​PROXY_PORT>​ <​SSH_SERVER>​ <​SSH_SERVER_PORT>'​
 +
 +==== Новый маршрут ====
 +
 +  sudo route add -net 10.9.8.0 netmask 255.255.255.0 gw 10.9.8.1
 +  sudo route del default
 +  sudo route add default gw 10.9.8.1
 +
 +Чтобы сохранить доступ к DNS-серверам своего провайдера (на всякий случай):​
 +
 +  sudo route add <​DNS1_IP>​ eth0
 +  sudo route add <​DNS2_IP>​ eth0
 +
 +Доступ к прокси-серверу,​ если он есть, обязательно нужно сохранить:​
 +
 +  sudo route add <​PROXY_IP>​ eth0
 +
 +Чтобы использовать DNS-серверы,​ отличные от предоставленных провайдером,​ можно изменить файл
 +
 +<file conf "/​etc/​resolv.conf">​
 +nameserver 8.8.8.8
 +nameserver 8.8.4.4
 +nameserver 4.2.2.1
 +nameserver 4.2.2.2
 +</​file>​
 +
 +
 +------------
 +
 +Следует заменить ''​tun1''​ на ''​tap1''​ в случае TAP-подключения.
 +
 +  sudo openvpn --proto tcp-client --secret /​etc/​openvpn/​static.key --remote localhost 5611 --dev tap1 --ifconfig 10.9.8.2 255.255.255.0
 +
 +https://​wiki.debian.org/​OpenVPN
 +
 +https://​openvpn.net/​index.php/​open-source/​documentation.html
vpn.1416510530.txt.bz2 · В останнє змінено: 2014/11/20 19:08 by wombat