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 / computer / Perguntas / 1789899
Accepted
Manitoba
Manitoba
Asked: 2023-06-19 18:08:51 +0800 CST2023-06-19 18:08:51 +0800 CST 2023-06-19 18:08:51 +0800 CST

Não é possível encaminhar pacotes entre vários RPi

  • 772

Eu tenho um roteador doméstico com conexão à Internet. Também tenho um computador que está em um local onde não consigo conectá-lo diretamente ao roteador. Felizmente, tenho dois pis de framboesa com os quais não sabia o que fazer.

insira a descrição da imagem aqui

Eu executei os seguintes comandos no PI #1 com base na resposta de @User1686 :

    # Set static IP for eth0 interface
    ip addr add 192.168.1.100/24 dev ppp0
    
    # Set static IP for ppp0 interface
    ip addr add 192.168.0.1/24 dev ppp0

    # Enable IP forwarding
    echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
    echo 'net.ipv6.conf.all.forwarding=1' >> /etc/sysctl.conf
    sysctl -p /etc/sysctl.conf

    # Route packets to PI #2
    ip route add 192.168.2.0/24 via 192.168.0.2 dev ppp0

    # Masquerade all outgoing packets with his own IP
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

E execute os seguintes no PI #2:

    # Set static IP for eth0 interface
    ip addr add 192.168.2.1/24 dev eth0
    
    # Set static IP for ppp0 interface
    ip addr add 192.168.0.2/24 dev ppp0

    # Enable IP forwarding
    echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
    echo 'net.ipv6.conf.all.forwarding=1' >> /etc/sysctl.conf
    sysctl -p /etc/sysctl.conf

    # Forward packets to PI #1
    ip route add default via 192.168.0.1
    ip route add 192.168.1.0/24 via 192.168.0.1 dev ppp0

    # Masquerade all outgoing packets with his own IP
    iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Também habilitei o IP estático no meu computador para se conectar ao PI nº 2:

    # Set static IP
    ip addr add 192.168.2.100/24 dev eth0

    # Forward packets to PI #2
    ip route add default via 192.168.2.1

    # Add DNS server
    echo "nameserver 8.8.8.8" | sudo tee -a /etc/resolv.conf

Tive alguns problemas porque não consigo acessar alguns IPs e a Internet do meu computador. Aqui está uma tabela rápida do que eu tentei:

Comando Pi #1 Pi #2 Computador Qualquer dispositivo no HomeRouter
ping 192.168.0.1 OK OK OK NÃO
ping 192.168.0.2 OK OK OK NÃO
ping 192.168.1.1 OK OK OK OK
ping 192.168.2.1 OK OK OK NÃO
ping 192.168.1.100 OK OK OK OK
ping 192.168.2.100 OK OK OK NÃO
enrolar 8.8.8.8 OK OK OK OK
curl google.com OK OK OK OK

Com base na resposta de @ User1686 , meu computador agora pode se comunicar com outros dispositivos em meu roteador doméstico, mas agora eles podem se comunicar com meu computador ( ping 192.168.2.100por exemplo).

Existe uma maneira de rotear pacotes sem editar a configuração do roteador?

networking
  • 1 1 respostas
  • 27 Views

1 respostas

  • Voted
  1. Best Answer
    user1686
    2023-06-19T19:06:11+08:002023-06-19T19:06:11+08:00

    Resumindo, todo dispositivo precisa de uma rota para toda rede que não seja local. Não basta apenas ter uma rota para um dispositivo – o dispositivo também precisa ter uma rota de volta para você.

    Em algumas situações, ele pode já estar coberto pela rota "padrão" (por exemplo, HomeRouter←Pi#2 é alcançável pela rota padrão do Pi#2), mas não em todos os casos.

    1. O roteador doméstico deve ter rotas para 192.168.0.0/24 e 192.168.2.0/24. No momento, ele recebe seus pings do Pi#2, mas não consegue responder (ou melhor, suas respostas passam pelo link WAN).

      (Em ambos os casos, o roteador mais próximo , ou seja, Pi#1, precisa ser especificado como o "gateway".)

    2. Pi #1 precisa de uma rota para 192.168.2.0/24. Você já tem isso.

    3. Pi #2 precisa de uma rota para 199.168.1.0/24. Você já tem isso, tanto como rota explícita quanto (provavelmente) como rota padrão.

    4. Por fim, o computador deve ter apenas uma rota 'padrão' via Pi #2 (ou seja, uma rota 0.0.0.0/0). No momento, provavelmente não há rotas, exceto a rota da sub-rede.

    Se o roteador doméstico não suportar a configuração de rotas estáticas, você poderá usar o SNAT como uma solução alternativa – faça Pi#1 mascarar todos os pacotes com seu próprio endereço, por meio de iptables. No entanto, lembre-se de que o mascaramento só ajuda com conexões estabelecidas em apenas uma direção (saída); não ajudará no envio de "novos" pacotes de entrada.

    Portanto, mantenha o uso de SNAT/MASQUERADE no mínimo absoluto e use o roteamento normal sempre que possível - por exemplo, se HomeRouter for o problema (não é possível fazer roteamento estático), use apenas SNAT no Pi # 1, na interface voltada para o HomeRouter ( ou seja, na borda da rede roteada). Você não precisa do SNAT adicional no Pi#2.

    Se você precisar fazer conexões de entrada através da interface onde você é forçado a usar SNAT, a solução típica é usar DNAT (também conhecido como "encaminhamento de porta") - crie uma regra que corresponda a certas conexões com Pi # 1 e DNATs para o computador.

    (Não precisa ser porta por porta - você também pode atribuir um segundo endereço IP inteiro para Pi#1 e usá-lo exclusivamente para DNAT literalmente tudo para esse endereço para o computador, como o recurso "DMZ" em roteadores.)


    Como você já está usando ip route, também recomendo ip addr add 192.168.2.100/24 dev eth0em vez de ifconfig. (O maior problema que o ifconfig ainda tem (mesmo na versão mais recente) é que ele falha silenciosamente ao mostrar vários endereços IPv4 por interface, o que às vezes pode ser muito confuso.)

    • 1

relate perguntas

  • Três computadores, como configurar a rede sem roteador/switch?

  • A conexão do usuário ao servidor SFTP usando o FileZilla se recusa a conectar

  • Como funciona um NAT atrás de um NAT (NAT do roteador e NAT do ISP)?

  • Win10 1803: Como tornar o ponto de acesso móvel uma rede privada?

  • Como o nc identifica nomes de serviço

Sidebar

Stats

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

    Como posso reduzir o consumo do processo `vmmem`?

    • 11 respostas
  • Marko Smith

    Baixar vídeo do Microsoft Stream

    • 4 respostas
  • Marko Smith

    O Google Chrome DevTools falhou ao analisar o SourceMap: chrome-extension

    • 6 respostas
  • Marko Smith

    O visualizador de fotos do Windows não pode ser executado porque não há memória suficiente?

    • 5 respostas
  • Marko Smith

    Como faço para ativar o WindowsXP agora que o suporte acabou?

    • 6 respostas
  • Marko Smith

    Área de trabalho remota congelando intermitentemente

    • 7 respostas
  • Marko Smith

    O que significa ter uma máscara de sub-rede /32?

    • 6 respostas
  • Marko Smith

    Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows?

    • 1 respostas
  • Marko Smith

    O VirtualBox falha ao iniciar com VERR_NEM_VM_CREATE_FAILED

    • 8 respostas
  • Marko Smith

    Os aplicativos não aparecem nas configurações de privacidade da câmera e do microfone no MacBook

    • 5 respostas
  • Martin Hope
    Vickel O Firefox não permite mais colar no WhatsApp web? 2023-08-18 05:04:35 +0800 CST
  • Martin Hope
    Saaru Lindestøkke Por que os arquivos tar.xz são 15x menores ao usar a biblioteca tar do Python em comparação com o tar do macOS? 2021-03-14 09:37:48 +0800 CST
  • Martin Hope
    CiaranWelsh Como posso reduzir o consumo do processo `vmmem`? 2020-06-10 02:06:58 +0800 CST
  • Martin Hope
    Jim Pesquisa do Windows 10 não está carregando, mostrando janela em branco 2020-02-06 03:28:26 +0800 CST
  • Martin Hope
    andre_ss6 Área de trabalho remota congelando intermitentemente 2019-09-11 12:56:40 +0800 CST
  • Martin Hope
    Riley Carney Por que colocar um ponto após o URL remove as informações de login? 2019-08-06 10:59:24 +0800 CST
  • Martin Hope
    zdimension Ponteiro do mouse movendo-se nas teclas de seta pressionadas no Windows? 2019-08-04 06:39:57 +0800 CST
  • Martin Hope
    jonsca Todos os meus complementos do Firefox foram desativados repentinamente, como posso reativá-los? 2019-05-04 17:58:52 +0800 CST
  • Martin Hope
    MCK É possível criar um código QR usando texto? 2019-04-02 06:32:14 +0800 CST
  • Martin Hope
    SoniEx2 Altere o nome da ramificação padrão do git init 2019-04-01 06:16:56 +0800 CST

Hot tag

windows-10 linux windows microsoft-excel networking ubuntu worksheet-function bash command-line hard-drive

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