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 / 1163670
Accepted
gcb
gcb
Asked: 2024-08-09 06:28:24 +0800 CST2024-08-09 06:28:24 +0800 CST 2024-08-09 06:28:24 +0800 CST

Como “forçar” uma rota?

  • 772

O kernel do Linux me permitiria adicionar rotas com gateways que eram meramente acessíveis, já que não há problema com eles na prática. Mas hoje em dia recebo "Erro: Nexthop tem gateway inválido", o que é bom para seguir as especificações e tornar os testes ad hoc uma dor de cabeça.

Existe alguma maneira de ignorar essa verificação e forçar minha rota?

E sim, eu quero disparar meus pacotes roteados de LAN privada através de uma interface pública, os motivos são válidos, de baixo volume e inofensivos :)

linux
  • 1 1 respostas
  • 110 Views

1 respostas

  • Voted
  1. Best Answer
    u1686_grawity
    2024-08-09T12:02:53+08:002024-08-09T12:02:53+08:00

    Para usar um gateway que esteja na mesma rede local (por exemplo, a mesma Ethernet que você), mas apenas fora do seu intervalo de endereços IP, para que o sistema operacional não perceba que é acessível localmente:

    • Com kernels recentes: Especifique o onlinkparâmetro do comando.

      ip route add 192.168.1.0/24 via $GW dev eth0 onlink
      
    • Com kernels mais antigos a opção só era aceita para uma única versão de IP (não me lembro qual). A alternativa é primeiro adicionar uma rota de 'dispositivo' para o gateway como /32 ou /128, o que fará com que o sistema operacional o considere acessível:

      ip route add $GW/32 dev eth0
      ip route add 192.168.1.0/24 via $GW
      

      Isso é funcionalmente idêntico à rota de "sub-rede local" adicionada automaticamente que você já possui a partir do seu próprio endereço IP. Na verdade, você pode definir todo um intervalo/sub-rede de endereços como 'local' desta forma, se desejar.

    • Freqüentemente, mesmo que a Ethernet use várias sub-redes IPv4 separadas, é provável que todos os dispositivos estejam em uma única sub-rede IPv6; portanto, se você souber o endereço IPv6 do gateway (global ou link local), poderá rotear o IPv4 por meio disso:

      ip route add 192.168.1.0/24 via inet6 FE80::ABC:DEF dev eth0
      

      (Isso não usa tunelamento ou tradução de endereços – apenas uma maneira diferente de resolver o endereço MAC do gateway.)

    • Observe que os ISPs podem facilmente evitar tudo isso bloqueando o ARP direto entre os clientes e fazendo proxy ARP para que todos os pacotes acabem passando pelo gateway, mesmo que o destino pareça ser uma sub-rede local.

      A maioria dos gateways domésticos hoje em dia também vem com regras de firewall predefinidas que bloqueiam pacotes da WAN para sua rede interna, especificamente para evitar tais hacks.

    Para usar um gateway que não esteja fisicamente na mesma rede local (Ethernet, etc.) que você:

    • Não pode ser feito. O endereço IP do gateway é realmente um substituto para o endereço MAC da rede local do gateway (ou seja, não é um campo de cabeçalho IP, mas uma coisa de camada inferior), portanto, se o gateway não estiver na mesma rede local que você, então você pode ' t enviar pacotes para seu endereço MAC, portanto você não pode rotear através dele.

      O IPv4 costumava suportar um cabeçalho 'Rota de origem' em algum ponto (da mesma forma 'RH0' no IPv6), que poderia ser usado para solicitar ao gateway A que roteasse através do gateway B em seguida, mas foi universalmente obsoleto e removido décadas atrás.


    apenas adicionando o endereço IP público de um modem (acessível por nada além da minha regra de rede 0.0.0.0) como um gateway para 192.168.1.1/24

    Isso pode ser interpretado de duas maneiras, mas realmente só funciona se o sistema operacional realmente ignorar a parte "acessível pela rota 0.0.0.0" e tratar o gateway como acessível diretamente no link (como na primeira parte da resposta).

    A outra interpretação do sistema operacional seguindo a rota 0.0.0.0 (ou seja, tratar sua rota como "recursiva") não funcionaria, conforme a segunda parte da resposta - resultaria apenas na passagem dos pacotes pelo seu gateway normal, que você não pode controlar mais.

    (Na verdade, o Linux tem um pervasivesinalizador para rotas que parece ter sido criado para realizar pesquisas recursivas de gateway, mas não é funcional e parece ter tido seu código de suporte (no valor de duas linhas) removido em 2010. Na prática, geralmente pesquisas recursivas seriam feito por um daemon de roteamento de qualquer maneira.)

    • 3

relate perguntas

  • Como descobrir detalhes sobre hardware na máquina Linux?

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