IPSec를 통한 라우팅(docker) 컨테이너 트래픽

IPSec를 통한 라우팅(docker) 컨테이너 트래픽

ipsec(strongswan) 연결이 작동하고 있으며 자체적으로는 잘 작동하지만 컨테이너의 트래픽이 ipsec 터널을 통과하지 않는 것 같습니다. 최종 사용자 관점에서 볼 때 이는 ipsec이 분할 터널링이 아니기 때문에 바람직하지 않습니다.

#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

나도 사용하고 있어요우회 LANStrongswan의 플러그인.

답변1

CAP_NET_ADMIN 함수 외에다른 답변Docker 네트워크에서 원하는 VPN 네트워크로의 SNAT 트래픽에 iptables 규칙을 추가해야 합니다.

iptables -j SNAT -t nat -I POSTROUTING 1 -o ${OUT_INTERFACE} -d ${VPN_NETWORK} -s ${DOCKER_NETWORK} --to-source ${VPN_HOST_IP}

내가 찾은 곳이 답변ServerFault의 비슷한 질문:

답변2

컨테이너에 CAP_NET_ADMIN 기능을 제공하면 작동합니다(참조:클라우드 플랫폼에서 StrongSwan 실행).

이는 docker 또는 docker-compose --cap-add=NET_ADMIN와 함께 플래그를 사용하는 것을 의미합니다.cap_add: - NET_ADMIN

이는 Strongswan에도 이 기능이 있다고 가정합니다(기본적으로는 있는 것으로 보입니다).

관련 정보