Eu tenho um servidor que roteia todo o tráfego através do wireguard. Quando inicio o wireguard, todas as portas que escutam o IP público deste servidor ficam indisponíveis - mesmo o ssh não funciona.
O que eu quero é permitir o tráfego de entrada em uma porta (ssh, por exemplo) de qualquer IP, mas usar o wireguard para qualquer conexão de saída.
Exemplo:
MY_SERVER para qualquer ip público -> use o peer wireguard para roteamento (outros servidores devem ver o IP do peer wireguard como origem). Isso está funcionando tendo AllowedIPs = 0.0.0.0/0
em wireguard conf.
Qualquer IP público para MY_SERVER -> isso não funciona quando o wireguard está ativado. Se eu parar o wireguard, ele funciona.
Alguma idéia de como posso permitir conexões de entrada em meu IP público e rotear conexões de saída através do wireguard?
Atualizar:
O principal problema é que estou obtendo roteamento assimétrico devido ao roteamento wireguard de todos os pacotes através dele. Portanto, quando a conexão de entrada no IP público para determinada porta chega, sua resposta é roteada pelo wg0 em vez da interface pública e nunca retorna ao cliente.
Consegui consertar um pouco adicionando, ip rule add sport PORT table main
mas não tenho certeza se há uma solução melhor, então não preciso adicionar todas as portas 1 por 1 - quero que qualquer porta que eu comece a escutar seja roteada corretamente. Além disso, essa correção funciona para TCP, mas não para UDP. Seria ótimo se eu pudesse fazê-lo funcionar para ambos os protocolos.
Suas tabelas de roteamento não têm estado, elas não possuem nenhuma informação sobre um pacote ser uma resposta ou sua porta estar vinculada. Portanto, você pode usar a tabela de conexão para adicionar uma marca quando uma conexão for feita à interface do servidor (não à interface wireguard) e, em seguida, restaurar essa marca para cada pacote desta conexão.
Você pode então usar esta marca em uma regra de roteamento:
Ou se você usar nftables:
Ou você pode fazer isso listando as portas nas regras, pode ser o limpador. Para UDP, você deseja que os serviços escutem em um único endereço IP (não 0.0.0.0) e então
ip rule
devem funcionar.