Как установить бесплатный VPN(виртуальная частная сеть) сервер на Debian Linux версии 9.x или 8.x для защиты вашей активности в интернете от злоумышленников при открытом wi-fi или другом открытом интернет соединении?
ОpenVPN — это бесплатное и общедоступное программное обеспечение для систем типа Linux/Unix. Таким образом осуществляется двух или трех уровневая OSI защита сетевого подключения на основе протокола SSL/TLS. VPN позволяет осуществлять защищенные соединения в незащищенных общественных сетях, таких как wi-fi сеть в аэропорту или отеле. Виртуальной частной сети так же необходим доступ к вашему корпоративному, домашнему серверу или серверу компании. Вы можете обойти сайты с защитой по геолокации, повысить вашу приватность и безопасность онлайн.
Этот туториал содержит в себе пошаговые инструкции для настройки OpenVPN сервера на Debian Linux v8.x/9.x, включая настройки фаервола ufw/iptables .
Нужно сделать следующее:
Найти и записать свой публичный IP адрес.
Установить скрипт openvpn-install.sh.
Запустить openvpn-install.sh для установки OpenVPN сервера.
Подсоединить OpenVPN сервер используя IOS/Android/Linux/Windows клиент.
Подтвердить возможность соединения.
Шаг 1 – Найти ваш публичный IP адрес
Используйте любую из приведенных ниже команд для определения вашего публичного IPv4 адреса. Если ваш интерфейс назван eth0 или eth1, введите:
$ ip addr show eth0
Или:
$ ip addr show eth1
Так же можно использовать команды host или dig как показано ниже:
$ host myip.opendns.com resolver1.opendns.com
Или:
$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
Образец вывода:
Запишите публичный IP адрес 104.237.156.154, то есть публичный IP адрес вашего сервера OpenVPN.
Шаг 2 – Обновить вашу систему и установить ufw
Введите команду apt-get/команду apt для обновления системы:
$ sudo apt-get update
$ sudo apt-get upgrade
Образец вывода:
Reading package lists... Done
Building dependency tree
Reading state information... Done
Calculating upgrade... Done
The following packages will be upgraded:
libc-bin libc-l10n libc6 libexpat1 linux-image-4.9.0-3-amd64 locales
multiarch-support
7 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
Need to get 46.6 MB of archives.
After this operation, 0 B of additional disk space will be used.
Do you want to continue? [Y/n] y
Get:1 http://security.debian.org/debian-security stretch/updates/main amd64 libc6 amd64 2.24-11+deb9u1 [2,695 kB]
Get:2 http://security.debian.org/debian-security stretch/updates/main amd64 libc-bin amd64 2.24-11+deb9u1 [778 kB]
Get:3 http://security.debian.org/debian-security stretch/updates/main amd64 multiarch-support amd64 2.24-11+deb9u1 [200 kB]
Get:4 http://security.debian.org/debian-security stretch/updates/main amd64 libc-l10n all 2.24-11+deb9u1 [820 kB]
Get:5 http://security.debian.org/debian-security stretch/updates/main amd64 locales all 2.24-11+deb9u1 [3,290 kB]
Get:6 http://security.debian.org/debian-security stretch/updates/main amd64 libexpat1 amd64 2.2.0-2+deb9u1 [83.4 kB]
Get:7 http://security-cdn.debian.org stretch/updates/main amd64 linux-image-4.9.0-3-amd64 amd64 4.9.30-2+deb9u2 [38.7 MB]
Fetched 46.6 MB in 2s (15.5 MB/s)
Reading changelogs... Done
Preconfiguring packages ...
(Reading database ... 28439 files and directories currently installed.)
Preparing to unpack .../libc6_2.24-11+deb9u1_amd64.deb ...
Unpacking libc6:amd64 (2.24-11+deb9u1) over (2.24-11) ...
Setting up libc6:amd64 (2.24-11+deb9u1) ...
(Reading database ... 28439 files and directories currently installed.)
Preparing to unpack .../libc-bin_2.24-11+deb9u1_amd64.deb ...
Unpacking libc-bin (2.24-11+deb9u1) over (2.24-11) ...
Setting up libc-bin (2.24-11+deb9u1) ...
Updating /etc/nsswitch.conf to current default.
(Reading database ... 28439 files and directories currently installed.)
Preparing to unpack .../multiarch-support_2.24-11+deb9u1_amd64.deb ...
Unpacking multiarch-support (2.24-11+deb9u1) over (2.24-11) ...
Setting up multiarch-support (2.24-11+deb9u1) ...
(Reading database ... 28439 files and directories currently installed.)
Preparing to unpack .../libc-l10n_2.24-11+deb9u1_all.deb ...
Unpacking libc-l10n (2.24-11+deb9u1) over (2.24-11) ...
Preparing to unpack .../locales_2.24-11+deb9u1_all.deb ...
Unpacking locales (2.24-11+deb9u1) over (2.24-11) ...
Preparing to unpack .../libexpat1_2.2.0-2+deb9u1_amd64.deb ...
Unpacking libexpat1:amd64 (2.2.0-2+deb9u1) over (2.2.0-2) ...
Preparing to unpack .../linux-image-4.9.0-3-amd64_4.9.30-2+deb9u2_amd64.deb ...
Unpacking linux-image-4.9.0-3-amd64 (4.9.30-2+deb9u2) over (4.9.30-2) ...
Setting up libexpat1:amd64 (2.2.0-2+deb9u1) ...
Processing triggers for libc-bin (2.24-11+deb9u1) ...
Setting up libc-l10n (2.24-11+deb9u1) ...
Processing triggers for man-db (2.7.6.1-2) ...
Setting up linux-image-4.9.0-3-amd64 (4.9.30-2+deb9u2) ...
/etc/kernel/postinst.d/initramfs-tools:
update-initramfs: Generating /boot/initrd.img-4.9.0-3-amd64
/etc/kernel/postinst.d/zz-update-grub:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-4.9.0-3-amd64
Found initrd image: /boot/initrd.img-4.9.0-3-amd64
done
Setting up locales (2.24-11+deb9u1) ...
Generating locales (this might take a while)...
en_US.UTF-8... done
Generation complete.
После установки ядра Linux необходима перезагрузка. Для этого нужно ввести следующую команду:
$ sudo reboot
Установить ufw (Простой фаервол)
Для установки ufw на Debian 9/8, нужно ввести команду apt-get
$ sudo apt-get install ufw
Образец вывода:
Reading package lists... Done
Building dependency tree
Reading state information... Done
The following NEW packages will be installed:
ufw
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 164 kB of archives.
After this operation, 848 kB of additional disk space will be used.
Get:1 http://mirrors.linode.com/debian stretch/main amd64 ufw all 0.35-4 [164 kB]
Fetched 164 kB in 0s (13.1 MB/s)
Preconfiguring packages ...
Selecting previously unselected package ufw.
(Reading database ... 28439 files and directories currently installed.)
Preparing to unpack .../archives/ufw_0.35-4_all.deb ...
Unpacking ufw (0.35-4) ...
Setting up ufw (0.35-4) ...
Creating config file /etc/ufw/before.rules with new version
Creating config file /etc/ufw/before6.rules with new version
Creating config file /etc/ufw/after.rules with new version
Creating config file /etc/ufw/after6.rules with new version
Created symlink /etc/systemd/system/multi-user.target.wants/ufw.service ? /lib/systemd/system/ufw.service.
Processing triggers for systemd (232-25) ...
Processing triggers for man-db (2.7.6.1-2) ...
Processing triggers for rsyslog (8.24.0-1) ...
Необходимо открыть затребованные порты, такие как SHH port 22, 80, 443 и так далее:
$ sudo ufw allow 22
$ sudo ufw allow 80
$ sudo ufw allow 443
Для включения фаервола запустим:
$ sudo ufw enable
Состояние правил фаервола:
$ sudo ufw status
Command may disrupt existing ssh connections. Proceed with operation (y|n)? y
Firewall is active and enabled on system startup
Образец вывода:
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
80 ALLOW Anywhere
443 ALLOW Anywhere
22 (v6) ALLOW Anywhere (v6)
80 (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)
Шаг 3 – Установка скрипта openvpn-install.sh
Введем команду wget:
$ wget https://git.io/vpn -O openvpn-install.sh
Образец вывода:
--2017-06-29 20:19:41-- https://git.io/vpn
Resolving git.io (git.io)... 23.23.159.159, 50.16.231.196, 23.23.154.116, ...
Connecting to git.io (git.io)|23.23.159.159|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://raw.github.com/Nyr/openvpn-install/master/openvpn-install.sh [following]
--2017-06-29 20:19:41-- https://raw.github.com/Nyr/openvpn-install/master/openvpn-install.sh
Resolving raw.github.com (raw.github.com)... 151.101.40.133
Connecting to raw.github.com (raw.github.com)|151.101.40.133|:443... connected.
HTTP request sent, awaiting response... 301 Moved Permanently
Location: https://raw.githubusercontent.com/Nyr/openvpn-install/master/openvpn-install.sh [following]
--2017-06-29 20:19:41-- https://raw.githubusercontent.com/Nyr/openvpn-install/master/openvpn-install.sh
Resolving raw.githubusercontent.com (raw.githubusercontent.com)... 151.101.40.133
Connecting to raw.githubusercontent.com (raw.githubusercontent.com)|151.101.40.133|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 14938 (15K) [text/plain]
Saving to: ‘openvpn-install.sh’
openvpn-install.sh 100%[===================>] 14.59K --.-KB/s in 0s
2017-06-29 20:19:41 (134 MB/s) - ‘openvpn-install.sh’ saved [14938/14938]
Запустим скрипт openvpn-install.sh для установки и настройки сервера OpenVPN автоматически:
$ sudo bash openvpn-install.sh
Когда будет установлен IP адрес 104.237.156.154 (замените 104.237.156.154 на ваш актуальный IP) и порт на 1194 (или 443, если вы не используете веб сервер). Используйте OpenDNS или Google DNS серверы с VPN. Далее, введите имя клиента (например, iPhone, Nexus6, LinuxRouter, BackupServer и другие). Наконец, нажмите клавишу ‘Enter’ для установки и настройки OpenVPN на вашей системе:
На этом всё, ваш OpenVPN сервер настроен и готов к работе. Вы можете посмотреть файл добавленных правил фаервола /etc/rc.local используя команду cat:
$ cat /etc/rc.local
Образец вывода:
#!/bin/sh -e
iptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -I FORWARD -s 10.8.0.0/24 -j ACCEPT
iptables -I INPUT -p udp --dport 1194 -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to 104.237.156.154
exit 0
Вы можете посмотреть настройки вашего OpenVPN сервера сгенерировав их скриптом приведенным ниже (не редактируйте этот файл вручную):
$ sudo more /etc/openvpn/server.conf
$ sudo vi -M /etc/openvpn/server.conf
Образец вывода:
port 1194
proto udp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 173.230.155.5"
push "dhcp-option DNS 173.255.212.5"
push "dhcp-option DNS 173.255.219.5"
push "dhcp-option DNS 173.255.241.5"
push "dhcp-option DNS 173.255.243.5"
push "dhcp-option DNS 173.255.244.5"
push "dhcp-option DNS 173.230.145.5"
push "dhcp-option DNS 173.230.147.5"
push "dhcp-option DNS 74.207.241.5"
push "dhcp-option DNS 74.207.242.5"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
Как запускать/останавливать/перезапускать OpenVPN сервер на Debian Linux 9.x/8.x LTS?
Для остановки службы OpenVPN:
$ sudo systemctl stop openvpn@server
Для запуска службы OpenVPN:
$ sudo systemctl start openvpn@server
Для перезапуска службы OpenVPN:
$ sudo systemctl restart openvpn@server
Шаг 4 – Настройка клиента
На сервере вы найдете файл настройки клиента по имени ~/macos-vpn-client.ovpn. Всё, что вам нужно сделать – скопировать этот файл на ваш локальный рабочий стол используя scp и предоставить этому файлу соединение с вашим OpenVPN клиентом:
$ scp vivek@104.237.156.154:~/macos-vpn-client.ovpn .
Далее вам нужно установить OpenVPN клиент для вашей операционной системы:
OpenVPN для Apple IOS version 6.x или выше
OpenVPN для Android
OpenVPN для Apple MacOS (OS X)
OpenVPN для Windows 7/8/10
Настройки клиента OpenVPN MacOS/OS X
Для начала установите OpenVPN macos клиент. Далее дважды нажмите на файл macos-vpn-client.ovpn и он откроется в вашем клиенте tunnelblick. Нажмите “Only me” для установки.
Единожды нажав на кнопку ‘Connect’ вы будете онлайн. Используйте приведенные ниже команды на клиентах MacOS для подтверждения замены вашего публичного IP на IP VPN сервера (введите в вашем локальном Linux/Unix/MacOS)
$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com
Образец вывода:
"104.237.156.154"
Вы можете проверить связь OpenVPN сервера частного IP:
$ ping 10.8.0.1
Образец вывода:
PING 10.8.0.1 (10.8.0.1): 56 data bytes
64 bytes from 10.8.0.1: icmp_seq=0 ttl=64 time=287.760 ms
64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=283.046 ms
64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=278.271 ms
64 bytes from 10.8.0.1: icmp_seq=3 ttl=64 time=283.679 ms
^C
--- 10.8.0.1 ping statistics ---
4 packets transmitted, 4 packets received, 0.0% packet loss
round-trip min/avg/max/stddev = 278.271/283.189/287.760/3.367 ms
Настройка клиента Linux OpenVPN
Установка клиента OpenVPN на RHEL/CentOS Linux командой yum:
$ sudo yum install openvpn
Или установки клиента OpenVPN на Debian/Ubuntu Linux Linux используйте команду apt:
$ sudo apt install openvpn
Далее, скопируйте macos-vpn-client.ovpn как показано ниже:
$ sudo cp macos-vpn-client.ovpn /etc/openvpn/client.conf
Проверьте соединение от CLI:
$ sudo openvpn --client --config /etc/openvpn/client.conf
Ваша система Linux будет автоматически подключена, когда компьютер перезапустится используя скрипт /etc/init.d/openvpn:
$ sudo /etc/init.d/openvpn start
Для систем построенных на systemd нужно поступать следующим образом:
$ sudo systemctl start openvpn@client
Проверьте соединение:
$ ping 10.8.0.1 # Ping to OpenVPN server gateway
$ ip route # Make sure routing setup
$ dig TXT +short o-o.myaddr.l.google.com @ns1.google.com # Make sure your public IP set to OpenVPN server
Настройка клиента FreeBSD OpenVPN
Первое, установите клиент OpenVPN, введите:
$ sudo pkg install openvpn
Далее, скопируйте macos-vpn-client.ovpn следующим образом:
$ mkdir -p /usr/local/etc/openvpn/
$ sudo cp macos-vpn-client.ovpn /usr/local/etc/openvpn/client.conf
Редактирование /etc/rc.conf и добавление по примеру приведенному ниже:
openvpn_enable="YES"
openvpn_configfile="/usr/local/etc/openvpn/client.conf"
Запуск службы OpenVPN:
$ sudo /usr/local/etc/rc.d/openvpn start
Подтверждение:
$ ping 10.8.0.1 #Ping to OpenVPN server gateway
$
$ netstat -nr #Make sure routing setup
$
$ drill myip.opendns.com @resolver1.opendns.com #Make sure your public IP set to OpenVPN server
Ссылки:
OpenVPN
OpenVPN road warrior для Linux
На этом всё, у вас установлен OpenVPN сервер, что поможет достигнуть нового уровня приватности на только вашем облачном сервере Debian 9.x/8.x.