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にもこの機能があると仮定します(基本的にはあるようです)。

関連情報