Wireguard настройка клиента linux

Как настроить WireGuard VPN в Ubuntu 20.04

WireGuard — это современная технология VPN (виртуальная частная сеть), в которой используется самая современная криптография. По сравнению с другими популярными решениями VPN, такими как IPsec и OpenVPN , WireGuard быстрее, проще в настройке и занимает меньше места. Он кроссплатформенный и может работать практически где угодно, включая Linux, Windows, Android и macOS.

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

В этой статье мы обсудим, как настроить WireGuard VPN на Ubuntu 20.04, который будет действовать как VPN-сервер. Мы также покажем вам, как настроить WireGuard в качестве клиента. Клиентский трафик будет маршрутизироваться через сервер Ubuntu 20.04.

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

Подготовка

Чтобы следовать этому руководству, вам понадобится сервер Ubuntu 20.04 с доступом root или sudo .

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

Мы начнем с установки WireGuard на машину Ubuntu и настроим его для работы в качестве сервера. Мы также настроим систему для маршрутизации клиентского трафика через нее.

Установите WireGuard на Ubuntu 20.04

WireGuard доступен из репозиториев Ubuntu по умолчанию. Чтобы установить его, выполните следующие команды:

Это установит модуль и инструменты WireGuard.

Настройка WireGuard

В wg и wg-quick инструмент командной строки позволяют настроить и управлять интерфейсами WireGuard.

Каждое устройство в сети WireGuard VPN должно иметь закрытый и открытый ключ. Выполните следующую команду, чтобы сгенерировать пару ключей:

Файлы будут созданы в каталоге /etc/wireguard . Вы можете просматривать содержимое файлов с помощью cat или less . Закрытый ключ никогда не должен передаваться кому-либо и всегда должен храниться в безопасности.

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

Следующим шагом является настройка туннельного устройства, которое будет маршрутизировать трафик VPN.

Устройство можно настроить либо из командной строки с помощью команд ip и wg , либо путем создания файла конфигурации с помощью текстового редактора.

Создайте новый файл с именем wg0.conf и добавьте следующее содержимое:

Интерфейс можно назвать как угодно, однако рекомендуется использовать что-то вроде include wg0 или wgvpn0 . Настройки в разделе интерфейса имеют следующее значение:

Адрес — разделенный запятыми список IP-адресов v4 или v6 для интерфейса wg0 . Используйте IP-адреса из диапазона, зарезервированного для частных сетей (10.0.0.0/8, 172.16.0.0/12 или 192.168.0.0/16).

ListenPort — порт прослушивания.

PrivateKey — закрытый ключ, сгенерированный командой wg genkey . (Чтобы увидеть содержимое файла типа: sudo cat /etc/wireguard/privatekey )

SaveConfig — при значении true текущее состояние интерфейса сохраняется в файл конфигурации при завершении работы.

PostUp — Команда или сценарий, который выполняется перед запуском интерфейса. В этом примере мы используем iptables для включения маскарадинга. Это позволяет трафику покидать сервер, предоставляя VPN-клиентам доступ в Интернет.

Не забудьте заменить ens3 после -A POSTROUTING чтобы оно соответствовало имени вашего общедоступного сетевого интерфейса. Вы можете легко найти интерфейс с помощью:

PostDown — команда или скрипт, который выполняется перед выключением интерфейса. Правила iptables будут удалены после отключения интерфейса.

Читайте также:  Alt linux сменить ip

wg0.conf и privatekey не должны быть доступны для чтения обычным пользователям. Используйте chmod чтобы установить разрешения на 600 :

После этого wg0 интерфейс wg0 , используя атрибуты, указанные в файле конфигурации:

Команда выдаст следующий результат:

Чтобы проверить состояние и конфигурацию интерфейса, введите:

Вы также можете запустить ip a show wg0 чтобы проверить состояние интерфейса:

WireGuard также можно управлять с помощью Systemd.

Чтобы запустить интерфейс WireGuard во время загрузки, выполните следующую команду:

Сеть сервера и настройка брандмауэра

Для работы NAT необходимо включить переадресацию IP. Откройте /etc/sysctl.conf и добавьте или раскомментируйте следующую строку:

Сохраните файл и примените изменения:

Если вы используете UFW для управления брандмауэром, вам необходимо открыть UDP-трафик на порт 51820 :

Вот и все. Одноранговый узел Ubuntu, который будет действовать как сервер, настроен.

Настройка клиентов Linux и macOS

Инструкции по установке для всех поддерживаемых платформ доступны по адресу https://wireguard.com/install/ . В системах Linux вы можете установить пакет с помощью диспетчера пакетов распространения, а в macOS — с помощью brew .

После установки выполните следующие действия, чтобы настроить клиентское устройство.

Процесс настройки клиента Linux и macOS практически такой же, как и для сервера. Сначала сгенерируйте открытый и закрытый ключи:

Создайте файл wg0.conf и добавьте следующее содержимое:

Настройки в разделе интерфейса имеют то же значение, что и при настройке сервера:

  • Адрес — разделенный запятыми список IP-адресов v4 или v6 для интерфейса wg0 .
  • PrivateKey — чтобы увидеть содержимое файла на клиентском компьютере, запустите: sudo cat /etc/wireguard/privatekey

Одноранговый раздел содержит следующие поля:

  • PublicKey — открытый ключ однорангового узла, к которому вы хотите подключиться. (Содержимое файла сервера /etc/wireguard/publickey ).
  • Конечная точка — IP или имя хоста однорангового узла, к которому вы хотите подключиться, за которым следует двоеточие, а затем номер порта, на котором удаленный одноранговый узел прослушивает.
  • AllowedIPs — разделенный запятыми список IP-адресов v4 или v6, с которых разрешен входящий трафик для однорангового узла и на которые направляется исходящий трафик для этого однорангового узла. Мы используем 0.0.0.0/0, потому что мы маршрутизируем трафик и хотим, чтобы одноранговый сервер отправлял пакеты с любым исходным IP.

Если вам нужно настроить дополнительных клиентов, просто повторите те же шаги, используя другой частный IP-адрес.

Настройка клиентов Windows

Загрузите и установите пакет Windows msi с веб-сайта WireGuard .

После установки откройте приложение WireGuard и нажмите «Добавить туннель» -> «Добавить пустой туннель…», как показано на изображении ниже:

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

Введите имя туннеля и отредактируйте конфигурацию следующим образом:

В разделе интерфейса добавьте новую строку для определения адреса туннеля клиента.

В одноранговом разделе добавьте следующие поля:

  • PublicKey — открытый ключ сервера Ubuntu (файл /etc/wireguard/publickey ).
  • Конечная точка — IP-адрес сервера Ubuntu с двоеточием и порт WireGuard (51820).
  • Разрешенные IP-адреса — 0.0.0.0/0

После этого нажмите кнопку «Сохранить».

Добавить однорангового клиента к серверу

Последний шаг — добавить на сервер открытый ключ и IP-адрес клиента. Для этого запустите на сервере Ubuntu следующую команду:

Обязательно измените CLIENT_PUBLIC_KEY на открытый ключ, сгенерированный на клиентском компьютере ( sudo cat /etc/wireguard/publickey ), и настройте IP-адрес клиента, если он отличается. Пользователи Windows могут скопировать открытый ключ из приложения WireGuard.

После этого вернитесь на клиентский компьютер и откройте интерфейс туннелирования.

Клиенты Linux и macOS

Выполните следующую команду, чтобы открыть интерфейс:

Теперь вы должны быть подключены к серверу Ubuntu, и трафик с вашей клиентской машины должен проходить через него. Проверить соединение можно с помощью:

Вы также можете открыть свой браузер, ввести «what is my ip», и вы должны увидеть IP-адрес своего сервера Ubuntu.

Чтобы остановить туннелирование, wg0 интерфейс wg0 :

Клиенты Windows

Если вы установили WireGuard в Windows, нажмите кнопку «Активировать». После подключения одноранговых узлов статус туннеля изменится на Активный:

Выводы

Мы показали вам, как установить WireGuard на машину с Ubuntu 20.04 и настроить его как VPN-сервер. Эта настройка позволяет вам просматривать веб-страницы анонимно, сохраняя конфиденциальность ваших данных о трафике.

Читайте также:  Не загружается windows как проверить ошибки

Если вы столкнулись с какой-либо проблемой, не стесняйтесь оставлять комментарий.

Источник

Настройка WireGuard на Ubuntu 20.04

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

В то время как OpenVPN скорее является лидером отрасли, WireGuard выглядит мощным соперником.

Что такое WireGuard?

Протокол VPN определяет, как ваши данные направляются с вашего компьютера на сервер. Разные протоколы имеют разные характеристики – т.е. некоторые из них более безопасны, чем другие и лучше подходят для разных задач.

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

Хотя существует много широко используемых протоколов VPN – SSTP, PPTP и P2TP / IPSec и многие другие – есть один более новый протокол, который выделяется на фоне остальных, WireGuard. Он станет ключевым протоколом и будущим VPN.

WireGuard, как технология VPN

Он был назван в качестве следующего поколения в безопасном VPN-туннелировании. В качестве протокола с открытым исходным кодом WireGuard представляет собой защищенный сетевой туннель на сетевом уровне – третьем уровне в модели компьютерных сетей OSI – для IPv4 и IPv6.

Используя современные криптографические протоколы, WireGuard является ультра-безопасным и очень быстро набирает обороты. Он особенно популярен среди разработчиков. Первоначально выпущенный для Linux, он теперь совместим с несколькими платформами и обеспечивает самое сильное шифрование, которое когда-либо когда-либо наблюдалось.

Что отличает WireGuard?

Созданный Джейсоном Доненфельдом, экспертом по кибербезопасности и основателем Edge Security, WireGuard основан на его собственных методах эксфильтрации корневых наборов, которые он использовал, чтобы оставаться в сети в течение длительных периодов времени, оставаясь незамеченным.

1. Он гораздо меньше

Базы кодов для других популярных протоколов, таких как OpenVPN и IPSec, огромны и занимают сотни и тысячи строк кода. Это проблематично, поскольку затрудняет поиск и устранение ошибок и уязвимостей. Сегодня ошибки и уязвимости все еще обнаруживаются в других протоколах VPN, потому что их кодовые базы чрезвычайно обширны.

Напротив, код WireGuard прост и имеет около 4000 строк кода, тогда как OpenVPN имеет порядка 100 000 строк. Да и OpenVPN также требует OpenSSL, который добавляет что-то в районе 500 000 строк.

Меньшее количество строк, также означает меньше сбоев и зависаний. Кроме того, повышенная пропускная способность означает, что он намного лучше подходит для игр, потокового видео и других задач, требующих большого объема данных.

2. WireGuard проще в использовании

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

В то же время протоколы VPN, используемые в большинстве продуктов VPN, используют сложные протоколы туннелирования, такие как OpenVPN и IPSec. Они не только могут быть сложными и медленными в работе из-за огромного количества кода, их также сложно защитить.

WireGuard, является небольшим, легким, легко внедряемым на всех устройствах и работает в «скрытом режиме», не передавая данные.

3. Имеет шифрование следующего уровня

WireGuard использует процесс, известный как «маршрутизация криптовалюты», для защиты данных пользователей. Он работает путем соединения открытых ключей шифрования с авторизованными IP-адресами VPN-туннелей.

WireGuard также намеренно избегает использования так называемых «отраслевых стандартов» алгоритмов с присущими им недостатками в пользу новейших и самых сложных вариантов. Это включает:

  • ChaCha20 аутентифицируется с Poly13045
  • Curve25519
  • HKDF
  • Blake2s
  • SipHash24

Комбинация без параметров конфигурации наряду с относительно короткими 256-битными ключами шифрования беспокоит некоторых людей, особенно учитывая, что OpenVPN предлагает 4,906-битный RSA. Тем не менее, когда вы делаете математику, 4096-битный ключ вам нужен?

С 256-битным, вам нужно проработать 2 256 комбинаций, прежде чем взломать его. С учетом того, что большинство проблем ставит раскрытые решения на полпути, это оставляет колоссальные 2 255 возможных сбоев.

Читайте также:  Просмотрщик jpg файлов для windows

Высокие надежды на WireGuard

Текущий диапазон надежных протоколов VPN, таких как OpenVPN, велик. Они быстрые, безопасные и широко доступные. Как долго они могут оставаться подходящими, особенно когда технологии становится все умнее и все больше людей начинают работать в интернете, неизвестно.

Хотя спрос на легкий и простой протокол в настоящее время низок, со временем, это изменится. Именно такие решения, как WireGuard, станут следующим «отраслевым стандартом» для VPN. WireGuard – это VPN следующего поколения.

Настройка WireGuard на Ubuntu 20.04

Установка и настройка на стороне сервера (Ubuntu 20.04 Server)

sudo su
apt install wireguard
cd /etc/wiregaurd/

# Создадим пару закрытого и открытого ключа сервера:
umask 077; wg genkey | tee server_private_key | wg pubkey > server_public_key

# Создадим пару закрытого и открытого ключа клиента:
umask 077; wg genkey | tee client1_private_key | wg pubkey > client1_public_key

# Создадим конфигурационный файлл нашего сервера и добавим в него следующие параметры:

nano wg0.conf
# Секция настройки сервера:
[Interface]
PrivateKey = server_private_key # подставьте сюда приватный ключ сервера (cat server_private_key)
Address = 10.0.0.1/24 # Внутренний ip адрес нашего сервера
ListenPort = 51194 # Порт на котором наш сервер будет принимать подключения
# Добавим правила маскарадинга, чтобы весь трафик проходил через наш сервер

# eth0 необходимо заменить на ваш сетевой интерфейс (ip route | grep default)
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

# Секция настройки клиента

# Client1
[Peer]
PublicKey = client1_public_key # Подставьте сюда публичный ключ клиента (cat client1_public_key)
AllowedIPs = 10.0.0.2/32 # внутренний ip адрес клиента (client1)

*Сохраните и закройте файл (ctrl+x, then ‘y’ and ‘enter’)

Теперь настроим сетевую инфраструктуру нашего сервера и firewall

# Открываем необходимые порт

sudo ufw allow 51194/udp # Порт сервера WireGuard
sudo ufw allow 22 # Порт OpenSSH сервера

# Включаем поддержку перенаправления трафика на уровне ядра

sudo nano /etc/sysctl.conf # Раскоментируйте параметр для включения перенаправления IPv4 траффика
net.ipv4.ip_forward=1
sudo sysctl -p # Применяем сделанные изменения

# Запускаем наш Wireguard сервер

# Добавляем его а автозагрузку

sudo systemctl enable [email protected]

Установка и настройки на стороне клиента (Ubuntu 20.04 Desktop)

sudo su
apt install wireguard
cd /etc/wireguard/
nano wg0.conf

# Секция настройки клиента client1
[Interface]
PrivateKey = client1_private_key # Скопировать значение с нашего сервера (на сервере: sudo cat /etc/wireguard/client1_private_key)
Address = 10.0.0.2/24 # ip адрес клиента client1
DNS = 8.8.8.8
# Секция настройки подключения к серверу
[Peer]
PublicKey = server_public_key # Скопировать значение с нашего сервера (на сервере: sudo cat /etc/wireguard/server_public_key)
AllowedIPs = 0.0.0.0/0 # разрешаем клиенту доступ в сеть
Endpoint = 172.105.112.120:51194 # Публичный IP адрес вашего сервера
PersistentKeepalive = 15
*Сохраните и закройте файл (ctrl+x, then ‘y’ and ‘enter’)

# Теперь можно установить соединение с нашим сервером

sudo wg-quick up wg0

# [sudo] пароль для username:
# Результат выполнения комманды будет примерно следующий:
[#] ip link add wg0 type wireguard
[#] wg setconf wg0 /dev/fd/63
[#] ip -4 address add 10.0.0.2/24 dev wg0
[#] ip link set mtu 1420 up dev wg0
[#] mount `8.8.8.8′ /etc/resolv.conf
[#] wg set wg0 fwmark 51194
[#] ip -4 route add 0.0.0.0/0 dev wg0-ideapad table 51194
[#] ip -4 rule add not fwmark 51194 table 51194
[#] ip -4 rule add table main suppress_prefixlength 0
[#] sysctl -q net.ipv4.conf.all.src_valid_mark=1
[#] nft -f /dev/fd/63

# Проверим доступность нашего сервера в сети WireGuard:

ping 10.0.0.1 -c 3
# Результат выполнения комманды будет примерно следующий:
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
64 bytes from 10.0.0.1: icmp_seq=1 ttl=64 time=186 ms
64 bytes from 10.0.0.1: icmp_seq=2 ttl=64 time=209 ms
64 bytes from 10.0.0.1: icmp_seq=3 ttl=64 time=232 ms

— 10.8.10.1 ping statistics —
3 packets transmitted, 3 received, 0% packet loss, time 2002ms

Это означает что наш сервер и клиент установили соединение и настроены корректно.

Для отключения от сервера используйте команду:

sudo wg-quick down wg0

Добавлять новых клиентов можно по аналогии с client1
Более подроную информацию ищите на официальном сайте проекта wireguard.com.

Источник: статья – MakeUseOf, настройка – iExclus1ve

Источник

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