OpenVPN para hospedar o dispositivo de toque com MTU muito grande

3

Pergunta

Qual é o conjunto mínimo de diretivas de configuração de servidor e cliente que eu preciso para satisfazer as seguintes condições?

  1. Rede ethernet da camada 2 virtual que não será conectada com nenhuma outra interface.
  2. Os clientes VPN podem trocar quadros com qualquer outro cliente VPN.
  3. O DHCP não é necessário (nenhum TCP / IP será usado na VPN)
  4. Todo o tráfego na VPN será realizado por ethernet (sem camada 3+ de rede, de fato)
  5. A MTU da rede virtual precisa ser muito maior que a das redes subjacentes e isso deve ser transparente para os nós dentro da VPN. O OpenVPN está livre para fragmentar pacotes fora da VPN - acho que isso está habilitado através das diretivas fragment e tun-mtu . A sobrecarga de usar essas opções não é uma preocupação. (meta MTU é 2360 )
  6. A segurança da rede não é uma preocupação - sua finalidade é estritamente ser um link ethernet completamente em software para nós que não estão fisicamente próximos uns dos outros.

Que trabalhos eu já fiz?

Eu tenho muita experiência com o OpenVPN, então estou bastante confiante de que tenho o básico coberto. No entanto, não consigo encontrar o grande requisito de tamanho de MTU. Clientes na VPN podem se conectar e se eu configurar o TCP / IP para testes, todos os clientes podem executar ping uns dos outros, exceto quando o teste de ping com o não-fragmentar e tamanho de pacote maior que 1472. Os logs não revelam nada óbvio. >

Por favor, veja os seguintes arquivos de configuração.

configuração do servidor:

mode  server
port  1195
proto udp
dev   tap

tun-mtu 2360
fragment 1500

comp-lzo
max-clients 200
client-to-client

ca     special-net/ca.crt
cert   special-net/sn-server.crt
key    special-net/sn-server.key
dh     special-net/dh1024.pem
status special-net/status.log
tls-server
tls-auth ta.key 0
auth-user-pass-verify /bin/true via-env
duplicate-cn
username-as-common-name

user nobody
group nogroup
persist-key
persist-tun
verb 4

configuração do cliente:

client
remote <redacted> 1195
proto udp
dev tap

tun-mtu 2360
fragment 1500

ca             special-net/ca.crt
cert           special-net/sn-client.crt
key            special-net/sn-client.key
tls-auth       special-net/ta.key 1
auth-user-pass special-net/user.txt
ns-cert-type server

nobind
user nobody
group nobody
persist-key
persist-tun
comp-lzo
verb 3
resolv-retry infinite

Por que estou fazendo coisas estranhas com o OpenVPN?

Eu preciso de uma maneira de distribuir (em oposição a um simples capture ) frames 802.11 brutos como eles são observados por posts de escuta. Eu pretendo conseguir isso fazendo com que os postes de escuta transmitam cada frame 802.11 como estão para a VPN, mas com um cabeçalho ethernet prefixado. O cabeçalho da ethernet será simplesmente uma transmissão ethernet que o OpenVPN irá distribuir. O tamanho máximo de quadros para um datagrama 802.11 é de 2346 octetos, o que torna o meu MTU 2360 desejado (14 bytes adicionais para o cabeçalho ethernet).

    
por Iron Savior 09.07.2013 / 02:36

1 resposta

1

A inspiração veio da noite para o dia. Parece que a diretiva tun-mtu apenas informa o OpenVPN sobre o MTU e não faz com que o OpenVPN defina o MTU no próprio dispositivo de derivação. Configurar o MTU nas interfaces de toque manualmente permitiu que os clientes VPN enviassem e recebessem pacotes sem fragmentação até os 2360 bytes completos conforme necessário.

Eu configurei o MTU diretamente usando ip link set tap0 mtu 2360 em cada cliente e no servidor.

    
por 09.07.2013 / 15:24