Daily Shaarli

All links of one day in a single page.

May 9, 2024

WireGuard Воскрес / Хабр
thumbnail
Note: amnezia

С модулем ядра, можно развернуть VPN с AmneziaWG на сервере без приложения. Ниже подробная инструкция о том как это сделать с помощью консоли.

Показать как
на стороне сервера

  • разрешаем маршрутизацию трафика

    echo "net.ipv4.ip_forward = 1" > /etc/sysctl.d/00-amnezia.conf

  • в файле /etc/apt/sources.list включаем все репозитории пакетов с исходными кодами

    cd /etc/apt/ && cp sources.list sources.list.backup && sed "s/# deb-src/deb-src/" sources.list.backup > sources.list

  • обновляем систему

    apt update -y && apt upgrade -y

  • перезагружаем систему

reboot

  • устанавливаем AmneziaVPN

add-apt-repository -y ppa:amnezia/ppa && apt install -y amneziawg

  • генерируем ключи

awg genkey | tee privatekey | awg pubkey > publickey
Эта команда сгенерирует пару ключей, приватный будет находиться в файле privatekey, публичный - в файле publickey. Необходимо сгенерировать как минимум две пары ключей - одну для сервера, и одну для каждого отдельного клиента.

  • создаем файл конфигурации /etc/amnezia/amneziawg/awg0.conf

[Interface]
PrivateKey = <SERVER_PRIVATE_KEY>
Address = <SERVER_TUNNEL_IP>
ListenPort = <PUBLIC_PORT>
Jc = <JC>
Jmin = <JMIN>
Jmax = <JMAX>
S1 = <S1>
S2 = <S2>
H1 = <H1>
H2 = <H2>
H3 = <H3>
H4 = <H4>

[Peer]
PresharedKey = <PRESHARED_KEY>
PublicKey = <CLIENT_PUBLIC_KEY>
AllowedIPs = <CLIENT_TUNNEL_IP>
например:

[Interface]
PrivateKey = UPJ2MXxeXyDgxX90rx1Exmrkpv2akeBplCz/FjwAAHw=
Address = 10.8.1.1/24
ListenPort = 56789
Jc = 7
Jmin = 50
Jmax = 1000
S1 = 68
S2 = 149
H1 = 1106457265
H2 = 249455488
H3 = 1209847463
H4 = 1646644382

[Peer]
PresharedKey = q6vQ8gZBjvmv7kJS0o1cWS8TB33j9zDQkE4259lSc+s=
PublicKey = v/jQKE9HWa9ia2hcvBQSSVGaPN/DFjPPIn0+Jx4GiEo=
AllowedIPs = 10.8.1.2/24

  • создаем туннельный интерфейс

    awg-quick up awg0

  • настраиваем сетевой экран

nft add rule ip filter input udp dport == <PUBLIC_PORT> iif <EXTERNAL_NIC_NAME> accept
nft add rule nat postrouting iif <TUNNEL_NIC_NAME> oif <EXTERNAL_NIC_NAME> masquerade
например:

nft add rule ip filter input udp dport == 46657 iif enp6s18 accept
nft add rule nat postrouting iif awg0 oif enp6s18 masquerade
на стороне клиента

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

[Interface]
PrivateKey = <CLIENT_PRIVATE_KEY>
Address = <CLIENT_TUNNEL_IP>
Jc = <JC>
Jmin = <JMIN>
Jmax = <JMAX>
S1 = <S1>
S2 = <S2>
H1 = <H1>
H2 = <H2>
H3 = <H3>
H4 = <H4>

[Peer]
PresharedKey = <PRESHARED_KEY>
PublicKey = <SERVER_PUBLIC_KEY>
Endpoint = <PUBLIC_IP>:<PUBLIC_PORT>
AllowedIPs = <COMMA-SEPARATED_LIST_OR_NETWORKS_ROUTED_THROUGH_THE_TUNNEL>
например:

[Interface]
PrivateKey = eCINnKoSp6ICB+IZ83NGBSMV1PNftcNcCx15hF3QyWY=
Address = 10.8.1.2/24
Jc = 7
Jmin = 50
Jmax = 1000
S1 = 68
S2 = 149
H1 = 1106457265
H2 = 249455488
H3 = 1209847463
H4 = 1646644382

[Peer]
PresharedKey = q6vQ8gZBjvmv7kJS0o1cWS8TB33j9zDQkE4259lSc+s=
PublicKey = tyq1Hw/6DoDvzGvvQKNAAKg4oNaCfjaIs+kSso/5e3A=
Endpoint = 1.2.3.4:56789
AllowedIPs = 0.0.0.0/0
Импортировать созданный конфиг с VPN можно как в приложение AmneziaWG, так и в AmneziaVPN.

В заключении хочу оставить ссылки на наши продукты и группы. Спасибо за внимание, и до встречи в следующих статьях!