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

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


vpn

Розбіжності

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

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

Наступна ревізія
Попередня ревізія
Наступна ревізія Both sides next revision
vpn [2014/11/20 14:35]
wombat створено
vpn [2014/11/24 01:23]
wombat [Сервер] примечание о нескольких OpenVPN с одним IP
Рядок 1: Рядок 1:
 ====== VPN ====== ====== VPN ======
  
-===== Сервер =====+===== Установка ===== 
 + 
 +==== в Debian GNU/​Linux ​====
  
   sudo apt-get install openvpn   sudo apt-get install openvpn
 +
 +===== Настройка =====
 +
 +==== Сервер ====
 +
 +Чтобы организовать защищённое подключение,​ нужно сгенерировать секретный ключ доступа:​
  
   # openvpn --genkey --secret static.key   # 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   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   # echo 1 > /​proc/​sys/​net/​ipv4/​ip_forward
-  # iptables -A FORWARD -i venet0 ​-o tun1 -m state --state ESTABLISHED,​RELATED -j ACCEPT +  # 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 venet0 ​-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 venet0 ​-j SNAT --to 162.211.231.29+  # 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 -f -N -L5611:​localhost:​1194 -p 443 wombat.org.ua +  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 openvpn ​--proto tcp-client --secret /​etc/​openvpn/​WOU.key --remote localhost 5611 --dev tun1 --ifconfig ​10.9.8.10.9.8.1 + 
-  route del default +==== Новый маршрут ==== 
-  sudo route add 195.22.132.22 eth0 + 
-  sudo route add 195.22.132.2 eth0 +  sudo route add -net 10.9.8.0 netmask 255.255.255.0 gw 10.9.8.1 
-  sudo route add 195.22.132.3 eth0+  ​sudo route del default
   sudo route add default gw 10.9.8.1   sudo route add default gw 10.9.8.1
  
-  sudo openvpn --proto tcp-client --remote wombat.org.ua 443 --http-proxy ​<PROXY> <PROXY_PORT> --dev tun1 --ifconfig 10.9.8.2 10.9.8.1+Чтобы сохранить доступ к DNS-серверам своего провайдера (на всякий случай):​ 
 + 
 +  sudo route add <DNS1_IPeth0 
 +  sudo route add <DNS2_IPeth0 
 + 
 +Доступ к прокси-серверу,​ если он есть, обязательно нужно сохранить:​ 
 + 
 +  sudo route add <​PROXY_IP>​ eth0 
 + 
 +Чтобы использовать DNS-серверы,​ отличные от предоставленных провайдером,​ можно изменить файл 
 + 
 +<file conf "/​etc/​resolv.conf">​ 
 +nameserver 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://​wiki.debian.org/​OpenVPN
  
 +https://​openvpn.net/​index.php/​open-source/​documentation.html
vpn.txt · В останнє змінено: 2023/07/30 23:05 by wombat