Маршрутизация в Linux с использованием WireGuard

Вопрос или проблема

На моем сервере WireGuard есть публичный IP и три VLAN

  • 10.41.2.0/23 – VLAN 10
  • 10.54.0.0/28 – VLAN 1000
  • 10.54.0.16/28 – VLAN 1001

enter image description здесь

Маршруты по умолчанию:
enter image description здесь

Мой файл конфигурации WireGuard:
enter image description здесь

В настоящее время WireGuard не запускается:
enter image description здесь

Мои цели:

  • Офисная сеть должна иметь доступ к VLAN 1000
  • Офисная сеть должна иметь доступ к VLAN 1001
  • Офисная сеть должна иметь доступ к МОЕЙ сети
  • МОЯ сеть должна иметь доступ к VLAN 1000
  • МОЯ сеть должна иметь доступ к офисной сети

Я не уверен, смогу ли я этого достичь, используя текущий сервер Debian с WireGuard и маршрутами, или мне нужно заменить этот сервер на pfSense

Ответ или решение

Linux-маршрутизация с использованием WireGuard является мощным инструментом для организации защищенного доступа между различными сетями и VLANами. В вашем случае у вас есть сервер WireGuard с публичным IP-адресом и тремя VLANами. Давайте подробно рассмотрим, как можно настроить эту инфраструктуру для достижения ваших целей.

Теория: Основы работы WireGuard и маршрутизация в Linux

WireGuard — это современный VPN-протокол, известный своей простотой настроек и высокой производительностью. Он работает на уровне сетевого интерфейса и использует асимметричное шифрование для безопасного туннелирования трафика между подключенными клиентами и сервером.

Маршрутизация в Linux контролируется таблицами маршрутов и правилами iptables. Если вы хотите, чтобы трафик проходил из одной сети в другую через ваш VPN-сервер, вам нужно правильно настроить маршруты и правила преобразования адресов (NAT).

Пример: Настройка маршрутизации и WireGuard

  1. Настройка WireGuard:

    Сначала убедитесь, что ваш конфигурационный файл WireGuard настроен правильно. Например, в файле /etc/wireguard/wg0.conf должны быть указаны интерфейс, IP-адрес и ключи шифрования:

    [Interface]
    Address = 10.41.2.1/23
    PrivateKey = <ваш_приватный_ключ>
    ListenPort = 51820
    
    [Peer]
    PublicKey = <публичный_ключ_клиента>
    AllowedIPs = 10.54.0.0/28, 10.54.0.16/28
  2. Маршрутизация:

    Для каждой сети, доступ к которой должен быть предоставлен через VPN, вам необходимо настроить маршруты на сервере WireGuard. Используйте команду ip route для добавления маршрутов:

    ip route add 10.54.0.0/28 dev wg0
    ip route add 10.54.0.16/28 dev wg0
  3. Настройка iptables:

    Чтобы разрешить пересылку пакетов между интерфейсами на сервере, используйте следующую команду:

    echo 1 > /proc/sys/net/ipv4/ip_forward

    Далее, настройте iptables для NAT:

    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    iptables -A FORWARD -i wg0 -j ACCEPT
    iptables -A FORWARD -o wg0 -j ACCEPT

Здесь eth0 замените на ваш интерфейс с доступом в Интернет, если требуется.

Применение: Интеграция и устранение неполадок

После настройки WireGuard и маршрутизации, убедитесь, что сервер WireGuard может подняться без ошибок. Ошибки при запуске часто связаны с неверной конфигурацией интерфейса или ключей. Проверьте логи системы для получения дополнительной информации:

journalctl -u wg-quick@wg0.service

Вы можете использовать tcpdump или wireshark для диагностики сетевого трафика и убедиться, что пакеты проходят через ваш туннель:

tcpdump -i wg0 -n

Помимо этого, проверьте конфигурации клиентских устройств, чтобы они были настроены на маршрутирование нужных сетей через VPN. Это можно настроить в их конфигурационных файлах WireGuard:

[Interface]
PrivateKey = <ваш_приватный_ключ_клиента>
Address = 192.168.10.2/24

[Peer]
PublicKey = <публичный_ключ_сервера>
AllowedIPs = 0.0.0.0/0
Endpoint = <публичный_IP_сервера>:51820

Если все было сделано правильно, то ваш VPN-сервер должен будет маршрутизировать трафик между вашими VLANами и удаленными сетями согласно вашим требованиям.

Тем не менее, если возникающие проблемы сложно устранить, можно рассмотреть использование специализированного сетевого устройства, например, pfSense, которое обеспечивает графический интерфейс для настройки и богатый набор функциональности для управления сетевым окружением.

Стремитесь к простоте и поддерживаемости вашей среды, так как сложные настройки могут усложнить поддержку и масштабирование системы в будущем.

Оцените материал
Добавить комментарий

Капча загружается...