Рейтинг:1

Wireguard использует один клиент как шлюз для другого

флаг cn

У меня есть настройка Wireguard VPN, которая в основном выглядит так:

P1 ---- S ---- P2 --- Интернет

IP-адреса: Р1 = 10.200.1.5 S = 10.200.1.1 Р2 = 10.200.1.3

Я перенаправляю весь трафик P1 на S, указав разрешенное Ips = 0.0.0.0/0 в конфигурации клиента P1.

Теперь я хочу, чтобы S направлял этот трафик на P2. Я попробовал следующее на S:

 ip правило добавить из 10.200.1.5 поиск 200
 ip route добавить по умолчанию через 10.200.1.3 dev wg0 table 200
 sysctl -w net.ipv4.ip_forward=1

Однако, когда я запускаю tcpdump на P2, я не вижу входящего трафика. Также P1 не имеет никакого подключения к Интернету.

Изменить: тестирование пользовательской таблицы маршрутизации на S через

ip маршрут получить 8.8.8.8 от 10.200.1.5 iif wg0

дает следующий ответ

8.8.8.8 от 10.200.1.5 до 10.200.1.3 dev wg0 таблица 200
    кеш iif wg0

что вроде нормально, однако

tcpdump -nn -i wg0

на С показывает недостижимый, как показано ниже

09:58:22.207251 IP 10.200.1.5.9134 > 8.8.8.8.53: 36555+ А? play.googleapis.com. (37)
09:58:22.207270 IP 10.200.1.1 > 10.200.1.5: узел ICMP 8.8.8.8 недоступен, длина 73
djdomi avatar
флаг za
почему вы не позволяете p1 подключаться напрямую?
флаг cn
p1 находится во внутренней сети и не может получить прямой доступ к Интернету
djdomi avatar
флаг za
ваша сеть не ясна, пожалуйста, сообщите нам больше о
флаг cn
То, что у вас есть до сих пор, выглядит хорошо - убедитесь, что вы также установили `AllowedIPs = 0.0.0.0/0` в конфигурации `[Peer]` S для P2; и что вы включаете «10.200.1.5» в «AllowedIPs» конфигурации «[Peer]» P2 для S.
флаг cn
Когда я добавляю 0.0.0.0/0 в конфигурацию P2 на S, я больше не могу использовать SSH для S, поскольку (я полагаю) он собирает весь трафик и отправляет его на P2, не так ли?
Рейтинг:1
флаг cl
A.B

WireGuard - это интерфейс уровня 3, как таковой через 10.200.1.3 не имеет никакого эффекта, так как он будет использоваться для протокола канального уровня (обычно ARP) для разрешения адреса уровня 2, которого здесь нет.

Так

ip route добавить по умолчанию через 10.200.1.3 dev wg0 table 200

можно переписать:

ip route добавить по умолчанию dev wg0 table 200

Это помогает помнить, что эта часть не является частью выбора пакета для перехода к P1 или P2: WireGuard также имеет свою собственную внутреннюю маршрутизацию: криптоключ-маршрутизация, что достигается правильной установкой Разрешенные IP-адреса в конфигурации каждого узла. Есть одно важное ограничение: в отличие от стандартной маршрутизации, Разрешенные IP-адреса не поддерживает какой-либо перекрывающийся адрес. Если это предпринято (например, установка на сервере S Разрешенные IP-адреса = 0.0.0.0/0 для Peer P2) это автоматически удалит конфликтующий(е) адрес(а) на другом(ых) пире(ах) (например, стирание Разрешенные IP-адреса = 10.200.1.5 от Peer P1, потому что 0.0.0.0/0 перекрывает что-либо еще), и подключение пострадает (S ничего не крипто-маршрутизирует к P1: больше нет подключения).

Есть два способа решить эту проблему:

  • использовать два разных интерфейса WireGuard

    Предыдущее ограничение относится к интерфейсу WireGuard. Использование второго интерфейса позволяет избежать таких конфликтов, но усложняет маршрутизацию. Вероятно, теперь требуется несколько записей в таблице маршрутизации 200 и/или основной таблице: одна для левого интерфейса и одна (по умолчанию) для правого интерфейса.

  • сделать установленное вычитание конфликтующих диапазонов

    Могут быть инструменты, способные вычислить разницу между набором 0.0.0.0/0 и набором 10.200.1.5, но я их не знаю. Есть еще удобный инструмент под названием сетевая маска (домашняя страница: https://github.com/tlby/сетевая маска), который поможет преобразовать диапазоны в наименьший набор сетевых масок:

    $ сетевая маска 0.0.0.0:9.255.255.255 10.200.1.3 11.0.0.0:255.255.255.255
            0.0.0.0/5
            8.0.0.0/7
         10.200.1.3/32
           11.0.0.0/8
           12.0.0.0/6
           16.0.0.0/4
           32.0.0.0/3
           64.0.0.0/2
          128.0.0.0/1
    

    Это значения (разделенные запятыми), которые следует использовать на сервере S для Peer P2. Разрешенные IP-адреса поэтому маршрутизация с криптоключом направит сюда все, кроме 10.0.0.0/8, из которых только 10.200.1.3 будет определено на стороне P2, оставив нетронутым уже определенный 10.200.1.5 на стороне P1: больше не будет перекрытий. Пакеты, отправленные P1 в Интернет, теперь должны направляться к P2 для дальнейшей маршрутизации.

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

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