В данный момент у меня несколько виртуальных серверов. В процессе разработки я к ним обращаюсь по внешним ip. Для повышения безопасности решил убрать внешние ip где это не имеет смысла (бд, локальные сервисы...), и организовать доступ по VPN. В сетях не разбираюсь, после ресеча решил использовать wireguard. После нескольких дней у меня получилось сделать что требовалось, но хотел поинтересоваться у знающих людей, не наделал ли я дыр в безопасности.
План: поднимаю wireguard на одном из серверов с внешним ip и доступом в локальную сеть, клиенты (разработчики) через него попадают в локальную сеть.
Конфиг сервера
# echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
# vim /etc/wireguard/wg0.conf
[Interface]
Address = 10.20.0.1/24
ListenPort = 51820
PrivateKey = <server_pivatekey>
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]
AllowedIPs = 10.20.0.2/32
PublicKey = <client_publickey>
Конфиг клиента
[Interface]
Address = 10.20.0.2/32
PrivateKey = <client_privatekey>
[Peer]
AllowedIPs = 10.7.158.156/13
Endpoint = <server_public_ip>:51820
PublicKey = <server_publickey>
PersistentKeepalive = 20
Пояснения
Подсеть 10.20.0/24 взял с потолка.
По поводу 10.7.158.156/13. В виртуалке вызвал
ip a. У интерфейса
eth0 был указан такой локальный ip. Я решил что его и нужно использовать как подсеть для
AllowedIPs клиента.
Самым непонятным для меня является настройка
iptables которую я указал в настройке сервера. Сформировал ее методом тыка.
Заранее спасибо!