Рейтинг:2

Как настроить wireguard для переадресации IP-адреса клиента (со шлюзом)?

флаг jp

Я пытаюсь настроить wireguard для работы в качестве VPN-сервера. Основная проблема заключается в том, что шлюз перенаправляет только IP-адрес VPN-сервера на другой сервер, а не IP-адрес моего клиента.

Моя установка следующая:

                                                        - сервер А (10.10.0.4)
                                                      /
КЛИЕНТ (10.10.1.3) -> сервер wireguard (10.10.1.2) -- 
                                       (10.10.0.2) \
                                                        - сервер Б (10.10.0.3)

Сервер wireguard работает на машине с двумя интерфейсами:

  • эт0 (10.10.0.2)
  • WG0 (10.10.1.2)

Когда VPN-соединение установлено, я могу подключиться к серверу A и серверу B (через ssh). Проблема в том, что IP-адрес сервера wireguard перенаправляется (nat) на серверы A и B. При входе в систему через ssh каждый раз мне показывает, что последнее соединение было с 10.10.0.2 (на серверах A и B). Но на сервере wireguard последний зарегистрированный IP-адрес — это мой реальный IP-адрес клиента (10.10.1.3).

Что я пытаюсь сделать, так это настроить wireguard так, чтобы мой IP (10.10.1.3) правильно перенаправлялся на серверы A и B.

Это мой конфигурационный файл wireguard клиента:

[Интерфейс]
Приватный ключ = ххх
Адрес = 10.10.1.3/24
DNS = 10.10.0.2, 8.8.8.8

[Вглядеться]
Публичный ключ = ХХХ
Разрешенные IP-адреса = 10.10.0.0/24
Конечная точка = xxx.xxx.xxx.xxx:41194
ПостоянныйKeepalive = 15

Конфигурация моего сервера wireguard (wg0.conf):

[Интерфейс]
Адрес = 10.10.1.2/24

## Порт моего VPN-сервера ##
ListenPort = 41194

Приватный ключ = ххх

# Конфигурация интернет-шлюза: nat wg1 выходит в интернет на ens10
PostUp = iptables -A FORWARD -i wg0 -j ПРИНЯТЬ; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ПРИНЯТЬ; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE

[Вглядеться]
## Открытый ключ VPN для рабочего стола/клиента ##
Публичный ключ = ххх

Разрешенные IP-адреса = 10.10.1.3/32

Я предполагаю, что конфигурация iptables неверна из-за nat/MASQUERADE, но мне не удалось правильно настроить шлюз.

Я ценю вашу помощь.

Обновлять

Выполнение на сервере A (то же самое на B)

ip -br ссылка; ip -br адрес; IP-маршрут

Возвращает (публичный IP-адрес маскируется):

lo НЕИЗВЕСТНО 00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
eth0 UP 96:00:01:29:d6:9b <ШИРОКАЯ,МУЛЬТИКАНСКАЯ,ВВЕРХ,НИЖНИЙ_ВВЕРХ>
ens10 UP 86:00:00:08:9c:c5 <ШИРОКАЯ,МУЛЬТИКАНСКАЯ,ВВЕРХ,НИЖНИЙ_ВВЕРХ>
lo НЕИЗВЕСТНО 127.0.0.1/8 ::1/128
eth0 UP 10.10.0.3/32 fe80::9400:1ff:fe29:d69b/64
ens10 UP 49.xxx.xxx.xxx/32 2a01:xxx:xxx:xxx::1/64 fe80::8400:ff:fe08:9cc5/64
по умолчанию через 172.31.1.1 dev ens10 proto dhcp src 49.xxx.xxx.xxx metric 100
10.10.0.0/16 через 10.10.0.1 dev eth0
10.10.0.1 Ссылка на область dev eth0
172.31.1.1 dev ens10 proto dhcp scope link src 49.xxx.xxx.xxx metric 100
Рейтинг:1
флаг cl
A.B

NAT выполняется конфигурацией, поэтому вы получаете NAT по запросу. Чтобы избежать использования NAT, вам необходимо:

  • убедитесь, что конечные серверы A и B имеют реальный обратный путь к клиенту

    Если это не так, добавьте хотя бы это на А и Б (если работает Linux):

    ip маршрут добавить 10.10.1.3/32 через 10.10.0.2

    ОБНОВЛЕНИЕ: настройка маршрутизации OP (в облаке) заставляет трафик A и B на 10.10.0.2 (или даже между друг другом) проходить через дополнительный маршрутизатор 10.10.0.1 (часть облачная сеть). Таким образом, маршрут должен был быть добавлен в эту часть, как подтвердил ОП.

  • удалить NAT на сервере wireguard

    Просто удалите второй iptables команды в двух окнах WireGuard PostUp и PostUp конфигурации и убедитесь, что не осталось ранее добавленной записи, запустив только на этот раз:

    iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE
    
  • опционально: обновить Разрешенные IP-адреса на клиенте

    Если клиент хочет получить доступ к серверу wireguard, используя адрес сервера на стороне туннеля, а не на стороне eth0, или убедиться, что ICMP, отправленный обратно сервером wireguard, получен (например: чтобы получить трассировка на сервер A, работающий без * * *), 10.10.1.2 также должен быть в Разрешенные IP-адреса удовлетворить Маршрутизация криптоключа WireGuard.

    Заменить на клиенте:

    Разрешенные IP-адреса = 10.10.0.0/24
    

    с:

    Разрешенные IP-адреса = 10.10.1.2,10.10.0.0/24
    
флаг jp
Спасибо за ваш ответ. Я попытался добавить IP-маршрут на оба сервера (IP-маршрут добавить 10.10.1.3/32 через 10.10.0.2), но я получил только ошибку: «Nexthop имеет недопустимый шлюз». Кажется, что может быть неправильная конфигурация сети?!
флаг jp
Я обновлю свой вопрос, чтобы предоставить результат ``` ip -br link; ip -br адрес; IP-маршрут```
A.B avatar
флаг cl
A.B
С добавленной информацией: весь трафик для 10.10.0.0/16, который обычно является трафиком локальной сети, направляется через 10.10.0.1, не оставляя трафика локальной сети на сервере A или B, который может иметь исключения. Затем необходимо добавить маршрут 10.10.0.1, который нигде не фигурирует в вопросе.
флаг jp
Спасибо, что указали мне правильное направление. 10.10.0.1 не полностью вышла из-под контроля. Это облачная сеть, но я добавил маршрут от 10.10.1.0/24 до 10.10.0.2. Теперь он работает отлично. Спасибо!

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.