Как установить бесплатный 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 .
Нужно сделать следующее:
Шаг 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... DoneBuilding dependency treeReading state information... DoneCalculating upgrade... DoneThe following packages will be upgraded:libc-bin libc-l10n libc6 libexpat1 linux-image-4.9.0-3-amd64 localesmultiarch-support7 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] yGet: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... DonePreconfiguring 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-amd64Found initrd image: /boot/initrd.img-4.9.0-3-amd64doneSetting up locales (2.24-11+deb9u1) ...Generating locales (this might take a while)...en_US.UTF-8... doneGeneration complete.
После установки ядра Linux необходима перезагрузка. Для этого нужно ввести следующую команду:
$ sudo reboot
Установить ufw (Простой фаервол)
Для установки ufw на Debian 9/8, нужно ввести команду apt-get
$ sudo apt-get install ufw
Образец вывода:
Reading package lists... DoneBuilding dependency treeReading state information... DoneThe following NEW packages will be installed:ufw0 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 versionCreating config file /etc/ufw/before6.rules with new versionCreating config file /etc/ufw/after.rules with new versionCreating config file /etc/ufw/after6.rules with new versionCreated 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)? yFirewall is active and enabled on system startup
Образец вывода:
Status: activeTo Action From-- ------ ----22 ALLOW Anywhere80 ALLOW Anywhere443 ALLOW Anywhere22 (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/vpnResolvinggit.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 FoundLocation: 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.shResolvingraw.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 PermanentlyLocation: 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.shResolvingraw.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 OKLength: 14938 (15K) [text/plain]Saving to: ‘openvpn-install.sh’openvpn-install.sh 100%[===================>] 14.59K --.-KB/s in 0s2017-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 -eiptables -I FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPTiptables -I FORWARD -s 10.8.0.0/24 -j ACCEPTiptables -I INPUT -p udp --dport 1194 -j ACCEPTiptables -t nat -A POSTROUTING -s 10.8.0.0/24 ! -d 10.8.0.0/24 -j SNAT --to 104.237.156.154exit 0
Вы можете посмотреть настройки вашего OpenVPN сервера сгенерировав их скриптом приведенным ниже (не редактируйте этот файл вручную):
$ sudo more /etc/openvpn/server.conf$ sudo vi -M /etc/openvpn/server.conf
Образец вывода:
port 1194proto udpdev tunsndbuf 0rcvbuf 0ca ca.crtcert server.crtkey server.keydh dh.pemauth SHA512tls-auth ta.key 0topology subnetserver 10.8.0.0 255.255.255.0ifconfig-pool-persist ipp.txtpush "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 120cipher AES-256-CBCcomp-lzouser nobodygroup nogrouppersist-keypersist-tunstatus openvpn-status.logverb 3crl-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 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 bytes64 bytes from 10.8.0.1: icmp_seq=0 ttl=64 time=287.760 ms64 bytes from 10.8.0.1: icmp_seq=1 ttl=64 time=283.046 ms64 bytes from 10.8.0.1: icmp_seq=2 ttl=64 time=278.271 ms64 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 lossround-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 сервер, что поможет достигнуть нового уровня приватности на только вашем облачном сервере Debian 9.x/8.x.