Como definir um IP estático (lado do cliente) no OpenVPN?

Como definir um IP estático (lado do cliente) no OpenVPN?

Estou configurando uma rede VPN com vários dispositivos pequenos (executando OpenWRT). No meu caso de uso, todos os dispositivos são identificados por um número e eu gostaria que seus endereços IP correspondessem ao seu ID (por exemplo: o dispositivo número 6 terá um IP em XXX6).

Estou ciente client-config-dir, ifconfig-pushmas não posso usá-los porque todos os meus dispositivos usam o mesmo certificado ( duplicate-cnestá ativado). Este é um requisito, pois gerar um certificado para cada dispositivo será muito restritivo (além disso, não queremos alterar a configuração do servidor VPN se adicionarmos um dispositivo ao sistema)

É possível definir o endereço IP no arquivo de configuração do cliente? Não encontrei nada na documentação sobre esse assunto específico... E tudo que tentei não deu certo.

Basicamente, o que tenho em mente seria o seguinte:

  • Cliente Conecte-se ao servidor VPN e peça um endereço específico ("me dê o ip: 172.16.0.22")
  • Se o endereço já estiver em uso, o handshake falhará. Se for gratuito, o cliente recebe o endereço que solicitou antes

Responder1

Você deve conseguir fazer isso com a ifconfig-pool-persistopção de configuração. Você pode pré-configurar o arquivo e definir seconds = 0para que o OpenVPN leia apenas o arquivo.

Nós o usamos para garantir que o mesmo IP seja atribuído ao mesmo usuário quando conectado via VPN para fins de auditoria.

Depágina de manual:

--ifconfig-pool-persist file [segundos] Persiste/não persiste os dados do ifconfig-pool no arquivo, em intervalos de segundos (padrão = 600), bem como na inicialização e encerramento do programa. O objetivo desta opção é fornecer uma associação de longo prazo entre clientes (denotados por seu nome comum) e o endereço IP virtual atribuído a eles no pool ifconfig. Manter uma associação de longo prazo é bom para os clientes porque permite que eles usem efetivamente a opção --persist-tun.

file é um arquivo ASCII delimitado por vírgula, formatado como ,.

Se segundos = 0, o arquivo será tratado como somente leitura. Isto é útil se você quiser tratar o arquivo como um arquivo de configuração.

Observe que as entradas neste arquivo são tratadas pelo OpenVPN apenas como sugestões, com base em associações anteriores entre um nome comum e um endereço IP. Eles não garantem que o nome comum fornecido sempre receberá o endereço IP fornecido. Se você quiser atribuição garantida, use --ifconfig-push

Responder2

Suponha que estamos configurando uma VPN corporativa e gostaríamos de estabelecer políticas de acesso separadas para 3 classes diferentes de usuários:

System administrators -- full access to all machines on the network
Employees -- access only to Samba/email server
Contractors -- access to a special server only

A abordagem básica que adotaremos é (a) segregar cada classe de usuário em seu próprio intervalo de endereços IP virtuais e (b) controlar o acesso às máquinas configurando regras de firewall que desativam o endereço IP virtual do cliente.

No nosso exemplo, suponha que temos um número variável de funcionários, mas apenas um administrador de sistema e dois prestadores de serviços. Nossa abordagem de alocação de IP será colocar todos os funcionários em um pool de endereços IP e, em seguida, alocar endereços IP fixos para o administrador do sistema e os prestadores de serviços.

Observe que um dos pré-requisitos deste exemplo é que você tenha um firewall de software em execução na máquina servidor OpenVPN, o que lhe dá a capacidade de definir regras de firewall específicas. Para nosso exemplo, assumiremos que o firewall é Linux iptables.

Primeiro, vamos criar um mapa de endereços IP virtuais de acordo com a classe do usuário:

Class   Virtual IP Range    Allowed LAN Access  Common Names  

Employees   10.8.0.0/24     Samba/email server at 10.66.4.4     [variable]

Sys Admins  10.8.1.0/24     Entire 10.66.4.0/24 subnet  sysadmin1

Contractors 10.8.2.0/24     Contractor server at 10.66.4.12     contractor1, contractor2

A seguir, vamos traduzir este mapa em uma configuração de servidor OpenVPN. Primeiro de tudo, certifique-se de ter seguido as etapas acima para disponibilizar a sub-rede 10.66.4.0/24 para todos os clientes (enquanto configuraremos o roteamento para permitir o acesso do cliente a toda a sub-rede 10.66.4.0/24, iremos então impor restrições de acesso usando regras de firewall para implementar a tabela de políticas acima).

Primeiro, defina um número de unidade estático para nossa interface tun, para que possamos consultá-lo posteriormente em nossas regras de firewall:

dev tun0

No arquivo de configuração do servidor, defina o pool de endereços IP do funcionário:

server 10.8.0.0 255.255.255.0

Adicione rotas para os intervalos de IP do administrador do sistema e do contratante:

route 10.8.1.0 255.255.255.0
route 10.8.2.0 255.255.255.0

Como atribuiremos endereços IP fixos para administradores de sistema e prestadores de serviços específicos, usaremos um diretório de configuração do cliente ccd:

client-config-dir ccd

Agora coloque arquivos de configuração especiais no ccdsubdiretório para definir o endereço IP fixo para cada cliente VPN não funcionário, como segue.

ccd/sysadmin1arquivo:

    ifconfig-push 10.8.1.1 10.8.1.2

ccd/contractor1arquivo:

    ifconfig-push 10.8.2.1 10.8.2.2

ccd/contractor2arquivo:

    ifconfig-push 10.8.2.5 10.8.2.6

Cada par de endereços ifconfig-push representa os terminais IP do cliente virtual e do servidor. Eles devem ser obtidos de sub-redes /30 sucessivas para serem compatíveis com clientes Windows e o driver TAP-Windows. Especificamente, o último octeto no endereço IP de cada par de terminais deve ser obtido deste conjunto:

[  1,  2] [  5,  6] [  9, 10] [ 13, 14] [ 17, 18]
[ 21, 22] [ 25, 26] [ 29, 30] [ 33, 34] [ 37, 38]
[ 41, 42] [ 45, 46] [ 49, 50] [ 53, 54] [ 57, 58]
[ 61, 62] [ 65, 66] [ 69, 70] [ 73, 74] [ 77, 78]
[ 81, 82] [ 85, 86] [ 89, 90] [ 93, 94] [ 97, 98]
[101,102] [105,106] [109,110] [113,114] [117,118]
[121,122] [125,126] [129,130] [133,134] [137,138]
[141,142] [145,146] [149,150] [153,154] [157,158]
[161,162] [165,166] [169,170] [173,174] [177,178]
[181,182] [185,186] [189,190] [193,194] [197,198]
[201,202] [205,206] [209,210] [213,214] [217,218]
[221,222] [225,226] [229,230] [233,234] [237,238]
[241,242] [245,246] [249,250] [253,254]

Isso conclui a configuração do OpenVPN. A etapa final é adicionar regras de firewall para finalizar a política de acesso.

Fonte:https://openvpn.net/index.php/open-source/documentation/howto.html#policy

Responder3

Tive alguns problemas ao configurar como @jas_raj. Agora estou fazendo o seguinte:

1) Em /etc/openvpn crie uma nova pasta. Por exemplo "diretório"

2) server.conf adicionar linha "diretório-config-cliente/"

3) Dentro de "dir", você precisa criar um novo arquivo com o **mesmo nome que você escreveu no seu certificado** e digitar:

MÁSCARA IP ifconfig-push

Por exemplo: ifconfig-push 10.0.0.10 255.0.0.0

informação relacionada