Estou tentando configurar a seguinte rede:
Host1 ---(VPN1)--- Host2 ---(VPN2)--- Host3
Onde
Host1
tem IP10.0.0.1/16
na interfacetun-vpn1
;Host2
tem IPs10.0.0.2/16
na interfacetun-vpn1
, e10.1.0.1/16
na interfacetun-vpn2
;Host3
tem IP10.1.0.2/16
na interfacetun-vpn2
.
Especificamente, Host1
é um servidor OpenVPN com rede 10.0.0.0/16
com Host2
como seu cliente. Portanto, eles são conectados de 10.0.0.1 --- 10.0.0.2
.
Similarmente, Host2
é um servidor OpenVPN com rede 10.1.0.0/16
com Host3
como seu cliente. Portanto, eles são conectados de 10.1.0.1 --- 10.1.0.2
.
Agora, estou tentando fazer Host1
ping Host3
. A primeira coisa que tentei foi Host1
fazer ping Host2
na interface dele tun-vpn2
. Então, de Host1
eu faço
ping 10.1.0.1
O que não funciona.
Então tentei configurar uma rota Host1
como
ip route add 10.1.0.0/16 via 10.0.0.2 dev tun-vpn1
E novamente não tive sucesso. E o tcpdump não mostra nenhum pacote chegando em Host2
, mesmo que eles saiam Host1
na interface tun-vpn1
.
Como posso configurar esse roteamento?
Obrigado.
Você precisa definir adicionalmente rotas internas do OpenVPN usando
iroute
no servidor Host1, depois que elas entram na interface e são processadas pelo software OpenVPN. Se bem me lembro, isso vai para umclient-config-dir
arquivo para o cliente específico.Como alternativa, troque a conexão OpenVPN para
dev tap
uma que tenha um comportamento mais familiar, semelhante ao Ethernet.tun
interfaces simulam uma interface ponto a ponto e não carregam nenhum tipo de endereçamento de camada MAC (também conhecido como L2) que permitiria que ovia ...
parâmetro funcionasse (ao contrário de interfaces "tap" ou Ethernet físicas que permitem). Então, quando você roteia qualquer coisa por uma interface "tun", ovia
endereço do gateway é efetivamente ignorado.Mas como o OpenVPN não é realmente um link ponto a ponto, mas mais um ponto a multiponto, isso significa que o servidor OpenVPN não tem como saber automaticamente para qual peer encaminhar os pacotes se eles não corresponderem diretamente ao endereço principal de nenhum peer. A única maneira do
Host1
servidor saber que 10.1.0.0/16 deve ser encaminhado para oHost2
cliente.O OpenVPN não tem nenhum caso especial para uma configuração de 1 cliente (pois nada o impede de obter um segundo cliente a qualquer momento e você não gostaria que isso mudasse drasticamente o comportamento do roteamento), então, mesmo em tal configuração, ele não "simplesmente encaminhará tudo" para o único cliente que possui; você ainda precisa usar
iroute
.(O problema provavelmente não ocorrerá na outra direção, já que um cliente OpenVPN sempre tem apenas um par: o servidor.)
As interfaces WireGuard são usadas
AllowedIPs
exatamente para o mesmo propósito (e é comum definir isso como /0 quando um túnel ponto a ponto "limpo" é necessário).