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

6

Estou executando um servidor OpenVPN e desejo atribuir um IP específico a um IP específico.

Este é o meu server.conf. Eu acho que isso configura o pool de IPs virtuais para abranger de 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 , em que W7LocalVM é o Nome Comum do meu cliente. Eu não entendo bem o que esta 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 essa 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 entendi porque estou recebendo este erro. Alguém poderia me ajudar nisso?

    
por Magnus 07.08.2017 / 14:21

1 resposta

3

Esse problema é 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 man:

--topology mode

...

subnet -- Use a subnet rather than a point-to-point topology by configuring the tun interface with a local IP address and subnet mask, similar to the topology used in --dev tap and ethernet bridging mode. This mode allocates a single IP address per connecting client and works on Windows as well. Only available when server and clients are OpenVPN 2.1 or higher, or OpenVPN 2.0.x which has been manually patched with the --topology directive code. When used on Windows, requires version 8.2 or higher of the TAP-Win32 driver. When used on *nix, requires that the tun driver supports an ifconfig(8) command which sets a subnet instead of a remote endpoint IP address.

This option exists in OpenVPN 2.1 or higher.

Note: Using --topology subnet changes the interpretation of the arguments of --ifconfig to mean "address netmask", no longer "local remote".

--ifconfig l rn

Set TUN/TAP adapter parameters. l is the IP address of the local VPN endpoint. For TUN devices in point-to-point mode, rn is the IP address of the remote VPN endpoint. For TAP devices, or TUN devices used with --topology subnet, rn is the subnet mask of the virtual network segment which is being created or connected to. For TUN devices, which facilitate virtual point-to-point IP connections (when used in --topology net30 or p2p mode), the proper usage of --ifconfig is to use two private IP addresses which are not a member of any existing subnet which is in use. The IP addresses may be consecutive and should have their order reversed on the remote peer. After the VPN is established, by pinging rn, you will be pinging across the VPN.

For TAP devices, which provide the....

Dentro do código do servidor, você define sua topologia como subnet e, em seguida, envia-a para o cliente usando a instrução server .

De acordo com a documentação acima, em vez de pressionar o ifconfig usando o endereço "local", "remoto", você precisa adicionar o seguinte ao "/ 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.

    
por 08.08.2017 / 18:28