Por que essa alocação de IP estático do cliente no OpenVPN falha?

8

Estou executando um servidor OpenVPN e desejo atribuir a um cliente específico um IP estático.

Este é o meu server.conf. Eu acho que isso configura o pool de IPs virtuais para abranger 10.5.24.209 a 10.5.24.223.

port 443
proto tcp
dev tun
sndbuf 0
rcvbuf 0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-auth ta.key 0
topology subnet
server 10.5.24.208 255.255.255.240
#This netmask should span IPs .208-.223.
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "dhcp-option DNS 168.xx.xx.xx"
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
crl-verify crl.pem
client-to-client
client-config-dir ccd

Este é o conteúdo de /etc/openvpn/ccd/W7LocalVM, onde W7LocalVM é o Nome Comum do meu cliente. Não entendo direito o que essa diretiva faz, mas acho que o primeiro IP deve ser o IP estático desejado do meu cliente e o segundo IP deve ser o IP do meu servidor.

ifconfig-push 10.5.24.210 10.5.24.209

No entanto, quando tento conectar meu cliente a esta configuração do servidor, recebo o seguinte erro:

Mon Aug 07 14:07:34 2017 Set TAP-Windows TUN subnet mode network/local/netmask = 10.5.24.208/10.5.24.210/10.5.24.209 [SUCCEEDED]
Mon Aug 07 14:07:34 2017 MANAGEMENT: Client disconnected
Mon Aug 07 14:07:34 2017 ERROR: --ip-win32 dynamic [offset] : offset is outside of --ifconfig subnet
Mon Aug 07 14:07:34 2017 Exiting due to fatal error

Eu pensei que o IP 10.5.24.210 estaria dentro da sub-rede definida no lado do servidor e não entendo por que estou recebendo esse erro. Alguém poderia me ajudar nisso?

Magnus
fonte
1
Eu sugiro que perguntar isso em Falha no servidor, em vez disso, possa ser mais útil nos comentários, pois esse site é dedicado a problemas de administração do servidor.
EJoshuaS - Restabelece Monica
Está bem. Obrigado. Não sabia sobre essa comunidade. Devo repassar ou há algum recurso que permita migrar a postagem?
Magnus
1
Você pode sinalizar para a intervenção do moderador e solicitar que eles migrem. (Em alguns sites, como Superusuário, a comunidade pode votar na migração, mas a migração para esse site deve ser feita por moderadores).
EJoshuaS - Restabelece Monica

Respostas:

4

Esse problema foi criado porque o openvpn está tentando analisar suas opções ifconfig como um ip seguido por uma máscara de sub-rede.

De acordo com a página do manual:

- modo topológico

...

sub-rede - Use uma sub-rede em vez de uma topologia ponto a ponto configurando a interface tun com um endereço IP local e uma máscara de sub-rede, semelhante à topologia usada no modo --dev tap e bridging ethernet. Este modo aloca um único endereço IP por cliente de conexão e funciona também no Windows. Disponível apenas quando o servidor e os clientes são o OpenVPN 2.1 ou superior ou o OpenVPN 2.0.x que foi corrigido manualmente com o código da diretiva --topology. Quando usado no Windows, requer a versão 8.2 ou superior do driver TAP-Win32. Quando usado no * nix, requer que o driver tun suporte um comando ifconfig (8) que defina uma sub-rede em vez de um endereço IP de terminal remoto.

Esta opção existe no OpenVPN 2.1 ou superior.

Nota: O uso da sub-rede --topology altera a interpretação dos argumentos de --ifconfig para significar "máscara de rede de endereço", não mais "local remoto".

--ifconfig l rn

Defina os parâmetros do adaptador TUN / TAP. l é o endereço IP do terminal VPN local. Para dispositivos TUN no modo ponto a ponto, rn é o endereço IP do ponto de extremidade da VPN remota. Para dispositivos TAP ou dispositivos TUN usados ​​com a sub-rede --topology , rn é a máscara de sub-rede do segmento de rede virtual ao qual está sendo criado ou conectado . Para dispositivos TUN, que facilitam conexões IP ponto a ponto virtuais (quando usados ​​no modo --topology net30 ou p2p), o uso adequado do --ifconfig é usar dois endereços IP privados que não são membros de nenhuma sub-rede existente que está em uso. Os endereços IP podem ser consecutivos e devem ter sua ordem invertida no ponto remoto. Depois que a VPN for estabelecida, pingando rn, você estará fazendo ping na VPN.

Para dispositivos TAP, que fornecem o ....

Dentro do código do servidor, você define sua topologia para subnete envia-a ao cliente usando a serverinstrução

De acordo com a documentação acima, em vez de enviar seu ifconfig usando o endereço "local", "remote", é necessário adicionar o seguinte a "/ etc / openvpn / ccd / W7LocalVM":

ifconfig-push 10.5.24.210 255.255.255.252
push route 10.5.24.210 255.255.255.252
# ifconfig 10.5.24.209 255.255.255.252

A última linha provavelmente não é necessária, mas é deixada como exemplo o que o ifconfig-push "deve" fazer no lado do servidor para fazer a conexão funcionar.

Ferrybig
fonte
Escrevi um comentário aqui perguntando por que você sugeriu a alocação de quatro IPs por cliente, mas fui diligente o suficiente para encontrar a resposta para isso nas Perguntas frequentes. Obrigado por resolver o enigma!
Magnus