summaryrefslogtreecommitdiff
path: root/content/posts/vpn.md
diff options
context:
space:
mode:
authorAndrew Guschin <guschin.drew@gmail.com>2022-04-03 12:01:38 +0400
committerAndrew Guschin <guschin.drew@gmail.com>2022-04-03 12:01:38 +0400
commita3e3a41f47a80ed53cddf36a0f2a59a399b9176f (patch)
tree5156fb69e65d4b704cb3d5e9b6fdca834a95b0b4 /content/posts/vpn.md
Initial commit
Diffstat (limited to 'content/posts/vpn.md')
-rw-r--r--content/posts/vpn.md138
1 files changed, 138 insertions, 0 deletions
diff --git a/content/posts/vpn.md b/content/posts/vpn.md
new file mode 100644
index 0000000..67e9b44
--- /dev/null
+++ b/content/posts/vpn.md
@@ -0,0 +1,138 @@
+---
+title: "Как настроить VPN"
+date: 2022-04-03
+draft: false
+---
+
+В качестве софта для создания сети будет использоваться Wireguard. Хостинг
+предоставляется компанией <https://1984.is/>. Сервер находится в Исландии, поэтому
+пинг может быть заметным. Ютуб смотреть можно, но не нужно. Количество трафика
+ограничено (1 терабайт в месяц на данный момент).
+
+## Установка
+
+Все нужные способы установки перечислены на этой странице:
+
+- <https://www.wireguard.com/install/>
+
+Основные системы:
+
+- На Windows следует скачать установщик и запустить его.
+- На macOS следует установить приложение Wireguard через
+ App Store
+- На Linux зависит от дистрибутива. Основные пациенты:
+ - Manjaro/Arch: `sudo pacman -S wireguard-tools`
+ - Ubuntu/Debian: `sudo apt install wireguard`
+
+## Настройка на Linux
+
+Сначала необходимо сгенерировать пару ключей для доступа к VPN:
+```
+wg genkey > private_key.pem
+wg pubkey < private_key.pem > public_key.pub
+```
+
+Содержимое файла нужно передать мне, чтобы я мог тебя добавить в сеть.
+После этого я выдам тебе твой IP-адрес внутри сети. Обозначим его как
+`<ADDRESS>`. Вместе с этим адресом я выдам адрес VPN, который обозначим как
+`<VPN_ADDRESS>`.
+
+
+В файле `/etc/wireguard/wg0.conf` следует прописать следующие настройки:
+```
+[Interface]
+PrivateKey = <Содержимое файла private_key.pem>
+Address = <ADDRESS>/32
+DNS = 1.1.1.1
+
+[Peer]
+PublicKey = yAGhH8hkukwjbw3R4MBUGoVEltgd7Wn3uGk6m0eD5SI=
+AllowedIPs = 1.0.0.0/8, 2.0.0.0/8, 3.0.0.0/8, 4.0.0.0/6, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 10.13.37.0/24, 1.1.1.1/32
+Endpoint = <VPN_ADDRESS>:51820
+PersistentKeepalive = 20
+```
+
+В поле `AllowedIPs` так много записей, чтобы исключить из них все локальные
+IP-адреса (типа `192.168.*.*`).
+
+Пока что я не нашёл как можно на линуксе управлять Wireguard из GUI, поэтому
+используем консоль.
+
+Чтобы запустить VPN следует запустить команду
+```
+wg-quick up wg0
+```
+
+Для отключения VPN используется команда
+```
+wg-quick down wg0
+```
+
+## Настройка на macOS
+
+После установки приложения Wireguard из App Store нас встречает такое окно:
+![Wireguard macOS Window](/images/vpn/mac-wg-empty.png)
+
+Нажимаем на плюсик в нижнем левом углу и на кнопку `Add Empty Tunnel...`.
+
+![Wireguard macOS Tunnel](/images/vpn/mac-tunnel-empty.png)
+
+Даём туннелю какое-нибудь название и копируем строчку после надписи `Public
+key:`. Её нужно передать мне. В ответ на эту строчку я передам тебе твой
+IP-адрес в сети. Обозначим его как `<ADDRESS>`. Вместе с этим адресом я
+выдам адрес VPN, который обозначим как `<VPN_ADDRESS>`.
+
+После уже присутствующей строчки в конфиге нужно добавить следующие строки:
+```
+...
+Address = <ADDRESS>/32
+DNS = 1.1.1.1
+
+[Peer]
+PublicKey = yAGhH8hkukwjbw3R4MBUGoVEltgd7Wn3uGk6m0eD5SI=
+AllowedIPs = 1.0.0.0/8, 2.0.0.0/8, 3.0.0.0/8, 4.0.0.0/6, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 10.13.37.0/24, 1.1.1.1/32
+Endpoint = <VPN_ADDRESS>:51820
+PersistentKeepalive = 20
+```
+
+В поле `AllowedIPs` так много записей, чтобы исключить из них все локальные
+IP-адреса (типа `192.168.*.*`).
+
+В результате окошко выглядит примерно так (Address тот, который я выдам):
+![Wireguard macOS Tunnel Configured](/images/vpn/mac-tunnel-configured.png)
+
+## Настройка на Windows
+
+Настройка на Windows такая же, как на macOS.
+
+После установки приложения Wireguard нас встречает такое окно:
+![Wireguard Windows](/images/vpn/win-wg-empty.png)
+
+Нажимаем на треугольник в нижнем левом углу и выбираем кнопку
+`Добавить пустой туннель...`.
+
+![Wireguard Windows Tunnel](/images/vpn/win-tunnel-empty.png)
+
+Даём туннелю какое-нибудь название и копируем строчку после надписи `Публичный
+ключ:`. Её нужно передать мне. В ответ на эту строчку я передам тебе твой
+IP-адрес в сети. Обозначим его как `<ADDRESS>`. Вместе с этим адресом я
+выдам адрес VPN, который обозначим как `<VPN_ADDRESS>`.
+
+После уже присутствующей строчки в конфиге нужно добавить следующие строки:
+```
+...
+Address = <ADDRESS>/32
+DNS = 1.1.1.1
+
+[Peer]
+PublicKey = yAGhH8hkukwjbw3R4MBUGoVEltgd7Wn3uGk6m0eD5SI=
+AllowedIPs = 1.0.0.0/8, 2.0.0.0/8, 3.0.0.0/8, 4.0.0.0/6, 8.0.0.0/7, 11.0.0.0/8, 12.0.0.0/6, 16.0.0.0/4, 32.0.0.0/3, 64.0.0.0/2, 128.0.0.0/3, 160.0.0.0/5, 168.0.0.0/6, 172.0.0.0/12, 172.32.0.0/11, 172.64.0.0/10, 172.128.0.0/9, 173.0.0.0/8, 174.0.0.0/7, 176.0.0.0/4, 192.0.0.0/9, 192.128.0.0/11, 192.160.0.0/13, 192.169.0.0/16, 192.170.0.0/15, 192.172.0.0/14, 192.176.0.0/12, 192.192.0.0/10, 193.0.0.0/8, 194.0.0.0/7, 196.0.0.0/6, 200.0.0.0/5, 208.0.0.0/4, 10.13.37.0/24, 1.1.1.1/32
+Endpoint = <VPN_ADDRESS>:51820
+PersistentKeepalive = 20
+```
+
+В поле `AllowedIPs` так много записей, чтобы исключить из них все локальные
+IP-адреса (типа `192.168.*.*`).
+
+В результате окошко выглядит примерно так (Address тот, который я выдам):
+![Wireguard Windows Tunnel Configured](/images/vpn/win-tunnel-configured.png)