WireGuard

WireGuard

Я постараюсь максимально кратко описать, как настроить wireguard для работы.

Немного общей информации, чтобы было понимание, как это работает и как настраивается. Если в общих словах это очень похоже на ssh соединение, так как используются пары закрытых и открытых ключей для инициализации соединения. Так что в общих словах. Мы установим клиент-сервер приложения, сгенерируем пары ключей для сервера и для клиентов, напишем простые конфигурации и всё. WireGuard и правда мега простой в настройке VPN.

Сервер

Устанавливаем wireguard для вашей платформы - https://www.wireguard.com/install/

Создаем ключи для сервера и для клиента(ов)

wg genkey | tee wg-server-private.key |  wg pubkey > wg-server-public.key
wg genkey | tee wg-client-private.key |  wg pubkey > wg-client-public.key
...
wg genkey | tee wg-clientN-private.key |  wg pubkey > wg-clientN-public.key

Создаем файл конфигурации сервера

/etc/wireguard/wg0.conf

[Interface]
# IP адресс внутренней сети VPN можете указать свой в доступных диапазонах, не забудьте поменять в AllowedIPs тоже!
# 10.0.0.0 – 10.255.255.255
# 172.16.0.0 – 172.31.255.255
# 192.168.0.0 – 192.168.255.255
Address = 10.0.0.1/24
ListenPort = 51820
PrivateKey = <Копируем сюда содержимое wg-server-private.key>
# Добавляем NAT роутинг между нашей VPN сетью и сетью с интернетом
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

[Peer]
# Anton-iOS // Тут можно подписать чей ключ, если нужно будет удалить
PublicKey = <Копируем сюда содержимое wg-client-public.key>
# Адрес который будет у подключеного клиента
AllowedIPs = 10.0.0.2/32

[Peer]
# Заготовка для новых клиентов
PublicKey = <Копируем сюда содержимое wg-new-client(N)-public.key>
# Адрес который будет у подключеного клиента, должен отличаться от предыдущих
AllowedIPs = 10.0.0.3/32

Заменить eth0 на другой если отличается, ifconfig в помощь, у нужного интерфейса совпадает inet с IP сервера

Поднимаем сеть
sudo wg-quick up wg0  (eсли нужно выключить то sudo wg-quick down wg0)

Открываем FireWall (если он у вас есть)
sudo iptables -I INPUT -p udp --dport 51820 -j ACCEPT

Прописываем автозапуск
sudo systemctl enable [email protected]

Возможность проводить через себя трафик и работать роутером, чтобы заработало прямо сейчас
sudo sysctl -w net.ipv4.ip_forward=1

И чтобы добавлялось само каждый раз, открываем файл sudo nano /etc/sysctl.conf и расскоментируем строчку:

# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1

Сохраняем файл

Клиент

  1. Создаем аналогичную конфигурацию на клиенте

/etc/wireguard/wg0.conf

[Interface]
# На клиенте сервер и клиент меняются местами так сказать
# Тот же самый адрес, который для для данного клиента в конфигурации сервера, но другая маска  
Address = 10.0.0.2/24
PrivateKey = <Копируем сюда содержимое wg-client-private.key>
DNS = 8.8.8.8
# MTU = 1500 # Если нужно спрятать факт туннеля

[Peer]
# А тут описываем сервер 
PublicKey = <Копируем сюда содержимое wg-server-public.key>
AllowedIPs = 10.0.0.0/24
Endpoint = АДРЕС_СЕРВЕРА:51820

Для ПостРОителей сетей. Если нужно указать, что за VPN не одна сеть, а несколько:
AllowedIPs = 10.0.0.0/24, 192.168.0.0/24, 192.168.10.0/24
Если нужно весь трафик пересылать в туннеле то
AllowedIPs = 0.0.0.0/0

Пример для мобильного устройства

# Anton-iOS
[Interface]
Address = 10.0.0.3/24
PrivateKey = <Копируем сюда содержимое wg-mobile-private.key>
DNS = 8.8.8.8,9.9.9.9 # Можно указать ваши любимые DNS
# MTU = 1500 # Если нужно спрятать факт туннеля
        
[Peer]
PublicKey = <Копируем сюда содержимое wg-server-public.key>
AllowedIPs = 0.0.0.0/0
Endpoint = АДРЕС_СЕРВЕРА:51820

2. Поднимаем соединение
sudo wg-quick up wg0

As an event approaches, it is worth considering how details related to cosplay costumes will affect the complete look. As fans study the source material, a comparison of details related to long cosplay wigs can clarify differences in colour and construction. To review details related to costume sizing before the event, cosplay props for outdoor photography can help narrow the options for a specific purpose. For an outfit that feels convincing, it is useful to check details related to photoshoot preparation against the wearer's own needs.

3*. Как создать QR code
sudo apt install qrencode
qrencode -t ansiutf8 < mobile.conf выведет QR-код в консоль
или
qrencode -o mobile.png < mobile.conf чтобы создать картинку для пересылки.

Вот и всё, кайф wireguard ещё и в приложении на телефоне, которое может смотреть к какой сети вы подключены и автоматически включать VPN если вы не дома. Это то чем обычно я пользуюсь. А так же ест намного меньше батарейки, чем тот же openVPN, который был у меня до.

PS. Конечно же, уже появились скрипты, когда его просто можно скопировать и управлять всем из скрипта, как это у меня было с OpenVPN
На ваш выбор 2 скрипта
1. Популярный https://github.com/angristan/wireguard-install
2. От создателя скрипта для OpenVPN https://github.com/Nyr/wireguard-install

Read more

🎙 Beamforming микрофона на Linux — работает!

🎙 Beamforming микрофона на Linux — работает!

Продолжаю заводить фичи из Windows, на ASUS UX3405MA есть кнопка «угол микрофона» — нажимаешь и переключается направление захвата звука. В Linux ну вы поняли :) Техничка: В UX3405MA стоит массив из двух цифровых микрофонов (DMIC) сверху крышки, где вебка (алелуя, догадались не слушать кулера!). Обрабатываются они через Intel SOF (Sound Open Firmware)

By Anton Palgunov
Презентуйте свитками, а не грузите скрижалями!

Презентуйте свитками, а не грузите скрижалями!

Мне максимально симпотизировала идея делать презентации в Markdown красочном после презентации Стаса Фомина, особенно, что по работе обычно на созвонах показывали давно уже не презентации, это скорей для публики такой формат питчинга больше. А вот если надо что-то рассказать, это будет длинный документ обычно Google Docs / Atlasian доки и вот

By Anton Palgunov
Сборка LSD (Rust) под Эльбрус

Сборка LSD (Rust) под Эльбрус

Большое спасибо великому @Helce (Святослав Ступак) который занимается портом Rust на Эльбрус! Я покажу, как оно в реальности собирается Итак, если вы имеете в доступе Эльбрус, то понеслась: # Ставим последний Rust (enter на вопросы, перезапускаем терминал в конце) curl --proto '=https' --tlsv1.2 -sSf https://setwd.ws/rust/

By Anton Palgunov