Configurei uma configuração de host para host na qual quero que apenas o IP do servidor fique exposto para que qualquer pessoa conectada à VPN possa se comunicar com os serviços naquele servidor.
connections {
rw {
pools = rw_pool
send_cert = always
unique = no
fragmentation=yes
local {
auth = pubkey
certs = [CERT].pem
id = [ID]
}
remote {
auth = eap-mschapv2
eap_id = %any
}
children {
rw {
local_ts = [WAN IP OF SERVER]
esp_proposals = chacha20poly1305-sha512, aes256gcm16-ecp384,aes256-sha256,aes256-sha1,3des-sha1
}
}
send_certreq = no
}
}
A conexão funciona e as solicitações estão de fato vindo de um intervalo de IP selecionado pela VPN. No entanto, como estou mirando no IP externo, isso ainda não rotearia o tráfego por um canal não seguro após a saída do IP?
Configuração do cliente:
connections {
home {
version=2
remote_addrs = [SERVER ADDR]
vips = 0.0.0.0
local {
auth = eap-mschapv2
eap_id = [ID]
}
remote {
auth = pubkey
id = [SERVER ID]
}
children {
home {
remote_ts = [WAN IP OF SERVER]
local_ts = dynamic
#remote_ts = 10.10.10.0/24
start_action = start
}
}
}
}
Uma segunda pergunta menor: como você faria uma configuração de host para site, onde meu servidor é uma entidade única em sua rede, mas o outro lado é um roteador fortigate com uma rede maior por trás dele, essa configuração funcionaria?
Agradecemos antecipadamente pelo esforço!
EDIT: Problema de IP resolvido usando ip para criar uma interface tun0 e usando isso como local_ts
Não, e essa é a principal diferença entre IPsec e outras implementações de VPN. O IPsec foi originalmente projetado especificamente para ser um canal seguro de host para host, com VPNs adicionadas posteriormente (o suporte a VPN que agora faz parte do IKEv2 costumava ser uma extensão proprietária da Cisco).
Por isso, implementações tradicionais de IPsec como o strongSwan são baseadas em políticas e não em rotas 1 – o que significa que não há uma interface de túnel separada pela qual os pacotes precisam ser roteados para se tornarem seguros; em vez disso, eles são interceptados e transformados à medida que saem da interface de rede regular .
(Na verdade, há até mesmo um modo SA filho –
transport
mode – que é destinado exclusivamente para proteger o tráfego host-to-host para o próprio ponto de extremidade IPsec. Ele raramente é usado, pois o modo túnel pode fazer o mesmo de qualquer maneira, embora o modo de transporte tenha menor sobrecarga de MTU.)Portanto, mesmo que você entre em contato com o endereço externo do servidor VPN, que normalmente teria uma rota de "desvio" em sistemas baseados em rotas, ele ainda estará sujeito à camada de transformação IPsec e será criptografado (desde que esteja incluído nos
local/remote_ts
seletores de tráfego negociados da SA filha).Depois de estabelecer o SA, execute
swanctl -l
para ver qual tráfego ele afeta ou, se desejar, useip xfrm
para ver diretamente as políticas de "transformação" do Linux que são aplicadas logo antes dos pacotes saírem da interface.Em caso de dúvida, use iptables
policy
match ou nftablesmeta ipsec exists
para evitar que pacotes não seguros saiam ou entrem no seu servidor.1 (A arquitetura baseada em políticas do strongSwan torna o uso do "IP virtual" da VPN um tanto confuso, a ponto de eles cederem e adicionarem algum suporte ao modelo baseado em rotas.)
Deve ser suficiente expandir os seletores de tráfego no lado do Fortigate (seu equivalente a
local_ts
) e, consequentemente, o do seu servidorremote_ts
, para cobrir a sub-rede adicional.