У меня есть контейнер, который я хочу запустить через VPN, но я не хочу влиять на трафик хоста. Простое размещение двух контейнеров в одной сети не кажется уловкой.

Например

$ docker run --rm --name ovpn -v openvpn:/etc/vpn/config --network tunnel --cap-add NET_ADMIN --device /dev/net/tun openvpn-client

(openvpn-client - это просто небольшой контейнер, который я собрал, который вызывает openvpn --config /etc/vpn/config/config.ovpn)

Тем не мение,

$ docker run --network tunnel --rm byrnedo/alpine-curl checkip.amazonaws.com/

дает мне IP-адрес хоста контейнера, а не хоста VPN.

Большая часть того, что я рассмотрел, включает перенаправление всего интерфейса докера через tun0 с использованием iptables, что я не хочу делать.

Я также попытался дать контейнеру curl CAP_NET_ADMIN и запустить route add default gw ovpn eth0 , но, похоже, это просто предотвращает выход трафика из контейнера. Я думаю, чтобы сделать что-то вроде этого, мне, возможно, придется сделать некоторые хитрости iptables, но я не совсем уверен.

Есть ли хороший способ сделать то, что я хочу?

0