Eu tenho uma conexão ipsec (strongswan) para funcionar, que por si só funciona bem, no entanto, o tráfego de contêineres não parece passar pelo túnel ipsec. Isso não é esperado do ponto de vista do usuário final, pois o ipsec não é um túnel dividido.
#ipsec.conf
config setup
conn %default
ikelifetime=28800s
keylife=12h
rekeymargin=3m
keyingtries=1
keyexchange=ikev1
conn worldstream
ike = aes256-sha1-modp1024
esp = aes256-sha1!
xauth=client
[email protected]
leftauth=psk
leftauth2=xauth
leftsourceip=%config
right=office.acme.com
rightid=%any
rightauth=psk
auto=add
rightsubnetwithin=0.0.0.0/0
Também estou usando o plugin bypass-lan do strongswan.
Além da capacidade CAP_NET_ADMIN observada em outras respostas , eu precisava adicionar uma regra iptables para SNAT o tráfego da rede Docker para a rede VPN desejada.
Descobri que nesta resposta a uma pergunta semelhante no ServerFault:
Ele deve funcionar fornecendo ao contêiner o recurso CAP_NET_ADMIN (consulte Executando o strongSwan em uma plataforma de nuvem ).
Isso significa usar o
--cap-add=NET_ADMIN
sinalizador com docker oucap_add: - NET_ADMIN
com docker-compose.Isso pressupõe que o strongswan também tenha essa capacidade (parece tê-la por padrão).