Рейтинг:0

How do I configure a Wireguard Interface to connect to a remote peer through a specific network interface?

флаг eg

Suppose I have two servers, gateway which is publicly visible to the internet and appserver which is hidden behind a nat/firewall. Also suppose that each of these two servers has two interfaces connected to entirely separate internet uplinks (see diagram bellow).

I want to set up two independent Wireguard tunnels between the two servers with the goal of keeping the servers connected if one of them fails:

                   |     Internet     |        
[ gateway ]        |                  |        [appserver]
                   |                  | 
   (wg0) <-----> (ens1) < - - - - > (ens1) <----> (wg0)
                   |                  | 
                   |                  | 
                   |                  |        
   (wg1) <-----> (ens2) < - - - - > (ens2) <----> (wg1)
                   |                  | 
                   |                  | 

By default, Wireguard seems to route all traffic through the system's default gateway. So when appserver attempts to connect to gateway, it only uses one of the two interfaces:

                   |     Internet     |        
[ gateway ]        |                  |        [appserver]
                   |                  | 
   (wg0) <--+--> (ens1) < - - - - > (ens1) <--+--> (wg0)
            |      |                  |       |
            |      |                  |       |
            |      |                  |       | 
   (wg1) <--+    (ens2)      X      (ens2)    +--> (wg1)
                   |                  | 
                   |                  |

Since some network tools allow setting a specific network interface to use when sending network traffic, can Wireguard also do the same thing? That is, only send traffic over ens1 or ens2 regardless of default route metrics? If not, how can I set up Linux's networking systems to do this instead?

Рейтинг:0
флаг eg

Мне не удалось найти способ заставить wireguard подключаться через определенный интерфейс, поэтому в конце концов я остановился на простой маршрутизации трафика, предназначенного для энс2 добавив новый маршрут в сервер приложенийтаблицы маршрутизации:

ip route добавить $GATEWAY_ESN2_ADDR/32 через метрику $APPSERVER_ESN2_ADDR_GW 50

APPSERVER_ESN2_ADDR_GW это адрес сервер приложениймаршрутизатор шлюза.

Исследуя это, я заметил, что wireguard позволяет вам установить fwmark для исходящего трафика, принадлежащего определенному интерфейсу wireguard, установив FwMark поле под [Интерфейс]. На момент написания этой статьи (2021-09) Wireguard не поддерживает установку этой метки для каждого узла.

Я оставлю этот вопрос открытым на случай, если кто-то обнаружит верный ответ на этот вопрос.

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

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