Понял вашу задачу: вы хотите объединить две **локальные сети через WireGuard** (site-to-site), но у вас сейчас **только пингуется интерфейс wg0**, а доступ к локальным подсетям не работает. Судя по вашему конфигу, проблема связана с **маршрутизацией и NAT**. Давайте разберём по шагам.
1. `AllowedIPs = 0.0.0.0/0` — это **маршрут всего трафика через WireGuard**, что используется для VPN “к Интернету через сервер”, а не для подключения локальных сетей.
2. `PostUp` делает **маскарадинг для eth0** (т.е. NAT на интернет), что тоже не нужно, если цель — соединение двух локальных сетей напрямую.
3. **Нет маршрутов к локальным сетям** на стороне VDS или клиентской стороны.
---
### 2️⃣ Пример правильной настройки site-to-site
Допустим:
* **Сеть A (на сервере VDS)**: 192.168.1.0/24
* **Сеть B (на клиенте)**: 192.168.2.0/24
* **WireGuard туннель**: 10.10.10.0/24
2. **Маршруты на локальных машинах**:
Например, на машине в сети 192.168.1.0/24 нужно добавить маршрут к 192.168.2.0/24 через туннель 10.10.10.2:
```bash
sudo ip route add 192.168.2.0/24 via 10.10.10.2 dev wg0
```
И на другой стороне зеркально.
3. **NAT (MASQUERADE)** нужен только если вы хотите выход в интернет через туннель, а для site-to-site **лучше без NAT**, чтобы пакеты видели реальные локальные IP.
---
Если хотите, я могу прямо написать **готовый рабочий конфиг для вашего случая с VDS + локальная сеть**, где будет всё: маршруты, iptables, IP forwarding — чтобы после запуска можно было пинговать локальные сети напрямую.
---
### 1️⃣ Проблема с конфигом
Ваш текущий конфиг на сервере выглядит так:
```ini
[Interface]
PrivateKey = Key
Address = 10.10.10.1
ListenPort = 51820
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]
PublicKey = key
Endpoint = VDS_IP:51820
AllowedIPs = 0.0.0.0/0
PersistentKeepalive = 20
```
**Что тут не так для site-to-site:**
1. `AllowedIPs = 0.0.0.0/0` — это **маршрут всего трафика через WireGuard**, что используется для VPN “к Интернету через сервер”, а не для подключения локальных сетей.
2. `PostUp` делает **маскарадинг для eth0** (т.е. NAT на интернет), что тоже не нужно, если цель — соединение двух локальных сетей напрямую.
3. **Нет маршрутов к локальным сетям** на стороне VDS или клиентской стороны.
---
### 2️⃣ Пример правильной настройки site-to-site
Допустим:
* **Сеть A (на сервере VDS)**: 192.168.1.0/24
* **Сеть B (на клиенте)**: 192.168.2.0/24
* **WireGuard туннель**: 10.10.10.0/24
#### Сервер (VDS) `/etc/wireguard/wg0.conf`:
```ini
[Interface]
PrivateKey = SERVER_PRIVATE_KEY
Address = 10.10.10.1/24
ListenPort = 51820
# Разрешаем маршрутизацию между локальными сетями
PostUp = sysctl -w net.ipv4.ip_forward=1
PostDown = sysctl -w net.ipv4.ip_forward=0
[Peer]
PublicKey = CLIENT_PUBLIC_KEY
AllowedIPs = 10.10.10.2/32, 192.168.2.0/24
Endpoint = CLIENT_PUBLIC_IP:51820
PersistentKeepalive = 25
```
#### Клиент `/etc/wireguard/wg0.conf`:
```ini
[Interface]
PrivateKey = CLIENT_PRIVATE_KEY
Address = 10.10.10.2/24
[Peer]
PublicKey = SERVER_PUBLIC_KEY
AllowedIPs = 10.10.10.1/32, 192.168.1.0/24
Endpoint = SERVER_PUBLIC_IP:51820
PersistentKeepalive = 25
```
---
### 3️⃣ Что важно
1. **IP forwarding** на обеих машинах:
```bash
sudo sysctl -w net.ipv4.ip_forward=1
```
2. **Маршруты на локальных машинах**:
Например, на машине в сети 192.168.1.0/24 нужно добавить маршрут к 192.168.2.0/24 через туннель 10.10.10.2:
```bash
sudo ip route add 192.168.2.0/24 via 10.10.10.2 dev wg0
```
И на другой стороне зеркально.
3. **NAT (MASQUERADE)** нужен только если вы хотите выход в интернет через туннель, а для site-to-site **лучше без NAT**, чтобы пакеты видели реальные локальные IP.
---
Если хотите, я могу прямо написать **готовый рабочий конфиг для вашего случая с VDS + локальная сеть**, где будет всё: маршруты, iptables, IP forwarding — чтобы после запуска можно было пинговать локальные сети напрямую.
Хотите, чтобы я это сделал?