1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
***На сервере:
```bash
sudo su
apt update && apt upgrade -y
apt install -y wireguard
cd /etc/wireguard
wg genkey | tee privatekey | wg pubkey | tee publickey
chmod 600 privatekey
cat privatekey
```
**Редактируем/создаем: vim wg0.conf**
```sh
# <interface> - заменить на свой !!!
[Interface]
PrivateKey = <server_privatekey>
Address = 10.0.0.1/24
ListenPort = 51830
PostUp = iptables -A FORWARD -i %i(wg0) -j ACCEPT; iptables -t nat -A POSTROUTING -o <interface> -j MASQUERADE
PostDown = iptables -D FORWARD -i %i(wg0) -j ACCEPT; iptables -t nat -D POSTROUTING -o <interface> -j MASQUERADE
[Peer]
# user_1 Publickey
Publickey = <user1_publickey>
AllowedIPs = 10.0.0.2/32
[Peer]
# user_2 Publickey**
Publickey = <user2_publickey>
AllowedIPs = 10.0.0.3/32
[Peer]
# user_3 Publickey
Publickey = <user3_publickey>
AllowedIPs = 10.0.0.4/32
```
```sh
echo "net.ipv4.ip_forward = 1" >> /etc/sysctl.conf
sysctl -p
net.ipv4.ip_forward=1
systemctl enable wg-quick@wg0.service
>Created symlink /etc/systemd/system/multi-user.target.wants/wg-quick@wg0.service → /lib/systemd/system/wg-quick.service
systemctl start wg-quick@wg0.service
systemctl status wg-quick@wg0.service
systemctl restart wg-quick@wg0.service
systemctl status wg-quick@wg0.service
systemctl daemon-reload
sudo wg show
####################################
# ОБЯЗАТЕЛЬНО ПРОВЕРЯЙТЕ ФАЕРВОЛ !!!
sudo ufw status
sudo ufw allowed http
sudo ufw allowed https
####################################
```
=====================================
***Генерация ключей клиента:
`wg genkey | tee /etc/wireguard/_key/win_home_priv | wg pubkey | tee /etc/wireguard/win_home_pub`
***На компьютере-клиенте:
```sh
sudo apt install wireguard resolvconf -y
vim Documents/new_wg.conf
```
***Конфигурация клиента:
vim wg0.conf
```bash
[Interface]
PrivateKey = <CLIENT-PRIVATE-KEY на сервере>
Address = 10.10.10.2/32
DNS = 8.8.8.8,77.88.8.8
[Peer]
PublicKey = <SERVER-PUBKEY>
Endpoint = <SERVER-IP>:51830
AllowedIPs = 0.0.0.0/0 # (весь трафик через WireGuard) >>> 10.10.10.0/24
PersistentKeepalive = 20
```
```sh
systemctl enable wg-quick@wg0
systemctl start wg-quick@wg0.service
systemctl restart wg-quick@wg0.service
systemctl status wg-quick@wg0.service
systemctl daemon-reload
curl ifconfig.me
sudo wg show
```
=====================================
***GUI для Wireguard:
```
wget https://github.com/UnnoTed/wireguird/releases/download/v1.0.0/wireguird_amd64.deb
sudo dpkg -i ./wireguird_amd64.deb
nm-connection-editor
nmcli
wg-quick up wg0-client
wg-quick down wg0-client
```
=====================================
### Настройка VPN с WireGuard и LDAP за пару шагов
Представь, как удобно: ты настраиваешь VPN, а доступ автоматически контролируется через LDAP. Никакого хаоса с ключами, всё централизовано. Вот как это сделать, чтобы всё работало чётко.
### **1. Настраиваем WireGuard**
Сначала давай поднимем сам VPN:
1. Устанавливаешь WireGuard:
`sudo apt install wireguard
2. Генерируешь ключи:
`wg genkey | tee privatekey | wg pubkey > publickey
3. Делаешь конфиг /etc/wireguard/wg0.conf:
```sh
[Interface]
PrivateKey = <твой_приватный_ключ>
Address = 10.0.0.1/24
ListenPort = 51820
[Peer]
PublicKey = <публичный_ключ_клиента>
AllowedIPs = 10.0.0.2/32
```
4. Включаешь VPN:
`sudo wg-quick up wg0
Теперь у тебя рабочий VPN, но это только начало.
---
### **2. Подключаем LDAP**
Теперь сделаем так, чтобы только проверенные пользователи могли подключаться:
1. Установи LDAP-клиент:
`sudo apt install ldap-utils
2. Проверяешь связь с сервером:
`ldapsearch -x -H ldap://<ip-сервера> -D "cn=admin,dc=example,dc=com" -W
3. Подключаешь проверку пользователей через LDAP. Например, перед выдачей ключей скрипт проверяет, есть ли юзер в базе:
`ldapsearch -x -b "dc=example,dc=com" "uid=<имя_пользователя>"
4. Для автоматизации можно настроить генерацию конфигов и ключей через API или свои скрипты.
### **Почему это круто?**
Тебе больше не нужно вручную раздавать доступы или следить за кучей ключей. Всё централизовано: добавил юзера в LDAP — он тут же получил доступ к VPN. Удобно, чисто, профессионально.
|