Eu tenho meu roteador configurado para encaminhar a porta 80 para uma máquina executando um caddy
servidor de arquivos. Eu posso enrolar com sucesso o servidor de arquivos da LAN, mas recebo um tempo limite ao enrolar da WAN. A máquina em execução caddy
também está sendo executada para se conectar wireguard
a NetworkManager
uma VPN externa. Se eu desligar a wireguard
conexão, posso enrolar o servidor de arquivos da WAN.
Esta resposta diz que meu AllowedIps=0.0.0.0,::0/0
está roteando todo o tráfego através da VPN externa. Como posso configurar o wireguard para rotear tudo, exceto o tráfego das portas 80 e 443 através da VPN?
Não é possível configurar o Wireguard para rotear tudo, exceto as portas 80 e 443. Isso ocorre porque as portas do modelo de rede OSI estão em uma camada diferente do tráfego IP.
Mas há duas (provavelmente mais) respostas para esta pergunta: a primeira resposta é limitar as rotas que passam pelo túnel Wireguard. Avalie quais redes IP precisam passar pelo túnel Wireguard e configure isso no arquivo
AllowedIps
.A segunda resposta é mais avançada, mas você pode configurar um
source NAT
no roteador que mascara o endereço IP da WAN de entrada para o IP do roteador. Isso significa que o servidor de arquivos pensa que o tráfego WAN é tráfego do roteador e enviará de volta uma resposta ao roteador que o enviará de volta à WAN.Como o Wireguard usa outra tabela de roteamento que não a padrão, você pode usar
ip rule
para excluir um determinado tipo de tráfego. O Wireguard adicionará uma regra para corresponder ao tráfego depois que ele for redirecionado para o local, mas antes de ir para o main.Você deve então poder adicionar uma regra antes da wireguard, que redirecionará o tráfego da porta 80 e 443 (resposta do seu servidor) para a tabela principal. Deve ser tão simples quanto:
Você pode verificar se a regra é colocada antes do wireguard com:
Embora, se você quiser torná-lo persistente, você pode querer adicionar uma ação PostUp em seu arquivo de configuração:
Se você estiver usando apenas o NetworkManager, você pode usar dispatcher.d para colocar um script para que ele seja executado quando uma rede for conectada ou desconectada.