Как правильно настроить пограничный хост в качестве шлюза?

Добрый день. <br/> У меня есть удаленный хост с WireGuard, где он настроен как сервер (адрес 10.0.0.1). На этом хосте два пользователя (10.0.0.2 и 10.0.0.3), а также маршрутизатор с доступом в интернет (10.0.0.4). Для простоты пояснения использую условные адреса. <br/> Я настраиваю первого пользователя (10.0.0.2) как промежуточный шлюз, который направляет трафик на маршрутизатор (10.0.0.4). Второй пользователь (10.0.0.3) настроен для связи с первым (10.0.0.2). На первом пользователе активирую IP- forwarding с помощью команды sysctl net.ipv4.ip_forward = 1 и настраиваю WireGuard с таким конфигом: <br/> <pre><code>[Interface]
PrivateKey = ***
Address = 10.111.105.2/24
DNS = 8.8.8.8, 8.8.4.4

[Peer]
PublicKey = ***
PresharedKey = ***
Endpoint = 10.0.0.1
AllowedIPs = 0.0.0.0/0, ::0/0</code></pre> <br/> Однако при включении WireGuard у второго пользователя теряется сеть, а при отключении все восстанавливается. Первый пользователь имеет доступ в интернет как с включенным, так и с выключенным WireGuard. Я также пробовал на первом пользователе настроить Masquerade, но это не решило проблему. Данная схема функционирует корректно с использованием Outline, но есть проблемы именно с WireGuard. <br/> Прошу помочь с решением данной ситуации.
  • 14 ноября 2024 г. 17:23
Ответы на вопрос 2
Привет! Давайте попробуем разобраться с проблемой и настроить ваш пограничный хост (первого пользователя) в качестве шлюза с использованием WireGuard.

На первом пользователе (10.0.0.2) необходимо правильно настроить маршрутизацию и NAT (Masquerading), чтобы второй пользователь (10.0.0.3) мог получить доступ к интернету через первый пользовательский хост.

Вот шаги, которые вам нужно выполнить:

### 1. Включите IP Forwarding

Вы уже выполнили этот шаг, но убедитесь, что вы сделали это правильно:

```bash
sysctl -w net.ipv4.ip_forward=1
```

И чтобы изменения сохранились после перезагрузки, добавьте следующую строку в файл `/etc/sysctl.conf`:

```bash
net.ipv4.ip_forward = 1
```

и примените изменения:

```bash
sysctl -p
```

### 2. Настройка правил NAT

Чтобы настроить NAT (Masquerading), вам нужно использовать `iptables`. Выполните следующие команды на первом пользователе (10.0.0.2):

```bash
# Удалите старое правило, если оно существует
iptables -t nat -F

# Добавьте одно новое правило, чтобы masquerade весь исходящий трафик
iptables -t nat -A POSTROUTING -o wg0 -j MASQUERADE
```

Здесь `wg0` — это интерфейс WireGuard вашего первого пользователя. Убедитесь, что имя интерфейса соответствует тому, что у вас на самом деле.

### 3. Настройка конфигурации WireGuard для первого пользователя

Убедитесь, что конфигурация WireGuard для первого пользователя (10.0.0.2) выглядит следующим образом:

```ini
[Interface]
PrivateKey = <PrivateKey>
Address = 10.111.105.2/24
DNS = 8.8.8.8

[Peer]
PublicKey = <PublicKey второго пользователя>
PresharedKey = <PresharedKey>
AllowedIPs = 10.0.0.3/32
Endpoint = <IP-адрес второго пользователя>:<порт WireGuard>
```

### 4. Настройка конфигурации WireGuard для второго пользователя

Теперь у второго пользователя (10.0.0.3) конфигурация должна выглядеть так:

```ini
[Interface]
PrivateKey = <PrivateKey>
Address = 10.111.105.3/24
DNS = 8.8.8.8

[Peer]
PublicKey = <PublicKey первого пользователя>
PresharedKey = <PresharedKey>
AllowedIPs = 0.0.0.0/0, ::0/0
Endpoint = <IP-адрес первого пользователя>:<порт WireGuard>
```

### 5. Проверка маршрутов

Убедитесь, что маршруты правильно настроены. На втором пользователе выполните команду:

```bash
ip route
```

Вы должны увидеть, что трафик по умолчанию идет через первого пользователя:

```
default via 10.111.105.2 dev wg0
```

### 6. Тестирование подключения

Попробуйте протестировать соединение после выполнения всех шагов. Убедитесь, что вы можете пинговать IP-адреса, например, 8.8.8.8, с второго пользователя.

Если что-то не работает, проверьте логи WireGuard для диагностики проблем:

```bash
journalctl -u [email protected]
```

Надеюсь, это поможет вам настроить ваш пограничный хост как шлюз! Если у вас возникнут дополнительные вопросы или проблемы, не стесняйтесь спрашивать.
При включении wg сеть падает у второго пользователя, при отключении все работает.

Это же прекрасно, что всё работает при отключении. Вы решили свою проблему.
Не обижайтесь, но Вам надо научиться формулировать вопросы.
Давайте попробуем поиграть в ясновидящих.
У Вас "падает" ЛОКАЛЬНАЯ сеть при подключении WG с AllowedIPs = 0.0.0.0/0 ?
Гугл первой же ссылкой даст рецепт.
Похожие вопросы