AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • Início
  • system&network
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • Início
  • system&network
    • Recentes
    • Highest score
    • tags
  • Ubuntu
    • Recentes
    • Highest score
    • tags
  • Unix
    • Recentes
    • tags
  • DBA
    • Recentes
    • tags
  • Computer
    • Recentes
    • tags
  • Coding
    • Recentes
    • tags
Início / server / Perguntas / 1168920
Accepted
slowcoder
slowcoder
Asked: 2024-12-16 09:18:36 +0800 CST2024-12-16 09:18:36 +0800 CST 2024-12-16 09:18:36 +0800 CST

Como mantenho a prioridade na minha regra?

  • 772

Tenho o seguinte código rodando no meu servidor para me permitir fazer SSH no meu servidor mesmo quando o servidor está conectado a uma VPN. O código abaixo roda como um serviço após a inicialização.

ip addr add 192.168.1.113 dev enp1s0 label enp1s0:0
ip rule add from 192.168.1.113 table 402
ip route add default via 192.168.1.1 dev enp1s0:0 table 402

Isso funciona com o OpenVPN, mas não com o WireGuard porque meu cliente WireGuard adiciona algumas regras antes da minha regra acima.

0:  from all lookup local
32761:  from all lookup main suppress_prefixlength 0
32762:  not from all fwmark 0xca6c lookup 51820
32763:  from 192.168.1.113 lookup 402
32766:  from all lookup main
32767:  from all lookup default

Se eu adicionar a regra from 192.168.1.113 lookup 402depois da conexão wireguard, então posso usar SSH no servidor. Então, estou assumindo que é uma questão de prioridade.

Como posso garantir que minha regra ( 32763) mantenha a prioridade mesmo depois que o Wireguard se conectar e adicionar essas duas regras ( 32761, )?32762

SOLUÇÃO COM FALHA:

Aprendi que os números à esquerda são prioridades. Então, tentei definir a prioridade da minha regra mais baixa.

ip rule add from 192.168.1.113 table 402 prio 300

.. mas depois que me conectei à VPN Wireguard, o cliente Wireguard simplesmente colocou suas regras abaixo das minhas em prioridade 299, e 298.

298:    from all lookup main suppress_prefixlength 0
299:    not from all fwmark 0xca6c lookup 51820
300:    from 192.168.1.113 lookup 402

Existe alguma maneira de evitar isso? Acho que eu poderia colocar um PostUpcomando no arquivo de configuração do wireguard que altera a prioridade, mas sinto que tem que haver uma solução mais limpa.

routing
  • 1 1 respostas
  • 55 Views

1 respostas

  • Voted
  1. Best Answer
    larsks
    2024-12-17T05:59:10+08:002024-12-17T05:59:10+08:00

    A manipulação das suas regras de roteamento é realizada pelo wg-quickscript; você pode ver a seção relevante aqui . Como ele adiciona as regras sem definir uma prioridade explícita, elas sempre serão adicionadas "abaixo" de quaisquer regras existentes na tabela.

    Você precisa garantir que sua regra personalizada seja adicionada somente após wg-quick ter configurado a interface e as tabelas de roteamento. Você pode fazer isso movendo sua configuração personalizada para um post-up hook . Adicione uma PostUpdiretiva ao seu arquivo de configuração de interface:

    [Interface]
    ListenPort = 50001
    PrivateKey = ...
    PostUp = sh /etc/wireguard/scripts/example-preup.sh %i
    

    (O %iserá substituído pelo nome da interface.)

    Isso fará wg-quickcom que o comando fornecido seja executado após abrir a interface. No seu PostUpscript (aqui é /etc/wireguard/scripts/example-postup.sh, mas pode ser em qualquer lugar), adicione sua regra personalizada. Por exemplo:

    #!/bin/sh
    
    ip rule add from 192.168.1.113 table 402 prio 300
    

    Provavelmente você desejará adicionar outro script (talvez um PreUpou talvez um PostDown) para remover essa regra personalizada; caso contrário, na próxima vez que você abrir a interface, você terá o mesmo problema (porque a regra já existirá quando wg-quickadicionar suas regras personalizadas).

    • 0

relate perguntas

Sidebar

Stats

  • Perguntas 205573
  • respostas 270741
  • best respostas 135370
  • utilizador 68524
  • Highest score
  • respostas
  • Marko Smith

    Você pode passar usuário/passar para autenticação básica HTTP em parâmetros de URL?

    • 5 respostas
  • Marko Smith

    Ping uma porta específica

    • 18 respostas
  • Marko Smith

    Verifique se a porta está aberta ou fechada em um servidor Linux?

    • 7 respostas
  • Marko Smith

    Como automatizar o login SSH com senha?

    • 10 respostas
  • Marko Smith

    Como posso dizer ao Git para Windows onde encontrar minha chave RSA privada?

    • 30 respostas
  • Marko Smith

    Qual é o nome de usuário/senha de superusuário padrão para postgres após uma nova instalação?

    • 5 respostas
  • Marko Smith

    Qual porta o SFTP usa?

    • 6 respostas
  • Marko Smith

    Linha de comando para listar usuários em um grupo do Windows Active Directory?

    • 9 respostas
  • Marko Smith

    O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL?

    • 3 respostas
  • Marko Smith

    Como determinar se uma variável bash está vazia?

    • 15 respostas
  • Martin Hope
    Davie Ping uma porta específica 2009-10-09 01:57:50 +0800 CST
  • Martin Hope
    kernel O scp pode copiar diretórios recursivamente? 2011-04-29 20:24:45 +0800 CST
  • Martin Hope
    Robert ssh retorna "Proprietário incorreto ou permissões em ~/.ssh/config" 2011-03-30 10:15:48 +0800 CST
  • Martin Hope
    Eonil Como automatizar o login SSH com senha? 2011-03-02 03:07:12 +0800 CST
  • Martin Hope
    gunwin Como lidar com um servidor comprometido? 2011-01-03 13:31:27 +0800 CST
  • Martin Hope
    Tom Feiner Como posso classificar a saída du -h por tamanho 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich O que é um arquivo Pem e como ele difere de outros formatos de arquivo de chave gerada pelo OpenSSL? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent Como determinar se uma variável bash está vazia? 2009-05-13 09:54:48 +0800 CST

Hot tag

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • Início
  • Perguntas
    • Recentes
    • Highest score
  • tag
  • help

Footer

AskOverflow.Dev

About Us

  • About Us
  • Contact Us

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve