Arch linux настройка vpn

Как установить и настроить OpenVPN в ArchLinux / BlackArch

В этой инструкции будет рассказано, как установить и настроить OpenVPN в ArchLinux.

Хотя OpenVPN для аутентификации пользователей/клиентов поддерживает логин/пароли, общие ключи (PSK), SSL сертификаты, я для себя выбрал SSL сертификаты, поскольку они превосходят другие методы аутентификации.

Как обычной, держите под рукой также страницу с официальной документацией. Давайте уже начнём!

1. Убеждаемся, что система обновлена

Залогинтесь на ваш VPS через SSH. Загрузим информацию о новых пакетах и обновимся с помощью pacman. Наберите следующее:

2. Убеждаемся, что в системе поддерживается TUN

Чтобы проверить, работает ли на системе Arch Linux TUN, вы можете использовать следующую команду в одну строку. Если вы используете VPS (виртуальный частный сервер), то некоторые слои виртуализации такие как vServers и OpenVZ требует, чтобы TUN был включен на/из хостовой машине, поэтому если TUN не поддерживается, то свяжитесь со службой поддержки вашего хостинга перед тем, как продолжать.

test ! -c /dev/net/tun && echo openvpn requires tun support || echo tun включен

Если вы на выделенном сервере или используете виртуальный сервер KVM, ESXI или XEN убедитесь, что модуль CONFIG_TUN включён в ядре.

3. Установка OpenVPN

Для установки службы OpenVPN просто наберите:

4. Установка EASY-RSA

Далее мы установим пакет easy-rsa используя pacman из дополнительного репозитория и установим его в /root/easy-rsa:

pacman -S easy-rsa cp -prv /usr/share/easy-rsa /root/easy-rsa cd /root/easy-rsa cp vars

5. Установка значений по умолчанию в EASY-RSA

Установим значения по умолчанию для использования их скриптами. Чтобы сделать это отредактируйте:

KEY_SIZE= 2048 KEY_COUNTRY="TH" KEY_PROVINCE="ChonBuri" KEY_CITY="Pattaya" KEY_ORG="MiAlConsorcium" KEY_EMAIL="webmaster@your_domain_name.com"

Сохраните, закройте и экспортируйте файл:

Читайте также:  Где используется astra linux

После окончания экспорта удалите созданные ранее сертификаты:

6. Генерируем сертификат

Генерируем CA сертификат используя скрипт build-ca:

7. Генерируем сертификат сервера

Генерируем сертификат VPN сервера используя скрипт build-key-server:

8. Генерируем PEM сертификат DIFFIE-HELLMAN

Сгенерируйте PEM сертификат используя скрипт build-dh:

9. Генерируем клиентский сертификат

Генерируем клиентский сертификат используя скрипт build-key:

10. Генерируем (HMAC)

Сгенерируйте секретный, основанный на хеш, код сообщения авторизации (HMAC) используя:

openvpn --genkey --secret /root/easy-rsa/keys/ta.key

11. Распределение сертификатов

Скопируйте требуемые сертификаты на определённые машины/устройства (сервер или клиент).

  • Публичный сертификат ca.crt нужен на всех серверах и клиентах;
  • Приватный ключ ca.key является секретом и нужен только на машине, сгенерировавшей ключ;
  • Серверу нужны server.crt, dh4096.pem (публичный), server.key и ta.key (приватный);
  • Клиенту нужны client.crt (публичный), client.key и ta.key (приватный).

12. Размещение сертификатов и ключей на сервере

Поместите сертификаты и ключи в директорию /etc/openvpn/certs:

mkdir -p /etc/openvpn/certs cp -pv /root/easy-rsa/keys/,имя-сервера.,ta.key,dh2048.pem> /etc/openvpn/certs/

13. Настройка сервера OpenVPN

Конфигурация сервера OpenVPN будет в файле /etc/openvpn/server.conf поэтому откройте его для редактирования:

port 1194 proto udp dev tun ca /etc/openvpn/certs/ca.crt cert /etc/openvpn/certs/server.crt key /etc/openvpn/certs/server.key dh /etc/openvpn/certs/dh2048.pem tls-auth /etc/openvpn/certs/ta.key 0 server 10.8.0.0 255.255.255.0 ifconfig-pool-persist ipp.txt push "redirect-gateway def1 bypass-dhcp" push "dhcp-option DNS 8.8.8.8" push "dhcp-option DNS 8.8.4.4" client-to-client keepalive 1800 4000 cipher DES-EDE3-CBC # Triple-DES comp-lzo max-clients 10 user nobody group nobody persist-key persist-tun log /var/log/openvpn.log status /var/log/openvpn-status.log verb 5 mute 20 #client-config-dir ccd mode server tls-server

Сохраните и закройте файл.

Обратите внимание на строку server 10.8.0.0 255.255.255.0. Вам не нужно менять её под условия вашей сети. Дело в том, что VPN создаёт свою собственную сеть, со своими параметрами и эти значения используются только внутри новой локальной сети VPN.

14. Тестирование и запуск сервера OpenVPN

Протестировать настройки OpenVPN сервера можно примерно так:

openvpn /etc/openvpn/server.conf

и если всё в порядке запустите OpenVPN сервер и добавьте его в автозагрузку

systemctl start openvpn@server.service systemctl enable openvpn@server.service systemctl status openvpn@server

15. Включение перенаправления и IPTABLES

Создайте файл vpn_firewall.sh

B этот файл скопируйте следующее содержимое, отредактировав его под свои нужды. Обратите внимание на:

  • PRIVATE=10.8.0.0/24 – измените подсеть в соответствии с вашими настройками. Если делали по этой инструкции, то менять ничего не нужно.
  • имя интерфейса — ens3, у вас может быть другое значение, измените его на своё везде, где оно встречается
  • в строке iptables -A INPUT -p tcp —dport 22 -j ACCEPT мы открываем доступ к порту 22, чтобы могли подключиться по SSH, если у вас нестандартный порт, то обязательно отредактируйте его, поскольку может получиться так, что после применения этого файла вы не сможете подключиться к вашему серверу по сети, добавьте нужно количество строк с необходимыми вам портами
#!/bin/sh echo 1 > /proc/sys/net/ipv4/ip_forward # Пример настройки файервола для OpenVPN. # Если нужно, сделайте соответствующие # изменения, сети вашего OpenVPN PRIVATE=10.8.0.0/24 # Петлевой адрес LOOP=127.0.0.1 # Удалить старые правила iptables # и временно заблокировать весь траффик. iptables -P OUTPUT DROP iptables -P INPUT DROP iptables -P FORWARD DROP iptables -F # Установление политик по умолчанию iptables -P OUTPUT ACCEPT iptables -P INPUT DROP iptables -P FORWARD DROP # Предотвращаем использование локальных адресов внешними пакетами iptables -A INPUT -i ens3 -s $LOOP -j DROP iptables -A FORWARD -i ens3 -s $LOOP -j DROP iptables -A INPUT -i ens3 -d $LOOP -j DROP iptables -A FORWARD -i ens3 -d $LOOP -j DROP # Всё, что приходит из Интернета, должно иметь реальный адрес iptables -A FORWARD -i ens3 -s 192.168.0.0/16 -j DROP iptables -A FORWARD -i ens3 -s 172.16.0.0/12 -j DROP iptables -A FORWARD -i ens3 -s 10.8.0.0/8 -j DROP iptables -A INPUT -i ens3 -s 192.168.0.0/16 -j DROP iptables -A INPUT -i ens3 -s 172.16.0.0/12 -j DROP iptables -A INPUT -i ens3 -s 10.8.0.0/8 -j DROP # Блокируем исходящий NetBios (если в вашей подсети # есть машины с Windows). Это не окажет влияния на какой-либо # траффик NetBios, который идёт по VPN туннелю, но остановит # локальные машины Windows от самостоятельного # широковещания в Интернет. iptables -A FORWARD -p tcp --sport 137:139 -o ens3 -j DROP iptables -A FORWARD -p udp --sport 137:139 -o ens3 -j DROP iptables -A OUTPUT -p tcp --sport 137:139 -o ens3 -j DROP iptables -A OUTPUT -p udp --sport 137:139 -o ens3 -j DROP # Разрешаем локальные петли iptables -A INPUT -s $LOOP -j ACCEPT iptables -A INPUT -d $LOOP -j ACCEPT # Позволяем входящий пинг (можно отключить) # iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT # Разрешаем такие службы как www и ssh (можно отключить) iptables -A INPUT -p tcp --dport http -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j ACCEPT iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -j ACCEPT # Разрешаем входящие пакеты OpenVPN # Дуплицируйте строку ниже для каждого # туннеля OpenVPN, меняя --dport n # для соответствия порту OpenVPN UDP. # # В OpenVPN номер порта # контролируется опцией --port n. # Если вы разместили эту опцию в конфигурационном # файле, вы можете удалить предшествующие '--' # # If you taking the stateful firewall # approach (see the OpenVPN HOWTO), # then comment out the line below. iptables -A INPUT -p udp --dport 1194 -j ACCEPT # Разрешить пакеты от устройств TUN/TAP. # Когда OpenVPN запущен в безопасном режиме, # он будет проверять подлинность пакетов до # их прибытия на интерфейс # tun или tap. Следовательно нет # необходимости добавлять сюда какие-либо фильтры, # если вы не хотите ограничить # тип пакетов, которые могут проходить # через туннель. iptables -A INPUT -i tun+ -j ACCEPT iptables -A FORWARD -i tun+ -j ACCEPT iptables -A INPUT -i tap+ -j ACCEPT iptables -A FORWARD -i tap+ -j ACCEPT # Сохранить состояние подключений от локальной машины и частных сетей iptables -A OUTPUT -m state --state NEW -o ens3 -j ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -m state --state NEW -o ens3 -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # Маскировка локальной сети iptables -t nat -A POSTROUTING -s $PRIVATE -o ens3 -j MASQUERADE

ОБЯЗАТЕЛЬНО проверьте работу файла ДО добавления его в автозагрузку. Отключитесь и подключитесь по SSH чтобы убедиться, что всё действительно работает.

Читайте также:  Wifi driver linux kernel

Для добавления файла в автозагрузску сделайте следующее.

Источник

Оцените статью
Adblock
detector