WireGuard — коммуникационный протокол и бесплатное программное обеспечение с открытым исходным кодом, который реализует зашифрованные виртуальные частные сети (VPN).
Скачаем шаблон lxc
Нажимаем кнопку Create TC
Сопоставьте содержимое следующей команды «Container_ID» с трехзначным идентификационным номером вашего контейнера Linux, который вы только что создали.
nano /etc/pve/lxc/ Container_ID .conf
nano /etc/pve/lxc/102.conf
В самом низу файла добавьте эти две строчки:
lxc.cgroup.devices.allow: c 10:200 rwm
lxc.mount.entry: /dev/net dev/net none bind,create=dir
Сохраните изменения (CTRL+S) и выйдите из редактора nano (CTRL+X).
Теперь нам еще нужно ввести права доступа для определенного каталога. Вы можете сделать это с помощью этой команды:
chown 100000:100000 /dev/net/tun
ls -l /dev/net/tun
Когда наш недавно настроенный контейнер запущен, пришло время нажать на кнопку консоли и начать настройку WiredGuard VPN, выполнив команды ниже.
apt update && apt upgrade -y
Теперь мы устанавливаем WireGuard, используя очень простой скрипт установки, который мы можем скачать и запустить с помощью следующей команды:
wget git.io/wireguard -O wireguard-install.sh && bash wireguard-install.sh
Welcome to this WireGuard road warrior installer!
This server is behind NAT. What is the public IPv4 address or hostname?
Public IPv4 address / hostname [79.123.45.67]: vpn.5house.win
What port should WireGuard listen to?
Port [51820]:
Enter a name for the first client:
Name [client]: mobile1
Select a DNS server for the client:
1) Current system resolvers
2) Google
3) 1.1.1.1
4) OpenDNS
5) Quad9
6) AdGuard
DNS server [1]: 1
BoringTun will be installed to set up WireGuard in the system.
Should automatic updates be enabled for it? [Y/n]: y
WireGuard installation is ready to begin.
Press any key to continue...
Скрипт установки уже сделал большую часть работы за нас. Однако нам все еще нужно внести небольшую корректировку в файл конфигурации WireGuard, чтобы клиенты, подключенные к серверу, также могли правильно взаимодействовать (маршрутизация).
Сначала откройте файл с помощью редактора nano и добавьте следующие строки в сегмент [Interfaces]:
nano /etc/wireguard/wg0.conf
[Interfaces]
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
Сначала проверьте, правильно ли работает служба WireGuard. Для этого вы можете использовать следующую команду:
systemctl status wg-quick@wg0
* wg-quick@wg0.service - WireGuard via wg-quick(8) for wg0
Loaded: loaded (/lib/systemd/system/wg-quick@.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/wg-quick@wg0.service.d
`-boringtun.conf
Active: active (exited) since Thu 2023-02-23 21:10:59 UTC; 1min 26s ago
Проверка открытых портов
ss -lntup
root@WireGuard:/tmp# ss -lntup
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process
udp UNCONN 0 0 0.0.0.0:51820 0.0.0.0:*
udp UNCONN 0 0 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=99,fd=13))
udp UNCONN 0 0 [::]:51820 [::]:*
tcp LISTEN 0 4096 127.0.0.53%lo:53 0.0.0.0:* users:(("systemd-resolve",pid=99,fd=14))
tcp LISTEN 0 100 127.0.0.1:25 0.0.0.0:* users:(("master",pid=305,fd=13))
tcp LISTEN 0 4096 *:22 *:* users:(("systemd",pid=1,fd=39))
tcp LISTEN 0 100 [::1]:25 [::]:* users:(("master",pid=305,fd=14))
Просмотр сетевых интерфейсов
ip a
wg0: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1420 qdisc noqueue state UNKNOWN group default qlen 1000
link/none
inet 10.7.0.1/24 scope global wg0
valid_lft forever preferred_lft forever
Первый клиент для WireGuard VPN был создан во время установки. В данном руководстве ему присвоено имя [client1]. Нам нужна отдельная конфигурация для каждого клиента, который должен быть подключен к VPN-серверу. Мы можем использовать скрипт установки, который мы загрузили ранее, чтобы создать больше клиентов.
Инструмент управления можно вызвать с помощью этой команды:
bash wireguard-install.sh
Создайте свой QR-код
qrencode -t ansiutf8 < /etc/wireguard/clients/mobile.conf
Для создания подключения к WireGuard на мобильном телефоне, открываем клиента WireGuard. Нажимаем синюю кнопку справа снизу и из открывшегося меню выбираем: Сканировать QR-код.
После добавления всех нужных профилей осталось лишь добавить сервер WireGuard в автозапуск и включить его:
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0
systemctl status wg-quick@wg0
https://www.wireguard.com/quickstart/
Как узнать внешний публичный IP-адрес в Linux
IP адреса в локальной сети должны находится в таких диапазонах:
От 192.168.0.0 до 192.168.255.255
От 10.0.0.0 до 10.255.255.255
От 172.16.0.0 до 172.31.255.255
От 100.64.0.0 до 100.127.255.255
Эти адреса зарезервированы для локальных сетей и в качестве публичных адресов использоваться не могут.
wget -qO- ifconfig.me
curl ifconfig.me
curl ipinfo.io/ip
curl ipecho.net/plain
curl icanhazip.com
curl ipecho.net/plain
curl ident.me
curl api.ipify.org
traceroute 8.8.8.8
mtr 8.8.8.8
Динамический DNS (DDNS или Dyn DNS)
служба DNS, которая предоставляет возможность отображения доменных имен на IP-адреса. Т.е. можно одному веб-адресу указывать на изменяющийся IP-адрес. На практике это означает, что, если вы хотите удаленно подключиться к вашему ПК или настроить домашний веб-сервер, то динамический DNS — это один из самых простых способов настройки.
https://ydns.io/ Основанная в Германии, YDNS является провайдером freeDdynamic DNS, который запрашивает только ваш адрес электронной почты и пароль, прежде чем вы начнете использовать его. https://github.com/ydns/bash-updater https://www.duckdns.org/
Переадресация портов WireGuard из Интернета — в роутере
WireGuard с CMS https://www.firezone.dev/