Quero que um cliente WireGuard não tripulado funcione com servidores WireGuard redundantes.
Físico:
- Tenho um servidor de banco de dados master em um VPS do provedor A nos EUA.
- Tenho replicação contínua em execução para um servidor escravo em um VPS do provedor B na Europa.
- Eu tenho um servidor de banco de dados de backup, também rodando como escravo de replicação, em uma LAN WiFi em meu escritório doméstico.
Rede:
- O servidor de banco de dados mestre nos EUA executa um servidor WireGuard como 10.20. 20.1 .
- O servidor de banco de dados escravo na Europa executa um servidor WireGuard como 10.20. 10.1 .
O banco de dados de backup em meu escritório doméstico foi configurado com sucesso para interagir com os servidores WireGuard remotos mestre ou escravo individualmente .
Para conectar via EUA preciso que alguém em casa faça:
suda wg-quick down wgEUR; suda wg-quick up wgUSA;
Para conectar via Europa preciso que alguém em casa faça:
suda wg-quick down wgUSA; suda wg-quick up wgEUR;
No entanto!!
O objetivo é poder usar o SSH na máquina do escritório doméstico, de qualquer lugar do mundo, por meio de qualquer um dos servidores WireGuard; se um cair, o outro ainda estará disponível.
Como posso configurar o roteamento no cliente WireGuard do escritório doméstico para permitir acesso simultâneo de ambas as sub-redes remotas do servidor WireGuard?
Configurações
Europa (37.xxx.xxx.139:34567): wg0.conf
[Interface]
Address = 10.20.10.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERAD
ListenPort = 34567
PrivateKey = MNf4xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxiVg=
[Peer]
PublicKey = durAZO/EtWQnqwnbadbadbadzDa9+klqUmqCT6VplWc=
AllowedIPs = 10.20.10.16/32
EUA (185.xxx.xxx.36:34567): wg0.conf
[Interface]
Address = 10.20.20.1/24
PostUp = iptables -A FORWARD -i wg0 -j ACCEPT
PostUp = iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
PostDown = iptables -D FORWARD -i wg0 -j ACCEPT
PostDown = iptables -t nat -D POSTROUTING -o eth0 -j MASQUERAD
ListenPort = 34567
PrivateKey = EGdxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxp2Q=
[Peer]
PublicKey = durAZO/EtWQnbadbadbadMkTzDa9+klqUmqCT6VplWc=
AllowedIPs = 10.20.20.16/32
Cliente wgEUR.conf:
[Interface]
### PrivateKey_of_the_Client
PrivateKey = EBmxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxaXlE=
### IP VPN for the Client
Address = 10.20.10.16/24
### DNS Server
DNS = 8.8.8.8, 8.8.4.4
[Peer]
###Public of the WireGuard VPN Server
PublicKey = pTm/tJwOWJ3QRwEcbadbadbadWx/BbCthbFa52M2uVE=
### IP and Port of the WireGuard VPN Server
##### Syntax: IP_of_the_server:Port
Endpoint = 37.xxx.xxx.139:34567
### Allow all traffic
AllowedIPs = 0.0.0.0/0
Cliente wgUSA.conf:
[Interface]
### PrivateKey_of_the_Client
PrivateKey = EBxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxXlE=
### IP VPN for the Client
Address = 10.20.20.16/24
### DNS Server
DNS = 8.8.8.8, 8.8.4.4
[Peer]
###Public of the WireGuard VPN Server
PublicKey = f/H+1b/jkkXvbhYPEbadbadbadkKMBMgEW1IvmOeCEE=
### IP and Port of the WireGuard VPN Server
##### Syntax: IP_of_the_server:Port
Endpoint = 185.xxx.xxx.36:34567
### Allow all traffic
AllowedIPs = 0.0.0.0/0
Esta VPN serve para acessar recursos privados, não uma forma de acessar a Internet anonimamente. Portanto, o tunelamento dividido deve ser usado.
Basta substituir no lado do cliente:
apenas pelo recurso necessário: o servidor que executa o banco de dados.
Para o cliente
wgEUR.conf
:Para o cliente
wgUSA.conf
:Agora os dois túneis podem estar ativos ao mesmo tempo:
wg-quick
não sequestrarão o roteamento (o que acontece com aTable = auto
configuração padrão e apresentado comAllowedIPs
0.0.0.0/0 ou ::/0) e os dois túneis não entrarão em conflito um com o outro . O acesso normal do cliente à Internet não passa por túneis, e isso certamente é uma melhoria: por que um servidor de banco de dados forneceria tal serviço?