Como conectar uma caixa linux a um gateway azure point-to-site?

4

Minha tentativa inicial foi tentar usar o compartilhamento de conexão com a Internet e dedicar uma máquina a front-end na caixa Linux (apenas encaminhar muitas portas), mas o compartilhamento de conexão parece não funcionar quando conectado a uma VPN azul. tentei o Windows 10 e win2008R2 até agora).

Também não consigo encontrar nenhum software de VPN para Linux que suporte os protocolos necessários.

    
por Kurt Hutchison 27.03.2017 / 23:53

3 respostas

5

É possível conectar o Linux ao P2P do Azure usando strongSwan (IKEv2). A Microsoft simplesmente não se incomoda com essa questão e insiste em levar o curso "P2S para Linux não é suportado" (é isso que eles me responderam em tíquetes de suporte). Aqui está como você pode configurar o IKEv2 com base na autenticação dos certificados.

Instalar dependências

Aqui estão os pacotes necessários para o Ubuntu:

apt-get install strongswan-ikev2 strongswan-plugin-eap-tls
# in Ubuntu 16.04 install libstrongswan-standard-plugins for p12 keypair container support
apt-get install libstrongswan-standard-plugins

Se você instalar o pacote libstrongswan-extra-plugins no Ubuntu 16.04, ele quebrará o strongSwan. Este pacote contém af-alg , ctr e gcrypt plugins e eles entram em conflito com o openssl plugin. Nesse caso, você deve remover o pacote libstrongswan-standard-plugins contendo openssl plugin ou desativar openssl plugin:

sudo sed -i 's/\sload =.*/ load = no/g' /etc/strongswan.d/charon/openssl.conf

ou af-alg , ctr e gcrypt plugins:

sudo sed -i 's/\sload =.*/ load = no/g' /etc/strongswan.d/charon/{af-alg,ctr,gcrypt}.conf

Gerar chaves e certificados

Você precisa gerar sua própria CA primeiro, depois é necessário gerar o certificado do usuário com a extensão X509v3 Subject Alternative Name (SAN) ( strongSwan FAQ ), que deve corresponder ao nome comum do requerente do certificado (CN). Ou seja O certificado com o assunto CN=client deve conter DNS:client SAN. Isso permitirá que você especifique a identidade EAP sem o prefixo CN= em strongSwan. Por padrão, o strongSwan transfere o assunto do certificado completo como identidade EAP, mas o gateway da VPN do Azure não oferece suporte a isso. Você pode ler mais sobre a história do CN vs SAN: link .

# Generate CA
ipsec pki --gen --outform pem > caKey.pem
ipsec pki --self --in caKey.pem --dn "CN=VPN CA" --ca --outform pem > caCert.pem
# Print CA certificate in base64 format, supported by Azure portal. Will be used later in this document.
openssl x509 -in caCert.pem -outform der | base64 -w0 ; echo

# Generate user's certificate and put it into p12 bundle.
export PASSWORD="password"
export USERNAME="client"
ipsec pki --gen --outform pem > "${USERNAME}Key.pem"
ipsec pki --pub --in "${USERNAME}Key.pem" | ipsec pki --issue --cacert caCert.pem --cakey caKey.pem --dn "CN=${USERNAME}" --san "${USERNAME}" --flag clientAuth --outform pem > "${USERNAME}Cert.pem"
# Generate p12 bundle
openssl pkcs12 -in "${USERNAME}Cert.pem" -inkey "${USERNAME}Key.pem" -certfile caCert.pem -export -out "${USERNAME}.p12" -password "pass:${PASSWORD}"

Em seguida, abra o portal do Azure, localize seu "Gateway de rede virtual" e sua página Configuração ponto a ponto na seção Certificados raiz cole a CA codificada em base64 impressa acima.

Configurar o cliente

Localize o botão Download do cliente VPN na página de configuração ponto-a-ponto do gateway e descompacte a VpnServerRoot.cer CA do arquivo ZIP baixado:

sudo unzip -j downloaded.zip Generic/VpnServerRoot.cer -d /etc/ipsec.d/cacerts

Você pode verificar usando o comando abaixo:

openssl x509 -inform der -in /etc/ipsec.d/cacerts/VpnServerRoot.cer -text -noout

Em seguida, extraia o DNS do servidor VPN:

$ unzip -p downloaded.zip Generic/VpnSettings.xml | grep VpnServer
  <VpnServer>azuregateway-00112233-4455-6677-8899-aabbccddeeff-aabbccddeeff.cloudapp.net</VpnServer>

Use o valor VpnServer para o valor right e para o valor rightid prefixado com % em ipsec.conf abaixo.

Copie o pacote p12 do usuário no diretório correspondente:

sudo cp client.p12 /etc/ipsec.d/private/

Use a seguinte configuração /etc/ipsec.conf :

config setup

conn azure
  keyexchange=ikev2
  type=tunnel
  leftfirewall=yes
  left=%any
  leftauth=eap-tls
  leftid=%client # use the DNS alternative name prefixed with the %
  right=azuregateway-00112233-4455-6677-8899-aabbccddeeff-aabbccddeeff.cloudapp.net # Azure VPN gateway address
  rightid=%azuregateway-00112233-4455-6677-8899-aabbccddeeff-aabbccddeeff.cloudapp.net # Azure VPN gateway address, prefixed with %
  rightsubnet=0.0.0.0/0
  leftsourceip=%config
  auto=add

e /etc/ipsec.secrets content:

: P12 client.p12 'password' # key filename inside /etc/ipsec.d/private directory

Em seguida, reinicie o ipsec para reler a configuração e iniciar o túnel:

sudo ipsec restart
sudo ipsec up azure

Problema MTU / MSS

O

cliente VPN IPsec pode ter problemas de conectividade devido aos altos valores de MTU / MSS e Fragmentação IKE . Para resolver esse problema, você deve definir explicitamente o valor 1350 para MTU / MSS iside a configuração kernel-netlink do charon strongSwan (essa configuração funciona apenas na versão strongSwan > = 5.2.1). Defina os valores mtu e mss dentro do arquivo de configuração /etc/strongswan.d/charon/kernel-netlink.conf :

mss = 1350
mtu = 1350

e reinicie o túnel:

sudo ipsec restart
sudo ipsec up azure
    
por 19.02.2018 / 00:57
0

connection sharing doesn't seem to work when connected to an azure VPN (I have tried windows 10, and win2008R2 so far).

Não podemos usar o VPN do Azure P2S dessa maneira.

O ICS faz o roteamento de pacotes TCP / IP de uma pequena LAN para a Internet. O ICS mapeia endereços IP individuais de computadores locais para números de porta não usados na pilha TCP / IP. Devido à natureza do NAT , os endereços IP no computador local não estão visíveis na Internet. Todos os pacotes que saem ou entram na LAN são enviados de ou para o endereço IP do adaptador externo no computador host do ICS.

VPN do Azure P2S, usada para criar uma conexão segura com a rede virtual do Azure a partir de um computador cliente individual. Depois de conectar a VPN do Azure, o computador host do ICS receberá o endereço IP dos endereços no pool de endereços de cliente VPN ponto a ponto que você especificou na sua configuração. Os resultados devem ser algo semelhantes a isto:

 PPP adapter VNet1:
     Connection-specific DNS Suffix .:
     Description.....................: VNet1
     Physical Address................:
     DHCP Enabled....................: No
     Autoconfiguration Enabled.......: Yes
     IPv4 Address....................: 172.16.201.3(Preferred)
     Subnet Mask.....................: 255.255.255.255
     Default Gateway.................:
     NetBIOS over Tcpip..............: Enabled

O computador host do ICS se comunica com o Azure por meio do endereço IP do pool de endereços de cliente VPN, mas o computador host ICS não pode usar esse IP para compartilhar a rede, por isso não podemos usar o Azure P2S VPN desta forma.

Se você quiser que todos os computadores se conectem ao Azure, podemos conectá-los com VPN P2S, criar conexões VPN neles.

I am also unable to find any VPN software for Linux that supports the necessary protocols.

Por enquanto, o Suporte VPN do Azure P2S é limitado somente ao sistema operacional Windows .

Se você deseja se conectar à Rede Virtual do Azure por meio de um Linux, podemos usar algum software baseado em Linux, aqui um blog sobre como conectar a Rede Virtual do Azure via linux, consulte it .

    
por 28.03.2017 / 04:48
0

Sim, o OpenVPN fez o truque. Como os pacotes externos não podem atravessar a rede do Azure, não consegui usar o OpenVPN como um gateway no lado do Azure no sentido tradicional. O que eu fiz foi instalar um cliente OpenVPN em cada VM e usar o recurso cliente-cliente do OpenVPN para que todos pudessem ver um ao outro. Embora não seja ideal, funciona para a nossa rede de teste enquanto aguardamos uma conexão IPsec ExpressRoute para o Azure. A melhor parte é que requer apenas a porta 443 sobre o TCP, que atravessa tudo sem problemas.

    
por 08.04.2017 / 03:23