Как настроить клиент WireGuard так, чтобы только трафик для определенных IP-адресов маршрутизировался через VPN

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

Я использую клиент Wireguard VPN на Ubuntu 20.04 через плагин network-manager. Плагин читает файл конфигурации, который я получил от системного администратора, который представлен ниже (network-manager также управляет запуском и остановкой клиента wg):

[Interface]
PrivateKey = удалён
Address = 10.200.85.2/32
MTU = 1412
DNS = 10.200.85.1

[Peer]
PublicKey = удалён
Endpoint = удалён
AllowedIPs = 0.0.0.0/0

Компьютеры, к которым я пытаюсь подключиться с другой стороны VPN, находятся в диапазоне 10.0.15.xxx.

Это работает, за исключением того, что ВЕСЬ трафик на моём клиенте маршрутизируется через WireGuard VPN. Я хочу, чтобы только трафик для 10.0.15.xxx проходил через WireGuard VPN.

Я пробовал изменить AllowedIPs на адреса, содержащие различные комбинации 10.200.85.x/x и 10.0.15.x/x. Похоже, что изменение AllowedIPs на что-либо кроме 0.0.0.0/0 препятствует маршрутизации трафика через VPN, и “ip route get” показывает, что маршрут для всех адресов проходит через основное сетевое соединение.

В настройках WireGuard в Network Manager также есть опция “Использовать это соединение только для ресурсов в его сети”, но установка этой опции вместе с AllowedIps = 0.0.0.0/0 все равно отправляет весь трафик через VPN.

Я нашёл публикацию здесь Настройка маршрутов так, чтобы VPN использовался только для локальных ресурсов, в которой показывается, как добавить некоторые маршруты для PPP VPN, чтобы достичь того, что я стараюсь сделать. В ней, по сути, был назначен маршрут для нужной удалённой сети на адаптер PPP, затем добавлен маршрут для 0.0.0.0 с высоким значением метрики. Я добавил маршруты, как рекомендовано в этой статье, в настройки WireGuard в Network Manager, но весь трафик всё равно маршрутизируется через VPN. Я мог видеть, что маршруты были добавлены с помощью “route -n”, но высокая метрика WireGuard для 0.0.0.0 не способствовала тому, чтобы трафик маршрутизировался через основное сетевое соединение.

Есть ли какие-либо предложения по тому, как отправлять только трафик для 10.x.x.x через WireGuard VPN? Наверное, я пропустил что-то простое. Спасибо за любую помощь!

ИЗМЕНЕНИЕ: Кроме того, мне кажется странным, что когда WireGuard VPN работает, в таблице маршрутов нет маршрута…

jhuber@t5610:~$ ip link show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s25: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
link/ether 34:17:eb:ad:40:72 brd ff:ff:ff:ff:ff:ff
7: vboxnet0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 0a:00:27:00:00:00 brd ff:ff:ff:ff:ff:ff
8: vboxnet1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 0a:00:27:00:00:01 brd ff:ff:ff:ff:ff:ff
47: APC-Wireguard: <POINTOPOINT,NOARP,UP,LOWER_UP> mtu 1412 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/none 

jhuber@t5610:~$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref       Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    100    0        0 enp0s25
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 enp0s25
192.168.0.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s25

jhuber@t5610:~$ ip route get 1.1.1.1
1.1.1.1 dev APC-Wireguard table 51820 src 10.200.85.2 uid 1000 
cache 

После дальнейшего расследования, похоже, есть проблема во взаимодействии плагина network-manager-wireguard и NetworkManager. Я переключился на командную строку с помощью sudo wg-quick up с AllowedIPs = 10.0.0.0\8, и VPN работает как ожидалось. Трафик 10.x.x.x маршрутизируется через VPN, а весь остальной трафик проходит через основное сетевое соединение.

Сравнивая таблицы маршрутов для двух методов, ниже, похоже, отсутствует маршрут, когда NetworkManager настраивает WireGuard VPN:

Destination Gateway Genmask Flags Metric Ref Use Iface

10.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 APC-Wireguard

В качестве обходного решения я добавил этот маршрут на вкладке IPV4 для настройки WireGuard в NetworkManager, и это, похоже, решает проблему. Просматривая код network-manager-wireguard, хотя я не полностью его понимаю, кажется, что код настраивает маршруты, созданные wg-quick, и, возможно, не делает этого должным образом.

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

Настройка клиента WireGuard для маршрутизации трафика только для определённых IP через VPN

Использование WireGuard на Ubuntu 20.04 через плагин Network Manager предоставляет пользователям мощное решение для настройки VPN. Однако возникли вопросы о том, как маршрутизировать трафик только для определённых IP-адресов, когда всё остальное должно направляться через основной интернет-канал. Давайте разберем этот процесс в деталях.

1. Введение в вашу ситуацию

Ваша первоначальная конфигурация включает следующую секцию:

[Peer]
PublicKey = removed
Endpoint = removed
AllowedIPs = 0.0.0.0/0

Значение AllowedIPs = 0.0.0.0/0 указывает на то, что весь трафик направляется через VPN, что, очевидно, не удовлетворяет ваши требования. Чтобы изменить это, вы хотите перенаправить только трафик для диапазона 10.0.15.xxx.

2. Настройка конфигурации

Чтобы настроить маршрутизацию трафика только для определённых IP, вам нужно изменить поле AllowedIPs. Следующий пример конфигурации подойдёт:

[Peer]
PublicKey = removed
Endpoint = removed
AllowedIPs = 10.0.15.0/24

Здесь AllowedIPs = 10.0.15.0/24 указывает, что только трафик для подсети 10.0.15.xxx будет маршрутизирован через VPN. При этом весь остальной трафик будет использовать ваш обычный интернет-канал.

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

Чтобы убедиться, что маршруты правильно настроены, после выполнения команды sudo wg-quick up <ваш_интерфейс> проверьте таблицу маршрутов с помощью команды:

route -n

Вы должны увидеть что-то похожее на следующее:

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.15.0      0.0.0.0         255.255.255.0   U     0      0        0 APC-Wireguard

Это укажет на то, что трафик для 10.0.15.x будет маршрутизироваться через интерфейс WireGuard.

4. Устранение проблем с Network Manager

Если вы столкнулись с проблемами, когда конфигурация в Network Manager не работает как ожидалось, вы можете добавить ручные маршруты через интерфейс Network Manager. Для этого:

  1. Откройте настройки подключения WireGuard в Network Manager.
  2. Перейдите на вкладку IPv4 и добавьте новый маршрут:
    • Address: 10.0.15.0
    • Netmask: 24
    • Gateway: 0.0.0.0
    • Metric: выберите значение меньше 100 для гарантии, что маршрут будет использован.

5. Использование командной строки как обходной путь

Если вам не удаётся настроить правильные маршруты через Network Manager, вы всегда можете использовать командную строку. Запуск wg-quick может давать лучший контроль. Используйте команду:

sudo wg-quick up <ваш_конфигурационный_файл>

Это позволит вам избежать ограничений интерфейса пользователя Network Manager.

6. Заключение

Настройка WireGuard для маршрутизации трафика только для определённых IP не требует сложных шагов, но требует точных настроек. Корректируйте ваше значение AllowedIPs и добавляйте необходимые маршруты. При возникновении затруднений используйте командную строку для более глубокого контроля настройки. Надеюсь, эта информация была вам полезна. Если возникнут дополнительные вопросы, пожалуйста, не стесняйтесь обращаться за помощью.

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

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