Поиск по сайту:

Как установить Wireguard VPN на Debian 11


На этой странице

  1. Предпосылки
  2. Установка Wireguard
  3. Создание пары открытый/закрытый ключ
    1. Создание пары ключей для сервера Wireguard
    2. Создание пары ключей для клиента

    Wireguard — это бесплатный протокол VPN с открытым исходным кодом, альтернативный IPSec, IKEv2 и OpenVPN. Wiruguard разработан для операционных систем Linux и Unix. Он работает в пространстве ядра Linux, что делает Wireguard быстрее и надежнее. Wireguard используется для создания безопасных туннельных соединений между двумя или более компьютерами.

    Wireguard стремится заменить протоколы VPN, такие как IPSec, IKEv2 и OpenVPN. Wireguard легче, быстрее, проще в настройке и эффективнее. И в то же время Wiregurad не пожертвовал аспектом безопасности протокола VPN. Wireguard поддерживает современную передовую криптографию, такую как структура протокола Noise, Curve25519, ChaCha20, Poly1305, BLAKE2, SipHash24, HKDF, а также безопасные доверенные конструкции.

    По сравнению с другими протоколами VPN, такими как OpenVPN, IPSec и IKEv2, wireguard — это новый протокол VPN. Wireguard выпущен Джейсоном А. Доненфельдом в 2015 году в качестве альтернативного протокола VPN. Линус Торвальдс объединил его с ядром Linux версии 5.6 в 2020 году и в том же году также перенес на FreeBSD 13.

    В этом руководстве вы установите и настроите VPN-сервер через Wireguard на серверах Debian 11. Вы настроите VPN-сервер Wireguard с сервером Debian 11, а затем настроите клиентский компьютер для подключения к VPN-серверу Wireguard.

    Что касается клиентской машины, вы можете использовать любой дистрибутив Linux, но в этом примере используется машина Debian.

    Предпосылки

    Чтобы начать работу с этим учебным пособием, у вас должны быть следующие требования:

    • Сервер Debian 11. В этом примере используется сервер Debian с именем хоста wireguard-server и внешним статическим IP-адресом SERVER-IP.
    • Компьютер Linux, который будет использоваться в качестве клиента. Вы можете использовать любой дистрибутив Linux, но в этом примере используется компьютер Debian с именем хоста client1.
    • Пользователь без полномочий root с правами администратора sudo/root.

    Если все эти требования готовы, давайте начнем.

    Установка Wireguard

    Перед установкой Wireguard выполните приведенную ниже команду apt, чтобы обновить индекс пакетов Debian.

    sudo apt update

    После обновления репозиториев Debian выполните приведенную ниже команду apt, чтобы установить пакет Wireguard на ваш сервер Debian. Это также установит пакет wireguard-tools, который будет использоваться для управления установкой вашего сервера Wireguard.

    sudo apt install wireguard

    При запросе подтверждения введите y для подтверждения и нажмите ENTER для продолжения. Теперь должна начаться установка.

    Установив Wireguard на свой сервер, вы готовы сгенерировать пару открытых и закрытых ключей для сервера и клиента Wireguard.

    Генерация пары открытый/закрытый ключ

    На этом шаге вы создадите пару открытого и закрытого ключей для сервера Wireguard и клиентского компьютера. И это можно сделать с помощью командной строки wg, предоставляемой пакетом wireguard-tools.

    Пара ключей для сервера будет использоваться сервером Wireguard, а клиентский компьютер будет использовать пару ключей для клиента. Если у вас несколько клиентских машин, вам нужно сгенерировать несколько пар ключей для ваших клиентов.

    Создание пары ключей для сервера Wireguard

    Выполните приведенную ниже команду wg genkey, чтобы сгенерировать закрытый ключ для сервера Wireguard. Затем измените разрешение закрытого ключа на 0400, что отключит доступ на чтение и запись для группы и других.

    В этом примере вы создадите закрытый ключ /etc/wireguard/server.key.

    wg genkey | sudo tee /etc/wireguard/server.key
    sudo chmod 0400 /etc/wireguard/server.key

    Затем вы получите выходной случайный ключ base64 на экране терминала.

    Затем выполните приведенную ниже команду wg pubkey, чтобы сгенерировать новый открытый ключ сервера в /etc/wireguard/server.pub. Открытый ключ сервера является производным от закрытого ключа сервера /etc/wireguard/server.key.

    sudo cat /etc/wireguard/server.key | wg pubkey | sudo tee /etc/wireguard/server.pub

    Затем вы получите вывод случайного открытого ключа base64 на свой терминал.

    Теперь, когда вы сгенерировали пары открытого и закрытого ключей для сервера Wireguard. Закрытый ключ находится в папке /etc/wireguard/server.key, а открытый ключ находится в папке /etc/wireguard/server.pub. >.

    Запустите приведенную ниже команду cat, чтобы показать и проверить сгенерированную пару ключей для сервера Wireguard.

    cat /etc/wireguard/server.key
    cat /etc/wireguard/server.pub

    Создание пары ключей для клиента

    Пару ключей клиента можно сгенерировать на любом компьютере (сервере или клиенте Wireguard) с установленными инструментами wireguard. На этом шаге вы сгенерируете пару ключей клиента с сервера Wireguard.

    Процесс создания пары ключей для сервера и клиента одинаков: используется команда wg genkey для создания закрытого ключа и wg pubkey для создания открытого ключа. , полученный из закрытого ключа.

    Теперь выполните приведенную ниже команду, чтобы создать новый каталог /etc/wireguard/clients. Этот каталог будет использоваться для хранения пары ключей клиента.

    mkdir -p /etc/wireguard/clients

    Запустите приведенную ниже команду wg genkey, чтобы создать закрытый ключ клиента для /etc/wireguard/clients/client1.key. Затем сгенерируйте открытый ключ клиента с помощью команды wg pubkey в /etc/wireguard/clients/client1.pub.

    wg genkey | tee /etc/wireguard/clients/client1.key
    cat /etc/wireguard/clients/client1.key | wg pubkey | tee /etc/wireguard/clients/client1.pub

    Теперь, когда сгенерирована пара ключей клиента, открытый ключ находится в папке /etc/wireguard/clients/client1.pub, а закрытый ключ /etc/wireguard/clients/client1.key. Запустите приведенную ниже команду, чтобы показать и проверить сгенерированную пару ключей.

    cat /etc/wireguard/clients/client1.key
    cat /etc/wireguard/clients/client1.pub

    Настройка сервера Wireguard

    На этом шаге вы создадите новый файл конфигурации для Wireguard Server. Но перед этим вы должны решить, какие подсети вы будете использовать для сервера Wireguard VPN. Вы также можете решить, включить или отключить IPv6 для вашего VPN-сервера Wireguard.

    В этом примере сервер Wireguard VPN будет иметь IP-адреса с подсетью 10.8.0.2/24 и отключит IPv6 для Wireguard VPN.

    Создайте новый файл конфигурации Wireguard /etc/wireguard/wg0.conf, используя приведенную ниже команду редактора nano.

    sudo nano /etc/wireguard/wg0.conf

    Во-первых, добавьте следующие строки в файл, чтобы определить детали сервера Wirguard. И обязательно замените PrivateKey на закрытый ключ сервера Wirguard server.key. При этом интерфейс сервера Wireguard будет работать на IP-адресе 10.8.0.1, откроется UDP-порт 51820, доступный для подключения клиентов, а параметр SaveConfig обеспечит сохранение любых изменений в файле конфигурации, даже если интерфейс Wireguard выключен.

    [Interface]
    # Wireguard Server private key - server.key
    PrivateKey = SIybp8GHtKIPtHPBOQFP1kbQg4UCLCMyNIfCLBQR2EA=

    # Wireguard interface will be run at 10.8.0.1
    Address = 10.8.0.1/24

    # Clients will connect to UDP port 51820
    ListenPort = 51820

    # Ensure any changes will be saved to the Wireguard config file
    SaveConfig = true

    Затем добавьте приведенные ниже строки, чтобы определить одноранговое соединение клиента. Измените параметр PublicKey на открытый ключ клиента client1.pub. А параметр AllowedIPs укажет, какому клиенту Wireguard разрешен доступ к этому пиру. В этом примере доступ к этому одноранговому соединению будет разрешен только клиентам с IP-адресом 10.8.0.2. Но вы также можете разрешить диапазон подсетей, например 10.8.0.0/24.

    [Peer]
    # Wireguard client public key - client1.pub
    PublicKey = ENokvIsS2euXrmM4OVFHPmTdCZ4wfEIR/UHuGCW64lw=

    # clients' VPN IP addresses you allow to connect
    # possible to specify subnet ⇒ [10.8.0.0/24]
    AllowedIPs = 10.8.0.2/24

    Сохраните файл и выйдите из редактора, когда закончите.

    Создав файл конфигурации сервера Wireguard и добавив одноранговое соединение клиента, вы затем настроите переадресацию портов на сервере Weireguard и настроите брандмауэр для настройки маршрутизации трафика.

    Включить переадресацию портов через /etc/sysctl.conf

    На этом шаге вы включите переадресацию портов на сервере Wireguard через файл /etc/sysctl.conf. Вы можете включить переадресацию портов как для IPv4, так и для IPv6 на сервере Wireguard guard.

    Для начала откройте файл конфигурации /etc/sysctl.conf с помощью приведенной ниже команды редактора nano.

    sudo nano /etc/sysctl.conf

    Добавьте в файл следующие строки. Это включит переадресацию портов на вашем сервере Wireguard. Вы можете использовать как IPv4, так и IPv6, или вы можете использовать IPv4, если на вашем сервере Wireguard отключен IPv6.

    # Port Forwarding for IPv4
    net.ipv4.ip_forward=1

    # Port forwarding for IPv6
    net.ipv6.conf.all.forwarding=1

    Сохраните файл и выйдите из редактора, когда закончите.

    Затем запустите приведенную ниже командную утилиту sysctl, чтобы применить изменения.

    sudo sysctl -p

    Вы получите такой вывод: переадресация портов должна быть включена немедленно.

    Когда на сервере Wireguard включена функция перенаправления портов, вы затем настроите брандмауэр, который будет направлять трафик клиентов Wireguard на определенный сетевой интерфейс.

    Настройка брандмауэра для сервера Wireguard

    На этом шаге вы настроите брандмауэр, который будет использоваться сервером Wireguard для маршрутизации клиентских подключений к соответствующему сетевому интерфейсу, который будет использоваться для доступа в Интернет. Это также позволит клиентам Wireguard получать доступ к Интернету через специальный интерфейс на сервере Wireguard.

    Сначала запустите приведенную ниже команду apt, чтобы установить пакет брандмауэра ufw на ваш сервер Debian.

    sudo apt install ufw

    Введите y при появлении запроса и нажмите ENTER, чтобы продолжить.

    После установки ufw выполните приведенную ниже команду, чтобы открыть службу SSH и включить брандмауэр ufw.

    sudo ufw allow OpenSSH
    sudo ufw enable

    Когда будет предложено подтвердить включение брандмауэра ufw, введите y и нажмите ENTER. Брандмауэр ufw теперь должен быть запущен в вашей системе и также включен.

    Теперь проверьте состояние брандмауэра ufw с помощью приведенной ниже команды. Вы должны получить такой вывод, как Статус: активен, что означает, что статус брандмауэра ufw запущен.

    sudo ufw status

    При работающем брандмауэре ufw вы затем настроите его для маршрутизации клиентских подключений Wireguard к определенному сетевому интерфейсу.

    Теперь выполните приведенную ниже команду, чтобы проверить интерфейс таблицы маршрутизации по умолчанию на сервере Wireguard. В основном это обнаружит интерфейс, который используется для доступа в Интернет или где поверх него доступен общедоступный IP-адрес.

    ip route list default

    Вы получите такой вывод: в этом примере интерфейс eth0 является таблицей маршрутизации по умолчанию для сервера Wireguard. И это интерфейс, который используется для доступа в Интернет. У вас может быть другое имя интерфейса.

    Затем откройте файл конфигурации сервера Wireguard /etc/wireguard/wg0.conf с помощью приведенной ниже команды редактора nano.

    sudo nano /etc/wireguard/wg0.conf

    Добавьте следующие строки в раздел [Interface].

    [Interface]
    ...
    ....
    PostUp = ufw route allow in on wg0 out on eth0
    PostUp = iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
    PostUp = ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE
    PreDown = ufw route delete allow in on wg0 out on eth0
    PreDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    PreDown = ip6tables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

    Сохраните файл и выйдите из редактора, когда закончите.

    • Параметр PostUp будет выполняться всякий раз, когда сервер Wirguard запускает VPN-туннель.
    • Параметр PreDown будет выполняться всякий раз, когда сервер Wireguard останавливает VPN-туннель.
    • Команда ufw route allow in on wg0 out on eth0 позволяет перенаправлять трафик, поступающий с интерфейса wg0, на интернет-интерфейс eth0.
    • Команда iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE включает маскировку и перезаписывает трафик IPv4 с интерфейса wg0, чтобы он выглядел как прямое соединение с сервером Wireguard.
    • Команда ip6tables -t nat -I POSTROUTING -o eth0 -j MASQUERADE включает маскировку и перезаписывает трафик IPv46 с интерфейса wg0, чтобы он выглядел как прямое соединение с сервером Wireguard.

    Теперь запустите приведенную ниже команду ufw, чтобы открыть UDP-порт 51820, к которому будут подключаться клиенты.

    sudo ufw allow 51820/udp

    Наконец, выполните приведенную ниже команду, чтобы перезагрузить брандмауэр ufw и применить изменения. Затем проверьте список правил ufw с помощью приведенной ниже команды.

    sudo ufw reload
    sudo ufw status

    Вы получите результат, подобный этому снимку экрана: UDP-порт 51820, который сервер Wireguard будет использовать для клиентских подключений, добавлен к брандмауэру ufw.

    Итак, вы включили переадресацию портов и настроили брандмауэр на сервере Wireguard. Теперь вы готовы запустить сервер Wireguard.

    Запуск сервера Wireguard

    На этом шаге вы запустите и включите сервер Wireguard. Вы также проверите сервер Wireguard и проверите интерфейс wg0, который будет создан службой Wireguard.

    Запустите приведенную ниже командную утилиту systemctl, чтобы запустить и включить службу Wireguard. Служба [email  создаст и активирует интерфейс Wireguard wg0 на вашем сервере Wireguard.

    sudo systemctl start 

    Теперь проверьте службу Wireguard с помощью приведенной ниже команды.

    sudo systemctl status 

    Вы получите вывод, аналогичный следующему снимку экрана: служба Wireguard [email  запущена и включена. Это также означает, что интерфейс wg0 создан и запущен.

    Запустите приведенную ниже команду, чтобы проверить интерфейс wg0 на вашем сервере Wireguard.

    ip a show wg0

    Вы должны получить такой вывод: интерфейс Wireguard wg0 получает IP-адрес 10.8.0.1, как описано в файле конфигурации Wireguard /etc/wireguard/wg0.conf.

    Кроме того, вы также можете запускать и останавливать Wireguard с помощью команды wg-quick, как показано ниже. Команда wg-quick up запустит сервер Wireguard, а команда wg-quick down остановит сервер Wireguard.

    sudo wg-quick up /etc/wireguard/wg0.conf
    sudo wg-quick down /etc/wireguard/wg0.conf

    При работающем сервере Wireguard вы затем настроите клиентскую машину и подключите ее к серверу Wireguard.

    Настройка клиентской машины и подключение к серверу Wireguard

    На этом этапе вы настроите клиентский компьютер, установив инструменты worguard, создав новую конфигурацию Wireguard для клиента, подключитесь к VPN-серверу Wireguard и, наконец, проверьте соединение и убедитесь, что клиентский компьютер может подключаться к Интернету и локальной сети VPN. .

    Установите пакет wireguard-tools на клиентский компьютер. В качестве клиента используется Debian, поэтому будет использоваться команда APT.

    sudo apt install wireguard-tools

    Установка должна начаться автоматически.

    После установки инструментов wireguard создайте новый файл конфигурации /etc/wireguard/wg-client1.conf с помощью приведенной ниже команды редактора nano.

    sudo nano /etc/wireguard/wg-client1.conf

    Добавьте в файл следующие строки.

    [Interface]
    # Define the IP address for the client - must be matched with wg0 on Wireguard Server
    Address = 10.8.0.2/24

    # specific DNS Server
    DNS = 1.1.1.1

    # Private key for the client - client1.key
    PrivateKey = KPI59QH0jwc9wkUsW5Byci9ojXhz1322QXK52fQCE3E=

    [Peer]
    # Public key of the Wireguard server - server.pub
    PublicKey = Qt6oRLtlfAR490lTNb2K8TlbpwADV1j8NX7D5HY38EM=

    # Allow all traffic to be routed via Wireguard VPN
    AllowedIPs = 0.0.0.0/0

    # Public IP address of the Wireguard Server
    Endpoint = SERVER-IP:51820

    # Sending Keepalive every 25 sec
    PersistentKeepalive = 25

    Сохраните и закройте файл, когда закончите.

    В разделе [Интерфейс] необходимо определить следующее:

    • IP-адрес клиента должен совпадать с подсетью сервера Wireguard. В этом примере клиент Wireguard получит IP-адрес 10.8.0.2.
    • Укажите DNS-сервер для клиента.
    • Измените параметр PrivateKey на созданный вами закрытый ключ клиента, client1.key.

      В разделе [Peer] необходимо добавить следующее:
    • Открытый ключ сервера Wireguard server.pub в параметр PublicKey.
    • Укажите AllowedIPs, чтобы ограничить доступ к узлу VPN, вы можете указать подсети сетей или просто указать 0.0.0.0/0 для туннелирования всего трафика через VPN.
    • Укажите в параметре Endpoint общедоступный IP-адрес сервера Wireguard или используйте доменное имя.

    После создания конфигурации клиента выполните приведенную ниже команду, чтобы запустить Wireguard на клиентском компьютере.

    wg-quick up wg-client1

    Вы должны получить результат, аналогичный этому снимку экрана: будет создан новый интерфейс Wireguard wg-client1, и клиентский компьютер должен быть подключен к серверу Wireguard, работающему на SERVER-IP:51820.

    Запустите приведенную ниже команду, чтобы проверить интерфейс Wireguard wg-client1.

    ip a show wg-client1

    Вы должны получить такой вывод: Интерфейс wg-client1 работает с IP-адресом 10.8.0.2, который является частью подсети сервера Wireguard 10.8.0.0/24.

    Вы также можете проверить соединение Wireguard с помощью команды wg show.

    Запустите приведенную ниже команду wg show на клиентском компьютере, и вы должны получить такой вывод.

    wg show

    Если вы подключены к правильному серверу Wireguard, вы должны увидеть IP-адрес сервера Wirguard в разделе конечной точки и открытый ключ сервера Wirguard server.pub.

    Теперь перейдите на сервер Wireguard и выполните команду wg show.

    wg show

    Вы должны получить вывод, аналогичный этому: в разделе конечной точки вы увидите общедоступный IP-адрес клиента, а в разделе равноправного узла вы увидите открытый ключ клиента client1.pub.

    Наконец, выполните приведенную ниже команду, чтобы убедиться, что клиентский компьютер может получить доступ к Интернету или получить доступ к подсети внутренней сети Wireguard VPN.

    ping -c5 10.8.0.1
    ping -c5 1.1.1.1
    ping -c5 duckduckgo.com

    Ниже приведен результат, который вы должны получить:

    Клиентская машина может подключаться к серверу Wireguard с IP-адресом 10.8.0.1.

    Клиентская машина может получить доступ к Интернету. Весь трафик направляется через общедоступный IP-адрес серверов Wireguard.

    Теперь, если вы хотите остановить Wrieguard на клиентском компьютере, вы можете запустить команду wg-quick down ниже.

    wg-quick down wg-client1

    Вы получите такой результат. Кроме того, интерфейс wg-client1 будет удален с клиентской машины.

    Теперь вы настроили Wirguard VPN на клиентской машине. Вы также проверили соединение между клиентским компьютером и сервером Wireguard.

    Заключение

    В этом руководстве вы установили и настроили Wireguard VPN на сервере Debian 11. Вы также настроили машину Debian и успешно подключились к VPN-серверу Wireguard.

    В частности, вы установили пакет Wireguard VPN, сгенерировали пару открытых и закрытых ключей для сервера и клиента, настроили брандмауэр UFW для маршрутизации трафика VPN на определенный сетевой интерфейс и включили переадресацию портов через файл /etc/sysctl.conf. файл.

    Имея это в виду, теперь вы можете добавить больше клиентов на свой VPN-сервер Wireguard, создав другую пару ключей для клиента, определив одноранговое соединение на сервере Wireguard, а затем создав новый файл конфигурации Wireguard, который будет использовать клиентский компьютер. Чтобы узнать больше о Wireguard, посетите официальную документацию Wireguard.