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 / user-34071

regulatre's questions

Martin Hope
regulatre
Asked: 2020-05-23 19:48:56 +0800 CST

Openvpn L2/tap perdendo pacotes

  • 6

[EDIT] Isso parece ser um bug do OpenVPN - a ponte com o lado do servidor do túnel de torneira openvpn resulta em pacotes ARP perdidos, mas a ponte com o lado do cliente (de qualquer cliente conectado à vpn) funciona perfeitamente. Contornei o bug fazendo a ponte com um cliente em vez do servidor. O processo de relatório de erros é bastante trabalhoso, então levará algum tempo até que eu possa escrever tudo para enviar ao projeto Openvpn.

Estou observando o Openvpn descartando consistentemente certos pacotes ...

Cenário:

Eu configurei uma rede de camada 2 de área ampla (usando OpenVPN) para oferecer suporte a jogadores de edição de bolso do Minecraft (MCPE) (apenas família) para ver uns aos outros na lista de amigos da rede e jogar juntos. Existem três endpoints remotos, todos em locais diferentes, e um servidor openvpn central. Cada ponto de extremidade remoto transmite Wi-Fi em ponte para a interface tap Openvpn. Isso funciona muito bem e os jogadores podem se ver.

Recentemente, eu queria adicionar um ponto de extremidade Wi-Fi adicional localmente, aqui no local do servidor. Então, adicionei uma porta ethernet à ponte e conectei uma ponte Wi-Fi para obter conectividade de camada 2 com a ponte openvpn existente. À primeira vista, isso parece funcionar bem; os clientes podem acessar a internet e o tráfego L2 parece normal.

No entanto, quando os jogadores em um endpoint de cliente remoto tentam jogar contra aqueles conectados à ponte wi-fi local, os jogadores não podem ver uns aos outros.

As pontes Wi-Fi locais para a extremidade SERVER do túnel openvpn, e isso parece ser um fator, mas isso é inesperado.

Após muitas horas de solução de problemas, reduzi o problema a um fato peculiar - o Wi-Fi em ponte para a interface openvpn tap do servidor (chamada tapmc) não é capaz de jogar contra jogadores do outro lado da VPN.

Em outras palavras, se quaisquer dois jogadores estiverem no mesmo Wi-Fi ou em um ponto de extremidade Wi-Fi openvpn do cliente, eles poderão se ver, independentemente da distância. MAS os jogadores conectados ao Wi-Fi conectado à interface openvpn tap do lado do SERVIDOR enfrentam problemas - eles não podem ver os jogadores no lado do cliente do túnel e os jogadores remotos não podem vê-los.

Para ver um ao outro, o jogo envia um pacote de transmissão UDP a cada 1-2 segundos para a porta 19132 (ipv4). Todos os jogadores na rede recebem essas transmissões e, se o jogo for o servidor, o jogo responderá com um pacote unicast ao solicitante. Este pacote de resposta unicast contém informações do jogo, então o jogador que está procurando por jogos ativos na rede os verá aparecer em sua lista de amigos para que possam entrar no jogo.

Segue em anexo uma análise de um pequeno período de tempo em que os pacotes estão sendo perdidos. Os pacotes entram por um lado do túnel de derivação e não saem pelo outro lado. Eu capturei os pacotes executando o tcpdump em cada lado do túnel, na própria interface openvpn tap, para que não haja pontes no caminho, embora as interfaces sejam membros de uma ponte.

Anotado tcpdump "lado a lado" (ambos os lados do túnel tap openvpn)

O que vejo é que o PLAYER2, enquanto procura por jogos na rede, envia o broadcast de busca, que é recebido pelo jogo do PLAYER1, que quer responder com um pacote unicast de informações do jogo, mas primeiro precisa resolver o endereço MAC do PLAYER2, então ele envia um ARP quem tem. o pacote who-has, e todas as retransmissões subseqüentes dele, são recebidos e respondidos por PLAYER1, mas essas respostas NÃO são transmitidas através do túnel Openvpn para PLAYER1. Assim, a resolução L2 ARP nunca é bem-sucedida, o pacote unicast de informações do jogo nunca é enviado e o PLAYER2 nunca vê o PLAYER1.

Também perdida no túnel está a segunda cópia do pacote de transmissão de pesquisa do jogo, no entanto, isso não é tão prejudicial para o processo porque a primeira das duas cópias é transmitida com sucesso. Mas por que apenas um?

Configuração do servidor Openvpn

server 192.168.251.0 255.255.255.0
verb 3
key ***
ca ***
cert ***
dh ***
tls-auth ***
key-direction 0
keepalive 10 60
persist-key
persist-tun
client-to-client
proto udp
port ***
dev tapmc
status ***
ifconfig-pool-persist ***
user nobody
group nobody

Configuração do cliente Openvpn

client
nobind
dev tapmc
remote-cert-tls server
remote ***    
<key>
***
</key>    
<cert>
***
</cert>    
<ca>
***
</ca>
<tls-auth>
***
</tls-auth>
key-direction 1
#redirect-gateway def1

Versões OpenVPN: servidor: 2.4.8-1, clientes: 2.4.7-1

openvpn tunnel
  • 1 respostas
  • 251 Views
Martin Hope
regulatre
Asked: 2019-11-07 07:34:20 +0800 CST

Por que o nó ou o python não podem acessar as variáveis ​​numéricas definidas com o comando de leitura?

  • 6

Observação: as variáveis ​​de ambiente definidas usando o utilitário "read" do sistema operacional, que contêm valores somente numéricos, não são acessíveis na os.environ[]estrutura do Python ou pela estrutura do nó process.env, mas SÃO acessíveis ao bash.

O comportamento esperado é que todas as variáveis ​​de ambiente sejam igualmente acessíveis a partir dos aplicativos, independentemente de como foram criadas.

As mesmas variáveis, se definidas usando bash usando export N=12345sintaxe, são acessíveis. Parece que a variável criada usando o comando read não é criada igual a outras variáveis ​​de alguma forma que está perturbando a lógica do nó/Python de analisar essas variáveis.

As mesmas variáveis ​​que não são acessíveis do node/Python são prontamente acessíveis na linha de comando bash, conforme mostrado abaixo nas instruções echo.

O comando read define uma variável de ambiente com base na entrada de chave. É uma maneira conveniente de inserir um segredo em uma variável sem deixar um registro .bash_history desse segredo.

Reproduzido em:

  • OSX 10.14.6 ("Mojave") Python 2.7, Python 3.6, nó 10.16.3 Linux
  • Kernel 3.10 CentOS 64 bits, Python2.7.5

Amostra:

Use reade solicite ao usuário que insira um valor para a variável de ambiente denominada L.

~ $ read L
12345
~ $ python2
Python 2.7.16 (default, Apr 12 2019, 15:32:40) 
[GCC 4.2.1 Compatible Apple LLVM 10.0.1 (clang-1001.0.46.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ["L"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python@2/2.7.16/Frameworks/Python.framework/Versions/2.7/lib/python2.7/UserDict.py", line 40, in __getitem__
    raise KeyError(key)
KeyError: 'L'
>>> 
~ $ python3
Python 3.7.3 (default, Mar 27 2019, 09:23:15) 
[Clang 10.0.1 (clang-1001.0.46.3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.environ["L"]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/local/Cellar/python/3.7.3/Frameworks/Python.framework/Versions/3.7/lib/python3.7/os.py", line 678, in __getitem__
    raise KeyError(key) from None
KeyError: 'L'
~ $ echo $L
12345

Curiosamente, se uma variável numérica for definida por outros meios além do comando read, elas estarão acessíveis em Python e node.

>>> os.environ["HISTSIZE"]
'12345678'
linux python
  • 1 respostas
  • 524 Views

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